</TR>
</xsl:template>
<xsl:template match="MASS">
<xsl:value-of select="format-number(., '#.###')"/>
<xsl:text> </xsl:text>
<xsl:value-of select="@UNITS"/>
</xsl:template>
<xsl:template match="RADIUS">
<xsl:value-of select="format-number(., '#.###')"/>
<xsl:text> </xsl:text>
<xsl:value-of select="@UNITS"/>
</xsl:template>
<xsl:template match="DAY">
<xsl:value-of select="format-number(., '###.#')"/>
<xsl:text> </xsl:text>
<xsl:value-of select="@UNITS"/>
</xsl:template>
</xsl:stylesheet>
ΠΠΎΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π²ΡΠ²Π΅Π΄Π΅Π½Ρ ΠΎΡΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠΈΡΠ»Π°:
<HTML>
<HEAD>
<TITLE>
The Formatted Planets Table
</TITLE>
</HEAD>
<BODY>
<H1>
The Formatted Planets Table
</H1>
<TABLE BORDER="2">
<TR>
<TD>Name</TD>
<TD>Mass</TD>
<TD>Radius</TD>
<TD>Day</TD>
</TR>
<TR>
<TD>Mercury</TD>
<TD>0.055 (Earth = 1)</TD>
<TD>1.516 miles</TD>
<TD>58.65 days</TD>
</TR>
<TR>
<TD>Venus</TD>
<TD>0.815 (Earth = 1)</TD>
<TD>3.716 miles</TD>
<TD>116.75 days</TD>
</TR>
<TR>
<TD>Earth</TD>
<TD>1 (Earth = 1)</TD>
<TD>2.107 miles</TD>
<TD>1 days</TD>
</TR>
</TABLE>
</BODY>
</HTML>
ΠΡΠΎΡ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠΈΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° ΡΠΈΡ. 8.1. (MSXML3 ΠΈ Saxon ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°ΡΡ Π»ΠΈΠ΄ΠΈΡΡΡΡΠΈΠ΅ Π½ΡΠ»ΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ 0.055 Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊΠ°ΠΊ .055 ΠΈ Ρ.Π΄.)
Π ΠΈΡ. 8.1. Π€ΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΡΠ΅Π» ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ XSLT
Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΎΡΠΌΠ°ΡΠΈΡΡΡΡΠΈΡ ΡΡΡΠΎΠΊ. ΠΠ°ΠΌΠ΅ΡΡΡΠ΅, ΡΡΠΎ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠΎΡΠΊΠΈ Ρ Π·Π°ΠΏΡΡΠΎΠΉ (;) ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ΄Π΅Π»ΡΡΡ ΠΎΠ±ΡΠ°Π·ΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΡ ΡΠΈΡΠ΅Π».
Π§ΠΈΡΠ»ΠΎ Π€ΠΎΡΠΌΠ°ΡΠΈΡΡΡΡΠ°Ρ ΡΡΡΠΎΠΊΠ° Π Π΅Π·ΡΠ»ΡΡΠ°Ρ 4567 #,### 4,567 4567.8 ####.# 4567.8 4567.8 #,##0.00 4,567.80 456.789 #,##0.00 456.79 4567890 #,##0.00 4,567,890.00 4567 ###0.0### 4567.0 .00045 ##0.0### 0.0005 .45 #00% 45% -4.56 #.00;(#.00) (4.56) -45 #,##0.00 -45function-available()
ΠΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ XSLT 1.0 function-available ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ:
boolean function-available(function-name)
Π€ΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΈΠΌΡ ΠΈΡΠΊΠΎΠΌΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ, Π΅ΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ Π΄ΠΎΡΡΡΠΏΠ½Π°, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΡΡΠΈΠ½Ρ, Π΅ΡΠ»ΠΈ Π½Π΅Ρ β Π»ΠΎΠΆΡ.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΌΡ ΡΠΆΠ΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π»ΠΈ Π² Π³Π»Π°Π²Π΅ 5. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Ρ Ρ ΠΎΡΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΠ΄ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ starpowder:calculate, ΠΈ Π΅ΡΠ»ΠΈ ΠΎΠ½Π° ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ, Π²ΡΠ²Π΅ΡΡΠΈ Π² ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠΈΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΡΠ΅ΠΊΡΡ Β«Sorry, can't do math today.Β» (ΠΠ·Π²ΠΈΠ½ΠΈΡΠ΅, ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ.). ΠΠΎΠΆΠ½ΠΎ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅ΠΊΡΠ°ΡΠΈΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΈ Π²ΡΠ²Π΅ΡΡΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° <xsl:message>:
<xsl:choose xmlns:starpowder="http://www.starpowder.com">
<xsl:when test="function-available('starpowder:calculate')">
<xsl:value-of select="starpowder:calculate('2+2')"/>
</xsl:when>
<xsl:otherwise>
<xsl:text>Sorry, can't do math today.</xsl:text>
</xsl:otherwise>
</xsl:choose>
generate-id()
Π€ΡΠ½ΠΊΡΠΈΡ generate-id Π΄Π°Π΅Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ XSLT ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ ΡΠ·Π»Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ (ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΡΡΡΠΎΠΊΠ°). Π€ΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
string generate-id(node)
Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π½Π°Π±ΠΎΡ ΡΠ·Π»ΠΎΠ², ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ·Π΅Π», ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π½ΡΠΆΠ΅Π½ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ (Π²ΡΠ΅ ΡΠ·Π»Ρ ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΈΠ³Π½ΠΎΡΠΈΡΡΡΡΡΡ); ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ·Π»Π°. ΠΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ½ΠΎΠ²Π° ΡΡΠΎΡ ΠΆΠ΅ ΡΠ·Π΅Π», ΠΎΠ½Π° Π²Π΅ΡΠ½Π΅Ρ ΡΠΎΡ ΠΆΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ. ΠΠ°ΠΌΠ΅ΡΡΡΠ΅, ΡΡΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΡΠ°Π·Π»ΠΈΡΠ°ΡΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° XSLT.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π²Π·ΡΡ ΠΈΠ· Π³Π»Π°Π²Ρ 6, Π½ΠΎ ΡΠ΅ΠΉΡΠ°Ρ Ρ ΡΠΎΠ±ΠΈΡΠ°ΡΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² planets.html ΠΎΠ³Π»Π°Π²Π»Π΅Π½ΠΈΠ΅, ΡΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ΅ ΠΈΠ· Π³ΠΈΠΏΠ΅ΡΡΡΡΠ»ΠΎΠΊ. ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ³Π»Π°Π²Π»Π΅Π½ΠΈΡ Ρ ΠΏΡΠΎΡ ΠΎΠΆΡ Π² ΡΠΈΠΊΠ»Π΅ ΠΏΠΎ Π²ΡΠ΅ΠΌ ΠΏΠ»Π°Π½Π΅ΡΠ°ΠΌ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° <xsl:for-each>. ΠΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ°Π³Π΅ ΡΠΈΠΊΠ»Π° Π΄Π»Ρ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΏΠ»Π°Π½Π΅ΡΡ Ρ ΡΠΎΠ·Π΄Π°Ρ Π³ΠΈΠΏΠ΅ΡΡΡΡΠ»ΠΊΡ ΠΈ ΡΠΎΠ·Π΄Π°Ρ Π°ΡΡΠΈΠ±ΡΡ HREF ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ, ΡΠ°Π²Π½ΡΠΌ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠΌΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ, ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠ°Π±Π»ΠΎΠ½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π°ΡΡΠΈΠ±ΡΡΠ°:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/PLANETS">
<HTML>
<HEAD>
<TITLE>
The Planets Table
</TITLE>
</HEAD>
<BODY>
<H1>
The Planets Table
</H1>
<xsl:for-each select="PLANET">
<H2><A HREF="#{generate-id()}">
<xsl:value-of select="NAME"/>
</A></H2>
<P/>
</xsl:for-each>
.
.
.
ΠΡΠΎΡ ΠΊΠΎΠ΄ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ»Π°Π½Π΅ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΈ ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΡΠΆΠ½ΡΠ΅ Π³ΠΈΠΏΠ΅ΡΡΡΡΠ»ΠΊΠΈ. Π― ΠΌΠΎΠ³Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π·Π°ΠΊΠ»Π°Π΄ΠΊΠΈ Π³ΠΈΠΏΠ΅ΡΡΡΡΠ»ΠΊΠΈ Π² HTML-ΡΠ°Π±Π»ΠΈΡΠ΅ Π΄Π°Π½Π½ΡΡ ΠΏΠ»Π°Π½Π΅Ρ, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ² ΠΏΠΎ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ Π°ΡΡΠΈΠ±ΡΡ <NAME> Π·Π°ΠΊΠ»Π°Π΄ΠΊΠΈ Π² ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° <PLANET> ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΎΠ½ ΡΡΠ°Π» Π³ΠΈΠΏΠ΅ΡΡΡΡΠ»ΠΊΠΎΠΉ-Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/PLANETS">
<HTML>
.
.
.
</HTML>
</xsl:template>
<xsl:template match="PLANET">
<TR>
<TD><A NAME="{generate-id(.)}">
<xsl:value-of select="NAME"/>
</A></TD>
<TD><xsl:apply-templates select="MASS"/></TD>
<TD><xsl:apply-templates select="RADIUS"/></TD>
<TD><xsl:apply-templates select="DAY"/></TD>
</TR>
</xsl:template>
<xsl:template match="MASS">
<xsl:value-of select="."/>
<xsl:text> </xsl:text>
<xsl:value-of select="@UNITS"/>
</xsl:template>
.
.
.
<xsl:template match="DAY">
<xsl:value-of select="."/>
<xsl:text> </xsl:text>
<xsl:value-of select="@UNITS"/>
</xsl:template>
</xsl:stylesheet>
ΠΠΎΡ ΠΈ Π²ΡΠ΅; ΡΠ΅ΠΉΡΠ°Ρ Ρ ΡΠΎΠ·Π΄Π°Π» Π³ΠΈΠΏΠ΅ΡΡΡΡΠ»ΠΊΠΈ Ρ Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ HREF, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ°Π²Π½ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° <PLANET>; ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΆΠ΅ ΡΡΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° Ρ ΡΠ΄Π΅Π»Π°Π» ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ <PLANET> Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ Π³ΠΈΠΏΠ΅ΡΡΡΡΠ»ΠΊΠΈ.
ΠΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ΅Π»ΠΊΠ°Π΅Ρ Π½Π° Π³ΠΈΠΏΠ΅ΡΡΡΡΠ»ΠΊΡ Π² ΠΎΠ³Π»Π°Π²Π»Π΅Π½ΠΈΠΈ, Π±ΡΠ°ΡΠ·Π΅Ρ ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ Π΄ΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ Π·Π°ΠΏΠΈΡΠΈ ΠΏΠ»Π°Π½Π΅ΡΡ Π² HTML-ΡΠ°Π±Π»ΠΈΡΠ΅. ΠΠΎΡ ΠΊΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠΈΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° Xalan:
<HTML>
<HEAD>
<TITLE>
The Planets Table
</TITLE>
</HEAD>
<BODY>
<H1>
The Planets Table
</H1>
<H2>
<A href="#N5">Mercury</A>
</H2>
<P></P>
<H2>
<A href="#N20">Venus</A>
</H2>
<P></P>
<H2>
<A href="#N3B">Earth</A>
</H2>
<P></P>
<TABLE BORDER="2">
<TR>
<TD>Name</TD>
<TD>Mass</TD>
<TD>Radius</TD>
<TD>Day</TD>
</TR>
<TR>
<TD><A NAME="N5">Mercury</A></TD>
<TD>.0553 (Earth = 1)</TD>
<TD>1516 miles</TD>
<TD>58.65 days</TD>
</TR>
<TR>
<TD><A NAME="N20">Venus</A></TD>