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

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

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

<xsl:processing-instruction name="xml-stylesheet">

 <xsl:text>href="style.xsl" type="text/xsl"</xsl:text>

</xsl:processing-instruction>

Π Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π² Π²ΠΈΠ΄Π΅:

<?xml-stylesheet href="style.xsl" type="text/xsl"?>

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ xsl:processing-instruction Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΡŽ XML, нСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния синтаксиса (Π½ΠΎ Π½Π΅ сСмантики) ΠΎΠ½Π° ΠΈΠΌΠ΅Π΅Ρ‚ Ρ„ΠΎΡ€ΠΌΡƒ инструкции ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. Для Π²Ρ‹Π²ΠΎΠ΄Π° XML-Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ элСмСнт xsl:output.

ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΡƒΠ·Π»ΠΎΠ²

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² сСбя Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ созданиС Π½ΠΎΠ²Ρ‹Ρ…, Π½ΠΎ ΠΈ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΡƒΠ·Π»ΠΎΠ². Для этого ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ элСмСнты xsl:copy ΠΈ xsl:copy-of, использованиС ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π½ΠΎ Π½ΠΈΠΆΠ΅.

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

НиТС прСдставлСна синтаксичСская конструкция этого элСмСнта:

<xsl:copy

 use-attribute-sets = "Π½Π°Π±ΠΎΡ€Ρ‹ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ²">

 <!-- Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅: шаблон -->

</xsl:copy>

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ xsl:copy создаСт копию Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΡƒΠ·Π»Π° Π²Π½Π΅ зависимости ΠΎΡ‚ Π΅Π³ΠΎ Ρ‚ΠΈΠΏΠ°. ВмСстС с Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ ΡƒΠ·Π»ΠΎΠΌ Π² выходящСС Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠ·Π»Ρ‹ пространств ΠΈΠΌΠ΅Π½, ассоциированныС с Π½ΠΈΠΌ. Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ ΡƒΠ·Π»Ρ‹ ΠΈ ΡƒΠ·Π»Ρ‹ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² Π² выходящий Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π½Π΅ ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ.

Если xsl:copy ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для копирования ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ ΡƒΠ·Π»Π° ΠΈΠ»ΠΈ ΡƒΠ·Π΄Π° элСмСнта, Π² выходящСм Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ процСссор создаСт Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Π΄Π΅Ρ€Π΅Π²Π°, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ выполнСния шаблона, содСрТащСгося Π² xsl:copy.

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

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π² ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ element-count со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, Ρ€Π°Π²Π½Ρ‹ΠΌ количСству Π΅Π³ΠΎ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… элСмСнтов, Π° всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΡƒΠ·Π»Ρ‹ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ.

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

<Π°> text

 <b attr="value"/>

 <c/>

 <d>

  text

  <e/>

 </d>

</a>

Листинг 7.18. Π¨Π°Π±Π»ΠΎΠ½ прСобразования

<xsl:template match="@*|node()">

 <xsl:copy>

  <xsl:attribute name="element-count">

   <xsl:value-of select="count(*) "/>

  </xsl:attribute>

  <xsl:apply-templates select="@*|node()"/>

 </xsl:copy>

</xsl:template>

Листинг 7.19. Выходящий элСмСнт

<a element-count="3">

 text

 <b element-count="0" attr="value"/>

 <c element-count="0"/>

 <d element-count="1">

  text

  <e element-count="0"/>

 </d>

</a>

Если xsl:copy ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для создания Π² выходящСм Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ ΠΊΠΎΠΏΠΈΠΈ ΡƒΠ·Π»Π° элСмСнта, Π² Π½Π΅Π³ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° use-attribute-sets ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π½Π°Π±ΠΎΡ€Ρ‹ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² (см. Ρ€Π°Π·Π΄Π΅Π» "Π˜ΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π½Π°Π±ΠΎΡ€Ρ‹ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ²" Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Ρ‹).

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

ΠŸΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ пСрСписано Π² Π²ΠΈΠ΄Π΅

<xsl:attribute-set name="elements">

 <xsl:attribute name="element-count">

  <xsl:value-of select="count(*)"/>

 </xsl:attribute>

</xsl:attribute-set>


<xsl:template match="@*|node()">

 <xsl:copy use-attribute-sets="elements">

  <xsl:apply-templates select="@*|node()"/>

 </xsl:copy>

</xsl:template>

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ прСобразования Π±ΡƒΠ΄Π΅Ρ‚ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π΅Π½ выходящСму Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρƒ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΌΡƒ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ xsl:copy-of

Бинтаксис элСмСнта нСслоТСн:

<xsl:copy-of

 select="Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅"/>

ИспользованиС элСмСнта xsl:copy-of ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ использованию элСмСнта xsl:value-of Π·Π° Ρ‚Π΅ΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ xsl:copy-of ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ значСния выраТСния ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ ΠΊ строкС Π½Π΅ Π²ΠΎ всСх случаях. ПовСдСниС xsl:copy-of зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.

β–‘ Π•сли Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ вычислСния ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΡƒΠ»Π΅Π²Ρ‹ΠΉ, числовой ΠΈΠ»ΠΈ строковый Ρ‚ΠΈΠΏ, Ρ‚ΠΎ xsl:copy-of Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π΅Π³ΠΎ Π² Π²ΠΈΠ΄Π΅ тСкстового ΡƒΠ·Π»Π°. Π’ этом случаС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ xsl:copy-of Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½Π΅ отличаСтся ΠΎΡ‚ повСдСния элСмСнта xsl:value-of.

β–‘ Π•сли Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ вычислСния выраТСния являСтся мноТСство ΡƒΠ·Π»ΠΎΠ² (node-set), Ρ‚ΠΎ xsl:copy-of ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ Π² выходящий Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ всС ΡƒΠ·Π»Ρ‹ Π² порядкС просмотра Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° вмСстС с ΠΈΡ… ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°ΠΌΠΈ.

β–‘ Π•сли Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ вычислСния являСтся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Π΄Π΅Ρ€Π΅Π²Π°, Ρ‚ΠΎ ΠΎΠ½ копируСтся Π² выходящий Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π² Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

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

<values>

 <boolean>false</boolean>

 <string>text</string>

 <number>3.14</number>

 <node-set>

  <item>10</item>

  <item>20</item>

  <item>30</item>

 </node-set>

 <tree>

  text

  <root>

   text

   <branch>

    text

    <leaf/>

    <leaf/>

   </branch>

   <leaf/>

  </root>

 </tree>

</values>

Листинг 7.21. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅

<xsl:stylesheet

 version="1.0"

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


 <xsl:template match="/">

  <xsl:variable name="boolean" select="values/boolean='true'"/>

  <xsl:variable name="string" select="string(values/string)"/>

  <xsl:variable name="number" select="number(values/number)"/>

  <xsl:variable name="node-set" select="values/node-set/*"/>

  <xsl:variable name="tree">

   <xsl:copy-of select="values/tree/*"/>

  </xsl:variable>


  <xsl:text>&#10;Value-of boolean:</xsl:text>

  <xsl:value-of select="$boolean"/>

  <xsl:text>&#10;Copy-of boolean:</xsl:text>

  <xsl:copy-of select="$boolean"/>


  <xsl:text>&#10;Value-of string:</xsl:text>

  <xsl:value-of select="$string"/>

  <xsl:text>&#10;Copy-of string:</xsl:text>

  <xsl:copy-of select="$string"/>


  <xsl:text>&#10;Value-of number:</xsl:text>

  <xsl:value-of select="$number"/>

  <xsl:text>&#10;Copy-of number:</xsl:text>

  <xsl:copy-of select="$number"/>


  <xsl:text>&#10;Value-of node-set:</xsl:text>

  <xsl:value-of select="$node-set"/>

  <xsl:text>&#10;Copy-of node-set:</xsl:text>

  <xsl:copy-of select="$node-set"/>


  <xsl:text>&#10;Value-of tree:</xsl:text>

  <xsl:value-of select="$tree"/>

  <xsl:text>&#10;Copy-of tree:</xsl:text>

  <xsl:copy-of select="$tree"/>

 </xsl:template>


</xsl:stylesheet>

Листинг 7.22. Выходящий Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚

Value-of boolean:false

Copy-of boolean:false

Value-of string:text

Copy-of string:text

Value-of number:3.14

Copy-of number:3.14

Value-of node-set:10

Copy-of node-set:<item>10</item><item>20</item><item>30</item>

Value-of tree:

  text


   text


Copy-of tree:<root>

  text

  <branch>

   text

   <leaf/>

   <leaf/>

  </branch>

  <leaf/>

 </root>

Условная ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°

Π’ XSLT ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π΄Π²Π΅ инструкции, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΡƒΡΠ»ΠΎΠ²Π½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ β€” xsl:if ΠΈ xsl:choose. Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ xsl:if позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ простыС условия Ρ‚ΠΈΠΏΠ° "Ссли-Ρ‚ΠΎ", Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ xsl:choose создаСт Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡƒΡŽ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ для Π²Ρ‹Π±ΠΎΡ€Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ΡΡ возмоТностСй Π² зависимости ΠΎΡ‚ выполнСния Ρ‚Π΅Ρ… ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Ρ… условий.

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

Бинтаксис элСмСнта ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

<xsl:if

 test="Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅">

 <!-- Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅: шаблон -->

</xsl:if>

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ xsl:if являСтся ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΌ условным ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ Π² XSLT. Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, содСрТащССся Π² ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π΅ test, вычисляСтся ΠΈ приводится ΠΊ Π±ΡƒΠ»Π΅Π²ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ. Π’ Ρ‚ΠΎΠΌ ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠΌ случаС, Ссли Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true, процСссор выполняСт шаблон, содСрТащийся Π² xsl:if.

ВслСдствиС Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ Π² XML Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ символы (Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ "<" ΠΈ "&"), ΠΈΡ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ сущностями. Π’ особСнности это касаСтся сравнСния чисСл Ρ‚ΠΈΠΏΠ° "мСньшС"; объявлСниС Π²ΠΈΠ΄Π°

<xsl:if test="a < b"/>

Π±ΡƒΠ΄Π΅Ρ‚ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния синтаксиса XML Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌ. ВмСсто Π½Π΅Π³ΠΎ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эквивалСнтноС объявлСниС

<xsl:if test="a &lt; b"/>

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ символ "большС" (">") Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒΡŽ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. Однако ΠΈΠ· сообраТСний Сдинообразия принято Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈ Π΅Π³ΠΎ.

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

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΠΌΡ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Π΅ΠΌ список Π½Π°Π·Π²Π°Π½ΠΈΠΉ

<list active="Bravo">

 <item>Alpha</item>