<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="item">
<xsl:copy>
<xsl:attribute name="id">
<xsl:text><xsl:value-of select="generate-id()"/><xsl:text>
</xsl:attribute>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Π Π²ΡΡ ΠΎΠ΄ΡΡΠ΅ΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ item Π±ΡΠ΄ΡΡ ΠΈΠΌΠ΅ΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ.
ΠΠΈΡΡΠΈΠ½Π³ 8.71. ΠΡΡ ΠΎΠ΄ΡΡΠΈΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ<?xml version="1.0" encoding="utf-8"?>
<items>
<item id="b1b1b2" source="a" name="A"/>
<item id="b1b1b4" source="b" name="B"/>
...
<item id="b1b1c34" source="a" name="F"/>
</items>
Π‘ΡΠ°Π·Ρ ΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌΡΡ, ΡΡΠΎ ΡΡΠΎΡ ΡΠΏΠΎΡΠΎΠ± Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π΅ Π²ΡΠ΅Π³Π΄Π°: generate-id ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΌ ΡΡΠ΅Π΄ΠΈ Π²ΡΠ΅Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² ΡΠ·Π»ΠΎΠ², Π° Π½Π΅ ΡΡΠ΅Π΄ΠΈ Π²ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°. Π’Π°ΠΊ ΡΡΠΎ Π΅ΡΠ»ΠΈ Π±Ρ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΠΌΠ΅Π» ID-Π°ΡΡΠΈΠ±ΡΡ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ b1b1b4, Π²ΡΡ ΠΎΠ΄ΡΡΠΈΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π» Π±Ρ Π±ΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΆΠ΅, Π΅ΡΠ»ΠΈ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅ Π΄ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ Π±ΡΠ»ΠΎ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ², Π²ΡΠ΅ Π±ΡΠ΄Π΅Ρ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅.
Π€ΡΠ½ΠΊΡΠΈΡ system-property
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π½ΠΈΠΆΠ΅:
object system-property(string)
Π€ΡΠ½ΠΊΡΠΈΡ system-property Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π΅Π΅ ΡΡΡΠΎΠΊΠΎΠ²ΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ. ΠΡΠ³ΡΠΌΠ΅Π½Ρ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΠΎΠ΅ ΠΈΠΌΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π°. ΠΡΠ»ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Ρ ΡΠ°ΠΊΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΡΡΠ½ΠΊΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π²Π΅ΡΠ½ΡΡΡ ΠΏΡΡΡΡΡ ΡΡΡΠΎΠΊΡ.
ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠ± ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΈ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅. Π ΡΡΠ°Π½Π΄Π°ΡΡΠ΅ ΡΠ·ΡΠΊΠ° ΡΠΊΠ°Π·Π°Π½ΠΎ, ΡΡΠΎ Π²ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ Π² ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°:
β‘ xsl:version β ΡΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π½ΠΎΠΌΠ΅Ρ Π²Π΅ΡΡΠΈΠΈ ΡΠ·ΡΠΊΠ° XSLT, ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π΄Π°Π½Π½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ.
β‘ xsl:vendor β ΡΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°.
β‘ xsl:vendor-uri β ΡΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ URL ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Ρ β ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, xsl:vendor-uri β ΡΡΠΎ Π°Π΄ΡΠ΅Ρ Web-ΡΠ°ΠΉΡΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°.
Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π² ΠΏΠ΅ΡΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΠ·ΡΠΊΠ° XSLT ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ ΠΎΠ±ΡΠ·Π°Π½Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°. ΠΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ, Π±ΡΠ»ΠΎ Π±Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠ΅Π΅ ΠΈΠΌΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°. Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π½ΠΈΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ΅ Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½ΠΎ.
ΠΡΠΈΠΌΠ΅ΡΠ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΏΡΠΈΠ²Π΅Π΄Π΅ΠΌ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠ°Π±Π»ΠΎΠ½, Π²ΡΠ²ΠΎΠ΄ΡΡΠΈΠΉ Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ΅.
ΠΠΈΡΡΠΈΠ½Π³ 8.72. Π¨Π°Π±Π»ΠΎΠ½, Π²ΡΠ²ΠΎΠ΄ΡΡΠΈΠΉ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ<xsl:template name="info">
<xsl:comment>
<xsl:text>
 | XSLT Version: </xsl:text>
<xsl:value-of
select="format-number(system-property('xsl:version'), '0.0')"/>
<xsl:text>
 | XSLT Processor: </xsl:text>
<xsl:value-of select="system-property('xsl:vendor')"/>
<xsl:text>
 | URL: </xsl:text>
<xsl:value-of select="system-property('xsl:vendor-url')"/>
<xsl:text>
 +</xsl:text>
</xsl:comment>
</xsl:template>
ΠΡΠΎΡΠ΅ΡΡΠΎΡ SAXON, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ ΠΠ°ΠΉΠΊΠ»ΠΎΠΌ ΠΠ΅Π΅ΠΌ (Michael Kay), Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ:
<!--
| XSLT Version: 1.0
| XSLT Processor: SAXON 6.0.2 from Michael Kay of ICL
| URL: http://users.iclway.co.uk/mhkay/saxon/index.html
+-->
ΠΠΆΠΈΠ΄Π°Π΅ΡΡΡ, ΡΡΠΎ Π² Π±ΡΠ΄ΡΡΠΈΡ Π²Π΅ΡΡΠΈΡΡ XSLT Π½Π°Π±ΠΎΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΡΠ²ΠΎΠΉΡΡΠ² Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°, Π½Π΅ ΠΎΠ³ΠΎΠ²ΠΎΡΠ΅Π½Π½ΡΠ΅ Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ.
ΠΠ»Π°Π²Π° 9
Π‘ΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ XSLT Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ·ΡΠΊΠ°ΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ
XSLT ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ·ΡΠΊΠΈ
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ XSLT ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΠΏΠΎΠ»Π½Π΅ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ, Π΅Π³ΠΎ ΠΎΡΠ΅Π½Ρ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΊΠ°ΠΊ ΡΠΎΡΡΠ°Π²Π½ΡΡ ΡΠ°ΡΡΡ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΈΡΡΡΡΡ Π½Π° Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π’ΠΎΠΌΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΈΡΠΈΠ½. ΠΠΎΠΏΡΡΠ°Π΅ΠΌΡΡ Π²ΡΠ΄Π΅Π»ΠΈΡΡ Π³Π»Π°Π²Π½ΡΠ΅ ΠΈΠ· Π½ΠΈΡ .
β‘ Π’ΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠ΅ ΠΈΠΌΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΠ΅ ΡΠ·ΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΡΠ΅Π½Ρ ΠΏΠ»ΠΎΡ ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄ΡΠ΅Π²ΠΎΠ²ΠΈΠ΄Π½ΠΎ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ . ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π² ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ΠΏΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ΄Π½ΠΎ Π·Π° Π΄ΡΡΠ³ΠΈΠΌ, Π² ΠΎΠ±ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ (Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΏΠΎΠ½ΡΡΠ½ΠΎΡΡΠΈ ΠΊΠΎΠ΄Π°) ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ.
β‘ Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ XSLT-ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² ΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ, Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ ΡΠ»ΠΎΠΆΠ½Ρ, ΡΡΠΎ ΠΈΠ· ΡΠΎΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΠΈ ΠΏΡΠΎΡΡΠΎΡΡ Π±ΡΠ²Π°Π΅Ρ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅Π³ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠ·ΡΠΊΠΈ.
β‘ ΠΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ XSLT ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π»Π΅Π³ΠΊΡΡ ΠΈ Π³ΠΈΠ±ΠΊΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΡΠ°ΠΏΠΎΠ² ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΎΠ±ΠΌΠ΅Π½Π° XML-Π΄Π°Π½Π½ΡΠΌΠΈ Π±ΡΠ΄Π΅Ρ XSLT-ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠΎΡΠΌΠ°ΡΠΎΠ², ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ΅, Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡΡ Π½Π΅ Π΄ΠΎΠΏΠΈΡΡΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ. Π ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ XSLT ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅, Π½ΠΎ ΠΈ ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ, ΡΠΎ Π΅ΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΡΡΡΡΠΊΡΡΡΠ½ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅, ΡΠΎΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° Π² ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΡ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ XML, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΠ΅Π½Ρ Π²Π΅Π»ΠΈΠΊΠ°.
β‘ ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ XSLT-ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΊΠΎΡΠ΅Π½Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΠΏΡΠΎΡΡΠΈΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Web-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠ°Π΄ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ»ΡΡΠ°ΡΡ XSLT-ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΡΡΠΎ ΠΈΠ·Π±Π°Π²Π»ΡΡΡ ΠΎΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎ-Π»ΠΈΠ±ΠΎ Π½Π° Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ ; ΠΎΠ΄Π½Π°ΠΊΠΎ Π΄Π°ΠΆΠ΅ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π±Π΅Π· ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ² Π½Π΅ ΠΎΠ±ΠΎΠΉΠ΄Π΅ΡΡΡΡ, XSLT ΡΠ»ΡΠΆΠΈΡ Ρ ΠΎΡΠΎΡΡΡ ΡΠ»ΡΠΆΠ±Ρ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Ρ ΠΏΡΠΎΡΡΠΎΠΉ, ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΠΈ Π»Π΅Π³ΠΊΠΎ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΠΉ Π²ΡΠ²ΠΎΠ΄ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΠ² HTML.
Π ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΌΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ·ΡΠΊΠ°Ρ ΠΈ ΡΡΠ΅Π΄Π°Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. ΠΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅, ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΡ, Π½ΠΎ ΠΈ ΠΈΡ ΡΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, ΡΡΠΎΠ±Ρ Π½Π°ΡΠ°ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ XSLT Π² ΡΠΎΡΡΠ°Π²Π΅ ΡΠ²ΠΎΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ².
ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ XSLT-ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ Π² Object Pascal
Π ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ ΠΌΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ XSLT-ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ Π² ΠΏΡΠΎΡΡΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅, ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΌ Π² ΡΡΠ΅Π΄Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Delphi. ΠΠ°Π·ΠΎΠ²ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ Delphi ΡΠ²Π»ΡΠ΅ΡΡΡ Object Pascal. Π Π΅ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠΌ, Π±ΡΠ΄Π΅Ρ ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°ΡΡΡΡ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ MSXML Parser 3.0 ΠΎΡ Microsoft.
ΠΠ΅Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ, Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°ΡΡ XML-Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ β "source.xml") ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ XSLT-ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ β "stylesheet.xsl") ΠΈ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ.
ΠΠΌΠΏΠΎΡΡ MSXML Π² Delphi
ΠΠ΅ΡΠ²ΡΠΌ ΡΠ°Π³ΠΎΠΌ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° (Π½Π°Π·ΠΎΠ²Π΅ΠΌ Π΅Π³ΠΎ DelphiXML) Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠΈΠΏΠΎΠ² MSXML. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΊΠ»Π°ΡΡΡ, ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ MSXML, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΈ XSLT-ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΡΠΈΠΏΠΎΠ² MSXML, Π²ΡΠ±Π΅ΡΠ΅ΠΌ ΠΏΡΠ½ΠΊΡ ΠΌΠ΅Π½Ρ Project/Import Type Libraryβ¦ (ΡΠΈΡ. 9.1).
Π ΠΈΡ. 9.1. ΠΠΌΠΏΠΎΡΡ MSXML β ΡΠ°Π³ 1
Π ΠΏΠΎΡΠ²ΠΈΠ²ΡΠ΅ΠΌΡΡ Π΄ΠΈΠ°Π»ΠΎΠ³Π΅ Π²ΡΠ±Π΅ΡΠ΅ΠΌ ΠΏΡΠ½ΠΊΡ "Microsoft XML v3.0 (Version 3.0)" ΠΈ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π½ΠΎΠ²ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ Create Unit (ΡΠΈΡ. 9.2).
Π ΠΈΡ. 9.2. ΠΠΌΠΏΠΎΡΡ MSXML β ΡΠ°Π³ 2
ΠΠΎΠ»ΡΡΠΈΠ²ΡΠΈΠΉΡΡ ΡΠ°ΠΉΠ» MSXML2_TLB.pas ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΠΌ ΠΊ ΠΏΡΠΎΠ΅ΠΊΡΡ (Project/Add to Projectβ¦); ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΡΡΡΠΏΠ°ΡΡ ΠΊ ΡΠ°Π±ΠΎΡΠ΅.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ MSXML Π² Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅, Π½Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ MSXML2_TLB Π² ΡΠΏΠΈΡΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ Π½Π°ΠΌ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ comobj. Π ΠΈΡΠΎΠ³Π΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ uses Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, ComCtrls, MSXML2_TLB, comobj;
Π€ΠΎΡΠΌΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ°
ΠΠ°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΡΠΎΡΠΌΠ° Ρ ΡΡΠ΅ΠΌΡ ΡΡΡΠ°Π½ΠΈΡΠΊΠ°ΠΌΠΈ ΠΈ ΡΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ TMemo. Π ΠΏΠ΅ΡΠ²ΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠ΅ΠΊΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΠΌΠΎΠ³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°, Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ β XSLT-ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π² ΡΡΠ΅ΡΡΠ΅ΠΌ β ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ.
ΠΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ Π²Π½Π΅ΡΠ½ΠΈΠΉ Π²ΠΈΠ΄ ΡΠΎΡΠΌΡ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° ΡΠΈΡ. 9.3.
Π ΠΈΡ. 9.3. ΠΠ½Π΅ΡΠ½ΠΈΠΉ Π²ΠΈΠ΄ ΡΠΎΡΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ DOMDocument
ΠΠ±ΡΠ΅ΠΊΡΠ½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ XML-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Π² ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ DOMDocument. Π Π³Π»Π°Π²Π½ΠΎΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΌΡ ΠΎΠ±ΡΡΠ²ΠΈΠΌ Π΄Π²Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΠΎΠΌΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ (xmlSource) ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ (xmlStylesheet):
var
xmlSource: DOMDocument;
xmlStylesheet: DOMDocument;
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π½Π°ΡΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ², ΠΌΡ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΊΠ»Π°ΡΡΠΎΠΌ Π‘oDOMDocument, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» ΡΠΎΠ·Π΄Π°Π½ Π² ΠΌΠΎΠ΄ΡΠ»Π΅ MSXML2_TLB ΠΏΡΠΈ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ. ΠΠ΅ΡΠΎΠ΄ Create ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΊ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΡΠΆΠ΅ ΡΠΏΠΎΠΌΡΠ½ΡΡΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° DOMDocument:
xmlSource := CoDOMDocument.Create;
xmlStylesheet := CoDOMDocument.Create;
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ Π·Π°Π³ΡΡΠ·ΠΈΡΡ XML-ΡΠ°ΠΉΠ», ΠΌΡ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ load ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° DOMDocument: