<xsl:template match="PLANET">
<DATA>
<NAME>
<xsl:value-of select="descendant::NAME"/>
</NAME>
<MASS>
<xsl:value-of select="descendant::MASS"/>
</MASS>
<DAY>
<xsl:value-of select="descendant::DAY"/>
</DAY>
</DATA>
</xsl:template>
Π ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΠΎΡΠΈ. Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΎΡΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ descendant, Π° ΠΈΠΌΠ΅Π½Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² NAME, MASS ΠΈ DAY β ΡΡΠΎ ΡΡΠ»ΠΎΠ²ΠΈΡ ΡΠ·Π»ΠΎΠ².
Π¨Π°Π³ΠΈ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ XPath, ΡΠ°ΡΡΡ 2: ΡΡΠ»ΠΎΠ²ΠΈΡ ΡΠ·Π»ΠΎΠ²
ΠΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΎΠ±ΡΠ°Π·ΡΠΎΠ² Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΡΠ»ΠΎΠ²ΠΈΠΉ ΡΠ·Π»ΠΎΠ² (node test) ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠΌΠ΅Π½Π° ΡΠ·Π»ΠΎΠ² ΠΈΠ»ΠΈ ΡΠΈΠΌΠ²ΠΎΠ» ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ * Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠ·Π»Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ child::*/child::NAME Π²ΡΠ±ΠΈΡΠ°Π΅Ρ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ <NAME>, ΡΠ²Π»ΡΡΡΠΈΠ΅ΡΡ ΠΏΡΠ°Π²Π½ΡΠΊΠ°ΠΌΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΠ³ΠΎ ΡΠ·Π»Π°. Π XPath ΠΊΡΠΎΠΌΠ΅ ΠΈΠΌΠ΅Π½ ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π° ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ, ΠΊΠ°ΠΊ ΠΈ Π² ΠΎΠ±ΡΠ°Π·ΡΠ°Ρ Π²ΡΠ±ΠΎΡΠ°, ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ ΡΠ·Π»ΠΎΠ²:
β’ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΡΠ·Π»Π° comment() Π²ΡΠ±ΠΈΡΠ°Π΅Ρ ΡΠ·Π»Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ;
β’ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΡΠ·Π»Π° node() Π²ΡΠ±ΠΈΡΠ°Π΅Ρ ΡΠ·Π΅Π» Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°;
β’ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΡΠ·Π»Π° processing-instruction() Π²ΡΠ±ΠΈΡΠ°Π΅Ρ ΡΠ·Π΅Π» ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ. Π ΡΠΊΠΎΠ±ΠΊΠ°Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ;
β’ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΡΠ·Π»Π° text() Π²ΡΠ±ΠΈΡΠ°Π΅Ρ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ ΡΠ·Π΅Π»
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 7.2 ΡΠ°Π±Π»ΠΈΡΠ° ΡΡΠΈΠ»Π΅ΠΉ Π½Π°Ρ ΠΎΠ΄ΠΈΡ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅ Π²ΡΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡ ΡΠ·Π»Π° comment() ΠΈ ΡΠΎΠ·Π΄Π°Π΅Ρ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π½ΠΎΠ²ΡΠΉ, <!--Warning:comment found!--> (ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅! ΠΠ°ΠΉΠ΄Π΅Π½ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ!).
ΠΠΈΡΡΠΈΠ½Π³ 7.2. ΠΡΠ±ΠΎΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π²<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml"/>
<xsl:template match="/">
<xsl:for-each select="descendant::comment()">
<xsl:comment>Warning: comment found!</xsl:comment>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
ΠΡΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΡΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ ΡΡΠΈΠ»Π΅ΠΉ ΠΊ planets.xml ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ:
<?xml version="1.0" encoding="UTF-8"?>
<!--Warning: comment found!-->
<!--Warning: comment found!-->
<!--Warning: comment found!-->
Π¨Π°Π³ΠΈ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ XPath, ΡΠ°ΡΡΡ 3: ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΡ
ΠΡΠ΅Π΄ΠΈΠΊΠ°Ρ Π² ΡΠ°Π³Π΅ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ XPath ΡΠ°ΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π·Π°ΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠ΅ Π² ΡΠΊΠΎΠ±ΠΊΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ XPath, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ Π² ΠΈΡΡΠΈΠ½Ρ ΠΈΠ»ΠΈ Π»ΠΎΠΆΡ. ΠΠΎΠ³Π΄Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠΎΠΊΠ°, XPath ΡΡΠΈΡΠ°Π΅Ρ Π΅Π΅ ΠΈΡΡΠΈΠ½ΠΎΠΉ, Π΅ΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ° Π½Π΅ ΠΏΡΡΡΠ°. ΠΠΎΠ³Π΄Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ β Π½Π°Π±ΠΎΡ ΡΠ·Π»ΠΎΠ², XPath ΡΡΠΈΡΠ°Π΅Ρ Π΅Π³ΠΎ ΠΈΡΡΠΈΠ½ΠΎΠΉ, Π΅ΡΠ»ΠΈ ΠΎΠ½ Π½Π΅ ΠΏΡΡΡ. ΠΠΎΠ³Π΄Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ β ΡΠΈΡΠ»ΠΎ, ΡΠΎ ΠΎΠ±ΡΠΈΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΡΡΠΈΡΠ°ΡΡΡΡ ΠΈΡΡΠΈΠ½ΠΎΠΉ, Π΅ΡΠ»ΠΈ ΡΡΠΎ ΡΠΈΡΠ»ΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠ΅ΠΉ β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, PLANET[3] Π±ΡΠ΄Π΅Ρ ΠΈΡΡΠΈΠ½ΠΎΠΉ ΡΠΎΠ³Π΄Π° ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΈΡΡΠΈΠ½ΠΎΠΉ Π±ΡΠ΄Π΅Ρ PLANET[position()=3].
ΠΡΠ΅Π΄ΠΈΠΊΠ°ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ XPath Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ ΡΠ΅Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΡΡΠ΅ΡΠ°Π»ΠΈΡΡ Π½Π°ΠΌ Π½Π° ΠΏΡΠΎΡΡΠΆΠ΅Π½ΠΈΠΈ ΡΡΠΎΠΉ Π³Π»Π°Π²Ρ: ΡΠ΅Π΄ΠΊΠΎ ΠΊΠΎΠ³Π΄Π° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½Π°Π±ΠΎΡ ΡΠ·Π»ΠΎΠ², Π³Π»Π°Π²Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ ΡΡΡΠΎΠΊΠΈ, ΡΠΈΡΠ»Π° ΠΈΠ»ΠΈ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΡΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ preceding-sibling::MASS[position()*4] Π²ΡΠ±ΠΈΡΠ°Π΅Ρ ΡΠ΅ΡΡΡΠ΅ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°-Π±ΡΠ°ΡΠ° <MASS> Π΄Π»Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΠ³ΠΎ ΡΠ·Π»Π°.
ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΡΠ΅ΠΉ XPath
Π ΡΡΠΎΠΌΡ ΠΌΠΎΠΌΠ΅Π½ΡΡ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ ΡΡΠΈ ΡΠ°ΡΡΠΈ ΡΠ°Π³ΠΎΠ² ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ β ΠΎΡΡ, ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΡΠ·Π»Π° ΠΈ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°Ρ. ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π·Π½Π°ΠΊΠΎΠΌΡ Ρ ΡΡΠΈΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΏΠΎ ΠΏΡΠΎΠ΄Π΅Π»Π°Π½Π½ΠΎΠΉ Π½Π°ΠΌΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΎΠ±ΡΠ°Π·ΡΠ°ΠΌΠΈ Π²ΡΠ±ΠΎΡΠ°, Π½ΠΎ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΎΡΡ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ β preceding-sibling. ΠΠΎ ΡΠΈΡ ΠΏΠΎΡ ΠΌΡ Π²ΠΈΠ΄Π΅Π»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡΠΈ, Π²ΡΠ±ΠΈΡΠ°Π²ΡΠΈΠ΅ ΠΎΠ±ΡΠ°Π·ΡΡ XSLT β ΠΎΡΠΈ child ΠΈ attribute; ΡΠ΅ΠΏΠ΅ΡΡ ΠΆΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½ΠΎΠ²ΡΠ΅ ΠΎΡΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ Π² ΠΏΠΎΠ»Π½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΡ XPath, ΠΈ Π½Π°ΡΠ½Π΅ΠΌ Ρ ΠΎΡΠΈ ancestor.
ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΡΠΈ ancestor
ΠΡΡ ancestor (ΠΏΡΠ΅Π΄ΠΎΠΊ) ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²ΡΠ΅Ρ ΠΏΡΠ΅Π΄ΠΊΠΎΠ² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΠ³ΠΎ ΡΠ·Π»Π°, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ, Π΄Π΅Π΄ΡΡΠ΅ΠΊ, ΠΏΡΠ°Π΄Π΅Π΄ΡΡΠ΅ΠΊ ΠΈ Ρ.Π΄. ΠΡΠ° ΠΎΡΡ Π²ΡΠ΅Π³Π΄Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ ΡΠ·Π΅Π» β Π΅ΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΡΠΌ ΡΠ·Π»ΠΎΠΌ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΌ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ ΡΠ·Π΅Π».
ΠΠ·Π³Π»ΡΠ½ΠΈΡΠ΅ Π½Π° Π»ΠΈΡΡΠΈΠ½Π³ 7.3, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΎΡΠΈ ancestor ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠΈΡΠΊ ΠΈΠΌΠ΅Π½ (Ρ ΡΠ°Π½ΠΈΠΌΡΡ Π² ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ΅ <NAME>) Π²ΡΠ΅Ρ ΠΏΡΠ΅Π΄ΠΊΠΎΠ² ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² <MASS>.
ΠΠΈΡΡΠΈΠ½Π³ 7.3. ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΡΠΈ ancestor<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml"/>
<xsl:template match="MASS">
<xsl:for-each select="ancestor::*">
<xsl:value-of select="./NAME"/>
</xsl:for-each>
</xsl:template>
<xsl:template match="PLANET">
<xsl:apply-templates select="MASS"/>
</xsl:template>
</xsl:stylesheet>
ΠΠΎΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ ΡΡΠΈΠ»Π΅ΠΉ ΠΊ planets.xml:
<?xml version="1.0" encoding="utf-8"?>
Mercury
Venus
Earth
ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΡΠΈ ancestor-or-self
ΠΡΡ ancestor-or-self ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²ΡΠ΅Ρ ΠΏΡΠ΅Π΄ΠΊΠΎΠ² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΠ³ΠΎ ΡΠ·Π»Π°, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ°ΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΡΠΉ ΡΠ·Π΅Π». ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΏΡΠΎΡΠ΅Π³ΠΎ, ΡΡΠΎ ΡΠ°ΠΊΠ°Ρ ΠΎΡΡ Π²ΡΠ΅Π³Π΄Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ ΡΠ·Π΅Π».
Π Π»ΠΈΡΡΠΈΠ½Π³Π΅ 7.4 Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π°ΡΡΠΈΠ±ΡΡΡ AUTHOR ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ Β«SteveΒ» Π² Π²Π΅ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ.
ΠΠΈΡΡΠΈΠ½Π³ 7.4. planets.xml Ρ Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌΠΈ AUTHOR<?xml version=1.0"?>
<?xml-stylesheet type="text/xml" href="planets.xsl"?>
<PLANETS AUTHOR="Steve" >
<PLANET AUTHOR="Steve" >
<NAME>Mercury</NAME>
<MASS AUTHOR="Steve" UNITS="(Earth = 1)">.0553</MASS>
<DAY UNITS="days">58.65</DAY>
<RADIUS UNITS="miles">1516</RADIUS>
<DENSITY UNITS="(Earth = 1)">.983</DENSITY>
<DISTANCE UNITS="million miles">43.4</DISTANCE><!--B ΠΏΠ΅ΡΠΈΠ³Π΅Π»ΠΈΠΈ-->
</PLANET>
<PLANET AUTHOR="Steve">
<NAME>Venus</NAME>
<MASS UNITS="(Earth = 1)">.815</MASS>
<DAY UNITS="days">116.75</DAY>
<RADIUS UNITS="miles">3716</RADIUS>
<DENSITY UNITS="(Earth = 1)">.943</DENSITY>
<DISTANCE UNITS="million miles">66.8</DISTANCE><!--Π ΠΏΠ΅ΡΠΈΠ³Π΅Π»ΠΈΠΈ-->
</PLANET>
<PLANET>
<NAME>Earth</NAME>
<MASS UNITS="(Earth = 1)">1</MASS>
<DAY UNITS="days">1</DAY>
<RADIUS UNITS="miles">2107</RADIUS>
<DENSITY UNITS="(Earth = 1)">1</DENSITY>
<DISTANCE UNITS="million miles">128.4</DISTANCE><!--B ΠΏΠ΅ΡΠΈΠ³Π΅Π»ΠΈΠΈ-->
</PLANET>
</PLANETS>
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ ΡΠ΅ΠΏΠ΅ΡΡ, ΡΡΠΎ Ρ Ρ ΠΎΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡΡ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ Π²ΡΠ΅Ρ ΠΏΡΠ΅Π΄ΠΊΠΎΠ² ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² <MASS>, ΠΈΠΌΠ΅ΡΡΠΈΡ Π°ΡΡΠΈΠ±ΡΡ AUTHOR, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ <MASS>, Π΅ΡΠ»ΠΈ Ρ Π½Π΅Π³ΠΎ Π΅ΡΡΡ Π°ΡΡΠΈΠ±ΡΡ AUTHOR. ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΎΡΠΈ ancestor-or-self ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ local-name (Π»ΠΈΡΡΠΈΠ½Π³ 7.5).
ΠΠΈΡΡΠΈΠ½Π³ 7.5. ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΡΠΈ ancestor-or-self<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml"/>
<xsl:template match="MASS">
<xsl:for-each select="ancestor-or-self::*[@AUTHOR]">
<xsl:value-of select="local-name(.)"/>
<xsl:text> </xsl:text>
</xsl:for-each>
</xsl:template>
<xsl:template match="PLANET">
<xsl:apply-templates select="MASS"/>
</xsl:template>
</xsl:stylesheet>
ΠΠΎΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ; ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ Π²ΡΠ±ΡΠ°Π½Π½ΡΠ΅ ΠΏΡΠ΅Π΄ΠΊΠΈ Π²ΡΠ΅Ρ ΡΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² <MASS>, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΠ°ΠΌ ΡΠ»Π΅ΠΌΠ΅Π½Ρ <MASS>, ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ, ΡΡΠΎ Ρ Π½Π΅Π³ΠΎ ΠΈΠΌΠ΅Π΅ΡΡΡ Π°ΡΡΠΈΠ±ΡΡ AUTHOR:
<?xml version="1.0" encoding="UTF-8"?>
PLANETS PLANET MASS
PLANETS PLANET
PLANETS
ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΡΠΈ descendant
ΠΡΡ descendant (ΠΏΠΎΡΠΎΠΌΠΎΠΊ) ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²ΡΠ΅Ρ ΠΏΠΎΡΠΎΠΌΠΊΠΎΠ² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΠ³ΠΎ ΡΠ·Π»Π°. ΠΠ°ΠΌΠ΅ΡΡΡΠ΅, ΡΡΠΎ ΡΡΠ΄Π° Π½Π΅ Π²Ρ ΠΎΠ΄ΡΡ Π°ΡΡΠΈΠ±ΡΡΡ ΠΈΠ»ΠΈ ΡΠ·Π»Ρ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ² ΠΈΠΌΠ΅Π½, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ΠΈ Π½Π΅ ΡΡΠΈΡΠ°ΡΡΡΡ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΌΠΈ ΡΠ·Π»Π°ΠΌΠΈ.
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ (Π»ΠΈΡΡΠΈΠ½Π³ 7.6) Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅ΡΡΡ ΡΠ°Π±ΠΎΡΠ° Ρ ΡΡΠΎΠΉ ΠΎΡΡΡ. ΠΠ° ΡΡΠΎΡ ΡΠ°Π· Ρ Ρ ΠΎΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ <PLANET> ΠΠ΅ΡΠΊΡΡΠΈΡ: <INFO>Sorry, Mercury has blown up and is no longer available.</INFO> (ΠΠ·Π²ΠΈΠ½ΠΈΡΠ΅, Π½ΠΎ ΠΠ΅ΡΠΊΡΡΠΈΠΉ Π²Π·ΠΎΡΠ²Π°Π»ΡΡ ΠΈ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π΄ΠΎΡΡΡΠΏΠ΅Π½.). Π§ΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ ΠΠ΅ΡΠΊΡΡΠΈΠΉ, ΠΌΠ½Π΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΠΈΠΌΠ΅Π΅Ρ Π»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΠΎΡΠΎΠΌΠΎΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° <PLANET> ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Β«MercuryΒ», ΡΡΠΎ Ρ ΡΠ΄Π΅Π»Π°Ρ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ XPath Π²Π½ΡΡΡΠΈ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠ° Π²ΡΠ±ΠΎΡΠ°.
ΠΠΈΡΡΠΈΠ½Π³ 7.6. ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΡΠΈ descendant<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml"/>
<xsl:template match="PLANET[descendant::*='Mercury']">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
<INFO>Sorry. Mercury has blown up and is no longer available.</INFO>
</xsl:copy>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
ΠΠΎΡ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠΈΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ, Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½Π½ΡΠΉ Π½ΠΎΠ²ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ <INFO> ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΠ΅ΡΠΊΡΡΠΈΡ:
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xml" href="planets.xsl"?>
<PLANETS>