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

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

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

<mark-up type="b">This text should be marked bold.</mark-up>

Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ type элСмСнта mark-up ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΈΠΏ элСмСнта Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ использован для Π΄Π°Π½Π½ΠΎΠ³ΠΎ тСкстового Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ элСмСнт Π²ΠΈΠ΄Π°

<b>This text should be marked bold.</b>

ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ шаблон:

<xsl:template match="mark-up">

 <xsl:element name="{@type}">

  <xsl:value-of select="."/>

 </xsl:element>

</xsl:template>

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π² качСствС ΠΈΠΌΠ΅Π½ΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ элСмСнта, содСрТащСго тСкст элСмСнта mark-up, Π±ΡƒΠ΄Π΅Ρ‚ использовано Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° type.

Π’ ΠΎΠ΄Π½ΠΎΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСсколько Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ β€” ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· Π½ΠΈΡ… Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки.

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

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ вывСсти ссылки Π½Π° графичСскиС изобраТСния Π² Π²ΠΈΠ΄Π΅ ΠΈΠΊΠΎΠ½ΠΎΠΊ. ΠœΡ‹ Π·Π°Π΄Π°Π΅ΠΌ список Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Π²ΠΈΠ΄Π΅ XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°:

<images dir="/images">

 <image filename="rose.jpg"/>

 <image filename="orchide.gif"/>

 <image filename="primul.gif"/>

</images>

Π€Π°ΠΉΠ»Ρ‹ хранятся Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ Π² Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π΅ dir элСмСнта images, Π° ΠΈΠΊΠΎΠ½ΠΊΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚Π΅ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ², Ρ‡Ρ‚ΠΎ ΠΈ большиС изобраТСния, Π½ΠΎ с прСфиксом "th_". Для получСния ссылок Π½Π° изобраТСния ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ:

<xsl:template match="images/image">

 <Π° href="{../@dir}/{@filename}">

  <img src="{../@dir}/th_{@filename}"/>

 </a>

</xsl:template>

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ Π² Π²ΠΈΠ΄Π΅:

<Π° href="/images/rose.jpg"><img src="/images/th_rose.jpg"/></a>

<a href="/images/orchide.gif"><img src="/images/th_orchide.gif"/></a>

<a href="/images/primul. gif"><img src="/images/th_primul.gif"/></a>

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° Π»Π΅Π²Ρ‹Π΅ ΠΈ ΠΏΡ€Π°Π²Ρ‹Π΅ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки Π² качСствС простых символов, Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄Π²Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡ… количСство, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ "{{" вмСсто ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π»Π΅Π²ΠΎΠΉ ΠΈ "}}" вмСсто ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΡ€Π°Π²ΠΎΠΉ Ρ„ΠΈΠ³ΡƒΡ€Π½ΠΎΠΉ скобки соотвСтствСнно.

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

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΊΠ°ΠΊ

<input name="login" type="text"

 value="{{{{{{Enter your login here}}}}}}"/>

Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ Π² выходящСм Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ ΠΊ Π²ΠΈΠ΄Ρƒ

<input name="login" type="text" value="{{{Enter your login here}}}"/>

Π€ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ рСкурсивно для вычислСния Π²Π½ΡƒΡ‚Ρ€ΠΈ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π² качСствС значСния Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° name, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ

<story name="{/h{1 + 2}/p}"/>

Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ использовано вычислСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ выраТСния /h3/p. ВмСсто этого процСссор выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ.

Π€ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ спокойно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ выраТСния Π² Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°Ρ… β€” Π² этом случаС ΠΎΠ½ΠΈ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ².

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

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΊΠ°ΠΊ

<page numbers="{concat ('{', ' 1,2,3', '}') }"/>

Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ ΠΊ Π²ΠΈΠ΄Ρƒ

<page numbers="{1,2,3}"/>

Π¨Π°Π±Π»ΠΎΠ½Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ Π²Π΅Π·Π΄Π΅. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ шаблонов ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ².

β–‘ ΠΡ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹, значСниями ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡΠ²Π»ΡΡŽΡ‚ΡΡ выраТСния.

β–‘ ΠΡ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹, значСниями ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹.

β–‘ ΠΡ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ элСмСнтов Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня.

β–‘ ΠΡ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ пространств ΠΈΠΌΠ΅Π½ (xmlns).

Π¨Π°Π±Π»ΠΎΠ½Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ Π² Π»ΡŽΠ±Ρ‹Ρ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°Ρ… Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов, Ρ‡Ρ‚ΠΎ ΡƒΠΆΠ΅ нСсколько Ρ€Π°Π· Π±Ρ‹Π»ΠΎ продСмонстрировано Π²Ρ‹ΡˆΠ΅. НапримСр, Π² Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΡŒΠ½ΠΎΠΌ элСмСнтС

<img src="{../@dir}/th_{@filename}"/>

Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ src содСрТит Π½ΠΈ Ρ‡Ρ‚ΠΎ ΠΈΠ½ΠΎΠ΅, ΠΊΠ°ΠΊ Π΄Π²Π° шаблона Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

Π§Ρ‚ΠΎ ΠΆΠ΅ касаСтся Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² элСмСнтов XSLT, Ρ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· Ρ‚Π°Π±Π». 4.4, лишь малая ΠΈΡ… Ρ‡Π°ΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.


Π’Π°Π±Π»ΠΈΡ†Π° 4.4. Атрибуты элСмСнтов XSLT, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Атрибуты ОписаниС xsl:element name Имя создаваСмого элСмСнта namespace ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΠ΅Π½ создаваСмого элСмСнта xsl:attribute name Имя создаваСмого Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° namespace ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΠ΅Π½ создаваСмого Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° xsl:processing-instruction name Имя Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ прилоТСния инструкции ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ xsl:number format Π€ΠΎΡ€ΠΌΠ°Ρ‚ Π½ΠΎΠΌΠ΅Ρ€Π° lang Π―Π·Ρ‹ΠΊΠΎΠ²ΠΎΠΉ контСкст Π½ΠΎΠΌΠ΅Ρ€Π° letter-value Врадиционная ΠΈΠ»ΠΈ алфавитная буквСнная нумСрация grouping-separator Π‘ΠΈΠΌΠ²ΠΎΠ»-Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ Π³Ρ€ΡƒΠΏΠΏ Ρ†ΠΈΡ„Ρ€ Π½ΠΎΠΌΠ΅Ρ€Π° grouping-size Π Π°Π·ΠΌΠ΅Ρ€ Π³Ρ€ΡƒΠΏΠΏΡ‹ Ρ†ΠΈΡ„Ρ€ Π½ΠΎΠΌΠ΅Ρ€Π° xsl:sort lang Π―Π·Ρ‹ΠΊΠΎΠ²ΠΎΠΉ контСкст сортировки data-type Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… сортировки order ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ сортировки case-order Π‘Ρ‚Π°Ρ€ΡˆΠΈΠ½ΡΡ‚Π²ΠΎ прописных ΠΈ строчных символов ΠΏΡ€ΠΈ сортировкС

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ динамичСски (ΠΈΠ½Ρ‹ΠΌΠΈ словами β€” Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒΡΡ нСпосрСдствСнно Π²ΠΎ врСмя выполнСния шаблона) Π½Π΅ Ρ‚Π°ΠΊ Π²Π΅Π»ΠΈΠΊ. Π’ частности, стандартными способами Π² XSLT Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅.

β–‘ Π’Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ шаблон динамичСски: Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ name элСмСнта xsl:call-template Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄Π°Π½ Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ шаблон значСния.

β–‘ Π”инамичСски ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ примСнСния шаблонов (Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ mode элСмСнта xsl:apply-templates).

β–‘ Π’Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ элСмСнтами xsl:copy-of ΠΈ xsl:value-of Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π·Π°Ρ€Π°Π½Π΅Π΅ нСизвСстного Π²ΠΈΠ΄Π°.

β–‘ Π”Π°Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ ΠΈΠΌΠ΅Π½Π°, вычисляСмыС Π²ΠΎ врСмя выполнСния прСобразования.

Бписок ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Π΅Ρ‰Π΅ Π΄ΠΎΠ»Π³ΠΎ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ±Ρ‰ΠΈΠΌ свойством этих ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ выходящСго элСмСнта, Π½ΠΎ ΠΎΠ½ΠΈ Π½Π΅ ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ влияния Π½Π° сам Ρ…ΠΎΠ΄ выполнСния прСобразования.

Π“Π»Π°Π²Π° 5

Π¨Π°Π±Π»ΠΎΠ½Π½Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡ€ ΠΏΡ€Π°Π²ΠΈΠ»

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… Π³Π»Π°Π²Π°Ρ… ΠΌΡ‹ ΡƒΠΆΠ΅ упомянули ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² XSLT состоит Π½Π΅ ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ дСйствий, Π° ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹Ρ… ΠΏΡ€Π°Π²ΠΈΠ», ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ свою Ρ‡Π°ΡΡ‚ΡŒ XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. Π­Ρ‚Π° Π³Π»Π°Π²Π° Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ посвящСна вопросам создания ΠΈ использования ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹Ρ… ΠΏΡ€Π°Π²ΠΈΠ», ΠΎΠ΄Π½Π°ΠΊΠΎ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΌΡ‹ приступим ΠΊ ΠΈΡ… Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ, Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ ΠΏΠΎΡΡΠ½ΠΈΡ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΆΠ΅ всС-Ρ‚Π°ΠΊΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π°, Π° Π½Π΅ дСйствия.

Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ структуры XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² (Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… ΠΎΠ΄Π½ΠΎΠΉ логичСской схСмС) ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹, Ρ‡Ρ‚ΠΎ созданиС ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, которая выполняла Π±Ρ‹ ΠΈΡ… ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅, являСтся ΠΎΡ‡Π΅Π½ΡŒ слоТной Π·Π°Π΄Π°Ρ‡Π΅ΠΉ. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ‚Π΅Ρ… ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Ρ… элСмСнтов, Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΈΠ»ΠΈ отсутствиС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ², Π΄Π° ΠΈ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΡΡ‚ΡŒ самой структуры Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ приводят ΠΊ ΡΠΊΡΠΏΠΎΠ½Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΡŽ количСства ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² вСтвлСния, Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° становится большой, слоТной ΠΈ малопонятной.

Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя само ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ простым. НС понимая, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ, Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΌΠΎΠΆΠ½ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, ΠΊΠ°ΠΊ слСдуСт ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΈΠ· Π΅Π³ΠΎ частСй.

ВслСдствиС этого, язык XSLT Π±Ρ‹Π» создан Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ: вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ дСйствий, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π² XSLT Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π° прСобразования. КаТдоС ΠΈΠ· этих ΠΏΡ€Π°Π²ΠΈΠ» ΠΌΠΎΠΆΠ΅Ρ‚ Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ обСспСчивая ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² сколь ΡƒΠ³ΠΎΠ΄Π½ΠΎ слоТной структуры.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ шаблонного ΠΏΡ€Π°Π²ΠΈΠ»Π°

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ xsl:template

Бинтаксис этого элСмСнта ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π½ΠΈΠΆΠ΅:

<xsl:template

 match="ΠΏaΡ‚Ρ‚Π΅Ρ€Π½"

 name="имя"

 priority="число"

 mode="имя">

 <!-- Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅: нСсколько элСмСнтов xsl:param, Ρ‚Π΅Π»ΠΎ шаблона -->

</xsl:template>

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня xsl:template опрСдСляСт Π² ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ шаблонноС ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΈΠ»ΠΈ просто шаблон. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ xsl:template ΠΈΠΌΠ΅Π΅Ρ‚ всСго Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°, смысл ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΡ‹ ΠΊΡ€Π°Ρ‚ΠΊΠΎ опишСм Π½ΠΈΠΆΠ΅.

Атрибут match Π·Π°Π΄Π°Π΅Ρ‚ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ β€” ΠΎΠ±Ρ€Π°Π·Π΅Ρ† ΡƒΠ·Π»ΠΎΠ² Π΄Π΅Ρ€Π΅Π²Π°, для прСобразования ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… слСдуСт ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ этот шаблон.

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

<xsl:template match="bold">

 <b><xsl:value-of select="."/></b>

</xsl:template>

Π’ этом ΠΏΡ€Π°Π²ΠΈΠ»Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ match Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ элСмСнтов bold β€” Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π½Π° элСмСнты b. Π¨Π°Π±Π»ΠΎΠ½Ρ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ match, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ инструкции xsl:apply-templates.