Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «ВСхнология XSLTΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 35

Автор АлСксСй Π’Π°Π»ΠΈΠΊΠΎΠ²

<xsl:stylesheet

 version="1.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <xsl:import href="bravo.xsl"/>

 <xsl:import href="charlie.xsl"/>

 <xsl:import href="delta.xsl"/>

 <!-- ... -->

</xsl:stylesheet>

Π’ соотвСтствии с ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΠΌ, порядок ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° основного прСобразования ΡΡ‚Π°Ρ€ΡˆΠ΅ порядка ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, Π·Π½Π°Ρ‡ΠΈΡ‚ alpha.xsl ΡΡ‚Π°Ρ€ΡˆΠ΅ bravo.xsl ΠΈ charlie.xsl. Π”Π°Π»Π΅Π΅, согласно Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΏΡ€Π°Π²ΠΈΠ»Ρƒ порядок ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° прСобразования bravo.xsl младшС порядка charlie.xsl, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΎ импортируСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ delta.xsl Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ порядок ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Ρƒ основного прСобразования alpha.xsl. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, порядок ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄:

bravo.xsl

charlie.xsl

alpha.xsl delta.xsl

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ bravo.xsl Π±ΡƒΠ΄Π΅Ρ‚ самым младшим, Π° прСобразования alpha.xsl ΠΈ delta.xsl β€” самыми ΡΡ‚Π°Ρ€ΡˆΠΈΠΌΠΈ.

Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ прСобразования ΠΌΠΎΠ³ΡƒΡ‚ ΠΈ сами ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ. Π’ этих случаях вычислСниС порядка ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° нСсколько услоТняСтся.

ВСхничСская рСкомСндация XSLT ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ построСниСм логичСского Π΄Π΅Ρ€Π΅Π²Π° ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ схСму Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° (Ρ‚Π°Π±Π» 4.1).


Π’Π°Π±Π»ΠΈΡ†Π° 4.1. Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ alpha.xsl bravo.xsl charlie.xsl bravo.xsl delta.xsl echo.xsl foxtrot.xsl charlie.xsl golf.xsl hotel.xsl hotel.xsl india.xsl

Π­Ρ‚ΠΎΠΉ схСмС Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ логичСскоС Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π½Π° рис. 4.1.

Рис. 4.1. ΠžΠ±Ρ…ΠΎΠ΄ Π΄Π΅Ρ€Π΅Π²Π° ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ

Π’ соотвСтствии с ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ, Π»Π΅Π²Ρ‹Π΅ Π²Π΅Ρ‚ΠΊΠΈ Π΄Π΅Ρ€Π΅Π²Π° Π±ΡƒΠ΄ΡƒΡ‚ младшС ΠΏΡ€Π°Π²Ρ‹Ρ…, Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹, находящиСся Π±Π»ΠΈΠΆΠ΅ ΠΊ ΠΊΠΎΡ€Π½ΡŽ, Π±ΡƒΠ΄ΡƒΡ‚ ΡΡ‚Π°Ρ€ΡˆΠ΅ Ρ‚Π΅Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ дальшС ΠΎΡ‚ Π½Π΅Π³ΠΎ, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ прСобразования ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΈ Ρƒ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, порядок ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ ΠΎΡ‚ ΠΌΠ»Π°Π΄ΡˆΠΈΡ… ΠΊ ΡΡ‚Π°Ρ€ΡˆΠΈΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

delta.xsl

echo.xsl

bravo.xsl foxtrot.xsl

golf.xsl

hotel.xsl india.xsl

charlie.xsl

alpha.xsl

ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, нСпосрСдствСнным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ влияСт Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ аспСкты прСобразования. Π­Ρ„Ρ„Π΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ порядок ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π½Π° Ρ‚Π΅ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Π΅ элСмСнты, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описан ΠΏΡ€ΠΈ ΠΈΡ… рассмотрСнии β€” сСйчас ΠΆΠ΅ ΠΌΡ‹ ΠΈΡ… просто ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎ пСрСчислим.

β–‘ xsl:attribute-set β€” порядок ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для опрСдСлСния главСнства элСмСнтов xsl:attribute, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… Π² Ρ€Π°Π·Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ списки Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ², Π½ΠΎ ΡΠΎΠ·Π΄Π°ΡŽΡ‰ΠΈΡ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ.

β–‘ xsl:namespace-alias β€” Π² случаС, Ссли Π² ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ нСсколько псСвдонимов прСфиксов пространств ΠΈΠΌΠ΅Π½, процСссор ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ самый ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ Π² порядкС ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° псСвдоним.

β–‘ xsl:output β€” эти элСмСнты ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ процСссором. Π’ случаС ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ³Π΄Π° Π² Ρ€Π°Π·Π½Ρ‹Ρ… элСмСнтах xsl:output Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ, процСссор Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΡ‚Π°Ρ€ΡˆΠ΅Π΅ Π² порядкС ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅.

β–‘ xsl:strip-space ΠΈ xsl:preserve-space β€” Π² этих элСмСнтах порядок ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ²: Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Π²Π°ΡŽΡ‚ опрСдСлСния со ΡΡ‚Π°Ρ€ΡˆΠΈΠΌ порядком ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°.

β–‘ xsl:template β€” порядок ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ Π² случаях, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄ΠΈΠ½ ΡƒΠ·Π΅Π» ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½ нСсколькими шаблонами. Π¨Π°Π±Π»ΠΎΠ½, содСрТащийся Π² ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ с младшим порядком ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°, Π±ΡƒΠ΄Π΅Ρ‚ просто ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΈΠ· рассмотрСния.

β–‘ xsl:variable ΠΈ xsl:param β€” порядок ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ Π² случаС, Ссли Π² Ρ€Π°Π·Π½Ρ‹Ρ… прСобразованиях ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ опрСдСлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ с ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ. Π’ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ситуации Π±ΡƒΠ΄Π΅Ρ‚ использована пСрСмСнная со ΡΡ‚Π°Ρ€ΡˆΠΈΠΌ порядком ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°.

ИспользованиС сущностСй для Ρ€Π°Π·Π±ΠΈΠ²ΠΊΠΈ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈ

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ XSLT-прСобразования ΡΠ²Π»ΡΡŽΡ‚ΡΡ XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ срСдствами XML для ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΉ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Части ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ просто вынСсти Π²ΠΎ внСшниС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π² Π²ΠΈΠ΄Π΅ сущности.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Листинг 4.15. Входящий Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚:

<root>

 <a/>

 <b/>

</root>

Листинг 4.16. ОсновноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅

<!DOCTYPE xsl:stylesheet [

 <!ENTITY ab SYSTEM "ab.xsl">

]>

<xsl:stylesheet

 version="1.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">


 <xsl:template match="root">

  <ROOT>

   <xsl:apply-templates/>

  </ROOT>

 </xsl:template>


 &ab;


</xsl:stylesheet>

Листинг 4.17. Π€Π°ΠΉΠ» ab.xsl

<xsl:template match="a">

 <A/>

</xsl:template>


<xsl:template match="b">

 <B/>

</xsl:template>

Листинг 4.18. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ прСобразования

<ROOT>

 <A/>

 <B/>

</ROOT>

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π² DTD-Π±Π»ΠΎΠΊΠ΅ ΠΌΡ‹ опрСдСляСм ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ с ΠΈΠΌΠ΅Π½Π΅ΠΌ ab, которая содСрТит Π΄Π²Π° ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹Ρ… ΠΏΡ€Π°Π²ΠΈΠ»Π° для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ элСмСнтов a ΠΈ b. Π€Π°ΠΉΠ» ab.xsl, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ содСрТится тСкст внСшнСй сущности, замСняСт Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ ссылку &ab;. ПослС раскрытия процСссором сущности (Π·Π°ΠΌΠ΅Π½Ρ‹ ссылки Π½Π° Π΅Π΅ содСрТимоС) нашС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

Листинг 4.19. ОсновноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ послС раскрытия сущности &ab;

<xsl:stylesheet

 version="1.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">


 <xsl:template match="root">

  <ROOT>

   <xsl:apply-templates/>

  </ROOT>

 </xsl:template>


 <xsl:template match="a">

  <A/>

 </xsl:template>


 <xsl:template match="b">

  <B/>

 </xsl:template>


</xsl:stylesheet>

БовмСстноС использованиС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ ΠΈ XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²

Ассоциация прСобразования с XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ

Π’Π΅ΠΌ, ΠΊΠΎΠΌΡƒ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ со стилями Π² HTML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ…, ΠΏΠΎΠΆΠ°Π»ΡƒΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π½Π°ΠΊΠΎΠΌΠ° конструкция Π²ΠΈΠ΄Π° <LINK REL="stylesheet">, которая закрСпляСт Π·Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ. Π’ΠΊΠ»ΡŽΡ‡ΠΈΠ² Ρ‚Π°ΠΊΡƒΡŽ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, Π°Π²Ρ‚ΠΎΡ€ явным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ слСдуСт ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.

ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с XSLT. НапримСр, Ссли для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° всСгда Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅, Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒ это ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ.

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒ XSLT-ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π° XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ, Π² послСднСм Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ использована инструкция ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ xml-stylesheet, которая ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄:

<?xml-stylesheet

 href="URI"

 type="Ρ‚ΠΈΠΏ"

 title="Π½Π°Π·Π²Π°Π½ΠΈΠ΅"

 media="Ρ‚ΠΈΠΏ носитСля"

 charset="ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°"

 alternate="yes" | "no"?>

Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ xml-stylesheet ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΊΡ€Π΅ΠΏΠ»ΡΡ‚ΡŒ Π·Π° XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ прСобразования. ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ инструкции xml-stylesheet являСтся ассоциация с Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ фиксированного стиля (Π°Π½Π³Π». stylesheet β€” ΡΡ‚ΠΈΠ»ΡŒ, стилСвая Ρ‚Π°Π±Π»ΠΈΡ†Π°). Π‘ этой Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния прСобразования ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π΅ Π±ΠΎΠ»Π΅Π΅, Ρ‡Π΅ΠΌ частным случаСм стилСвых Ρ‚Π°Π±Π»ΠΈΡ†.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ xml-stylesheet содСрТит ΡˆΠ΅ΡΡ‚ΡŒ псСвдоатрибутов (приставка псСвдо- поясняСт, Ρ‡Ρ‚ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ инструкции ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ²), Π΄Π²Π° ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ…, href ΠΈ type, ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ. ИспользованиС псСвдоатрибутов xml-stylesheet поясняСт Ρ‚Π°Π±Π». 4.2.


Π’Π°Π±Π»ΠΈΡ†Π° 4.2. ΠŸΡΠ΅Π²Π΄ΠΎΠ°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ инструкции ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ xml-stylesheet

ΠŸΡΠ΅Π²Π΄ΠΎΠ°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ ОписаниС href Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ мСстополоТСниС стиля, закрСпляСмого Π·Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ. Π’ случаС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ, href ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ мСстополоТСниС прСобразования, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊ этому Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρƒ. Π’ псСвдоатрибутС href ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΊΠ°Π·Π°Π½ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ прСобразования, Ссли ΠΎΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ Π² сам Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ (см. Ρ€Π°Π·Π΄Π΅Π» "Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ прСобразования Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚"). type Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΈΠΏ стиля, закрСпляСмого Π·Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ. Π’ нашСм случаС, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ ассоциируСм с Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ XSLT-ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅, псСвдоатрибут type Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ "text/xsl" title Π—Π°Π΄Π°Π΅Ρ‚ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ закрСпляСмого стиля. НазваниС Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ особого значСния ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ β€” ΠΎΠ½ΠΎ просто поясняСт Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ стиля media Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΈΠΏ носитСля ΠΈΠ»ΠΈ устройства, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ charset ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ создан ΡΡ‚ΠΈΠ»ΡŒ. Если ΡΡ‚ΠΈΠ»ΡŒ являСтся XSLT-ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ псСвдоатрибута charset Π² расчСт Π½Π΅ принимаСтся, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ явно ΠΈΠ»ΠΈ нСявно ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° Π² Π½ΠΈΡ… самих alternate Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, являСтся Π»ΠΈ Π΄Π°Π½Π½Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ основным ("no") ΠΈΠ»ΠΈ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ ("yes"). Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ этого Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ являСтся "no" ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Π§Ρ‚ΠΎ касаСтся псСвдоатрибута type, Ρ‚ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ Π½Π΅Ρ‚ стандарта, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ заставлял Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ "text/xsl". Рабочая Π³Ρ€ΡƒΠΏΠΏΠ° XSL ΠšΠΎΠ½ΡΠΎΡ€Ρ†ΠΈΡƒΠΌΠ° W3 Π΄ΠΎ сих ΠΏΠΎΡ€ обсуТдаСт, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΈΠΏ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ присвоСн XSLT. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ XSLT Π΅ΡΡ‚ΡŒ XML-язык, Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ слСдовало Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ "application/xml", ΠΎΠ΄Π½Π°ΠΊΠΎ с Π»Π΅Π³ΠΊΠΎΠΉ ΠΏΠΎΠ΄Π°Ρ‡ΠΈ Microsoft всС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ "text/xsl".