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

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

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

β–‘ "html" β€” шаг Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ элСмСнтов html;

β–‘ "/" β€” Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ шагов Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ;

β–‘ "head" β€” шаг Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ элСмСнтов head;

β–‘ "/" β€” Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ шагов Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ;

β–‘ "title" β€” шаг Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ элСмСнтов title.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· шагов отсчитываСтся ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ, шаг "html" Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ элСмСнты html, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠ΅ΡΡ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌΠΈ элСмСнтами ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ ΡƒΠ·Π»Π° ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. ПошаговоС вычислСниС этого ΠΏΡƒΡ‚ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

β–‘ "/" β€” ΠΏΡƒΡ‚ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΡƒΠ·Π΅Π»;

β–‘ "/html" β€” ΠΏΡƒΡ‚ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ элСмСнты html ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ ΡƒΠ·Π»Π°;

β–‘ "/html/head" β€” ΠΏΡƒΡ‚ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ элСмСнты head элСмСнтов html, находящихся Π² ΠΊΠΎΡ€Π½Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°;

β–‘ "/html/head/title" β€” ΠΏΡƒΡ‚ΡŒ, Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‰ΠΈΠΉ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ элСмСнты title субэлСмСнтов head элСмСнтов html, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ находятся Π² ΠΊΠΎΡ€Π½Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°.

МоТно Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΡƒΡŽ аналогию с Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΌΠΈ систСмами: ΠΏΡƒΡ‚ΠΈ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° ΠΏΡƒΡ‚ΠΈ Π² структурС ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ². ΠœΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅ΠΌ, ΠΏΡƒΡ‚ΠΈ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΌΠΎΡ‰Π½Π΅Π΅:

β–‘ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· шагов Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΡƒΠ·Π»Ρ‹ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ ΡƒΠ·Π»Ρ‹, ΡƒΠ·Π»Ρ‹- ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΈ ΠΈΠ»ΠΈ, Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, ΡƒΠ·Π»Ρ‹-ΠΏΡ€Π΅Π΄ΠΊΠΈ ΠΈΠ»ΠΈ братскиС ΡƒΠ·Π»Ρ‹;

β–‘ Π²Ρ‹Π±ΠΎΡ€ ΡƒΠ·Π»ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ ΠΈΠ»ΠΈ принадлСТности ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ пространству ΠΈΠΌΠ΅Π½;

β–‘ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ΅ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС мноТСство ΠΌΠΎΠΆΠ΅Ρ‚ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΎΠΌ (Π² ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ мноТСствС останутся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ ΠΈΠ· Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… ΡƒΠ·Π»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‚ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΈΠ· логичСских условий-ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ΠΎΠ²).

ΠŸΡƒΡ‚ΠΈ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ срСдством получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, содСрТащСйся Π² ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ…. НСваТно, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ мноТСства ΡƒΠ·Π»ΠΎΠ², нСявноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² позволяСт спокойно Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ выраТСния Π²ΠΈΠ΄Π°:

data/a + data/b

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ data/a ΠΈ data/b ΡΠ²Π»ΡΡŽΡ‚ΡΡ мноТСствами ΡƒΠ·Π»ΠΎΠ², Π² арифмСтичСском Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ нСявно ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Ρ‹ ΠΊ числСнному Ρ‚ΠΈΠΏΡƒ. Π’ΠΎ ΠΆΠ΅ самоС касаСтся строкового ΠΈ Π±ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°.

Π€ΠΈΠ»ΡŒΡ‚Ρ€ΡƒΡŽΡ‰ΠΈΠ΅ выраТСния

Π€ΠΈΠ»ΡŒΡ‚Ρ€ΡƒΡŽΡ‰ΠΈΠ΅ выраТСния Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Π΄Π²Π΅ основныС Π·Π°Π΄Π°Ρ‡ΠΈ:

β–‘ Π²Ρ‹Π±ΠΎΡ€ ΠΈΠ· вычислСнного мноТСства ΡƒΠ·Π»ΠΎΠ² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ подмноТСства Π² соотвСтствии с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ логичСскими критСриями-ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Π°ΠΌΠΈ;

β–‘ Π²Ρ‹Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΏΡƒΡ‚Π΅ΠΉ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ·Π»ΠΎΠ² Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ мноТСства.

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

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ nodeset присвоСно Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ мноТСство ΡƒΠ·Π»ΠΎΠ². Π—Π°Π΄Π°Ρ‡ΠΈ Ρ‚ΠΈΠΏΠ° "Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΡƒΠ·Π΅Π» этого мноТСства" ΠΈΠ»ΠΈ "Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΡƒΠ·Π΅Π» этого мноТСства" ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅, любой Π²Ρ‹Π±ΠΎΡ€ ΡƒΠ·Π»ΠΎΠ² этого мноТСства Π² соотвСтствии с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ логичСскими критСриями ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ. Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ $nodeset[1] Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π² порядкС просмотра Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΡƒΠ·Π΅Π» мноТСства $nodeset; Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ $nodeset[position() mod 2 = 0] Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚ Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ ΡƒΠ·Π»Ρ‹ мноТСства $nodeset. Π—Π΄Π΅ΡΡŒ "[1]" ΠΈ "[position() mod 2 = 0]" ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Π°ΠΌΠΈ β€” логичСскими выраТСниями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΡƒΡŽΡ‚ мноТСство.

Π€ΠΈΠ»ΡŒΡ‚Ρ€ΡƒΡŽΡ‰ΠΈΠ΅ выраТСния Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ ΠΏΡƒΡ‚ΠΈ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ·Π»ΠΎΠ² Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΡƒΠ΅ΠΌΡ‹Ρ… мноТСств.

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

<data>

 <string>

  <value>a</value>

  <value>b</value>

  <value>c</value>

 </string>

 <number>

  <value>1</value>

  <value>2</value>

  <value>3</value>

 </number>

</data>

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ дСмонстрируСт использованиС ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡƒΡ‚Π΅ΠΉ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Π² Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΡƒΡŽΡ‰ΠΈΡ… выраТСниях:

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

<xsl:stylesheet

 version="1.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Π’ransform">


 <xsl:template match="data">

  <values>

   <xsl:copy-of select="(string | number)/value"/>

  </values>

 </xsl:template>

</xsl:stylesheet>

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

<values>

 <value>a</value>

 <value>b</value>

 <value>c</value>

 <value>1</value>

 <value>2</value>

 <value>3</value>

</values>

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ values выходящСго Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° содСрТит мноТСство, ΡΠ²Π»ΡΡŽΡ‰Π΅Π΅ΡΡ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ вычислСния выраТСния (string | number)/value. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ мноТСство элСмСнтов value, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… элСмСнтам string ΠΈΠ»ΠΈ number.

ОбъСдинСниС мноТСств

ЕдинствСнная опСрация Π½Π°Π΄ мноТСствами, которая ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° Π² XSLT, β€” это опСрация объСдинСния. Если $nodeset1 ΠΈ $nodeset2 β€” Π΄Π²Π° мноТСства ΡƒΠ·Π»ΠΎΠ², Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ вычислСния

$nodeset1 | $nodeset2

Π±ΡƒΠ΄Π΅Ρ‚ мноТСство ΡƒΠ·Π»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ хотя Π±Ρ‹ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ· этих мноТСств.

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ Π²ΠΎ мноТСство ΡƒΠ·Π»ΠΎΠ², ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹ объСдинСния сами всСгда Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ мноТСствами. Π’ΠΎ Π΅ΡΡ‚ΡŒ, Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΈΠ΄Π°:

'Π°' | body/a

Π½Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ тСкстовый ΡƒΠ·Π΅Π» "Π°" ΠΊ мноТСству элСмСнтов Π°, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… элСмСнту body β€” ΠΎΠ½ΠΎ просто Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌ.

АрифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

Π§Π΅Ρ‚Ρ‹Ρ€Π΅ основныС Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ β€” "+", "-", "div", "mod" ΠΈ пятая, унарная опСрация отрицания "-" ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π² XSLT основныС арифмСтичСскиС дСйствия. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ любой ΠΈΠ· Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ Π² числСнный Ρ‚ΠΈΠΏ, Π² качСствС ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² арифмСтичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Ρ‹Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΠ· строки Π±ΡƒΠ»Π΅Π²ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅:

'0.5' - true() β†’ -0.5

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ остороТно ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ со Π·Π½Π°ΠΊΠΎΠΌ "-". ИмСна элСмСнтов ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ этот Π·Π½Π°ΠΊ ΠΈ поэтому Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ first-last Π±ΡƒΠ΄Π΅Ρ‚ воспринято Π½Π΅ ΠΊΠ°ΠΊ Ρ€Π°Π·Π½ΠΎΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ элСмСнтов first ΠΈ last, Π° ΠΊΠ°ΠΊ ΠΏΡƒΡ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ элСмСнтов с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ "first-last". Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΡ… казусов, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ всСгда слСдуСт Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ:

first - last

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сравнСния

Π’ XSLT ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΡˆΠ΅ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² сравнСния:

β–‘ "=" β€” Ρ€Π°Π²Π½ΠΎ;

β–‘ "!=" β€” Π½Π΅ Ρ€Π°Π²Π½ΠΎ;

β–‘ "<" мСньшС;

β–‘ ">" большС;

β–‘ "<=" мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ (Π½Π΅ большС);

β–‘ ">=" большС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ (Π½Π΅ мСньшС).

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ этих сравнСний всСгда ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΡƒΠ»Π΅Π²Ρ‹ΠΉ Ρ‚ΠΈΠΏ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ сравнСниС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ истинным, Π»ΠΈΠ±ΠΎ Π»ΠΎΠΆΠ½Ρ‹ΠΌ. НСсмотря Π½Π° внСшнюю ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ этих ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠ°ΠΊ мноТСство ΡƒΠ·Π»ΠΎΠ², Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‡Π΅Ρ‚ΠΊΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ сравнСний довольно слоТным. ΠœΡ‹ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ Π΅Π³ΠΎ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ Π² спСцификации, снабдив ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΌΠΈ коммСнтариями ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сравнСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π² спСцификации Π² Ρ‚Ρ€ΠΈ этапа:

β–‘ ΡΠ½Π°Ρ‡Π°Π»Π° сравнСниС, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‚ мноТСства ΡƒΠ·Π»ΠΎΠ², опрСдСляСтся Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… сравнСния Π±ΠΎΠ»Π΅Π΅ простых Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…;

β–‘ Π·Π°Ρ‚Π΅ΠΌ для простых Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ равСнство ("=") ΠΈ нСравСнство ("!=");

β–‘ Π½Π°ΠΊΠΎΠ½Π΅Ρ†, для простых Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ сравнСния "<", "<=", ">", ">=".

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅, хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ являСтся мноТСством ΡƒΠ·Π»ΠΎΠ², опрСдСляСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

β–‘ Π΅ΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² являСтся мноТСством ΡƒΠ·Π»ΠΎΠ², Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΡƒΠ»Π΅Π²Ρ‹ΠΉ Ρ‚ΠΈΠΏ, сравнСниС Π±ΡƒΠ΄Π΅Ρ‚ истинным Ρ‚ΠΎΠ³Π΄Π° ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° истинным Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ сравнСния мноТСства ΡƒΠ·Π»ΠΎΠ², ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊ Π±ΡƒΠ»Π΅Π²ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ ΠΈ самого Π±ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°;

β–‘ Π΅ΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² являСтся мноТСством ΡƒΠ·Π»ΠΎΠ², Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ числСнный Ρ‚ΠΈΠΏ, сравнСниС Π±ΡƒΠ΄Π΅Ρ‚ истинным Ρ‚ΠΎΠ³Π΄Π° ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π²ΠΎ мноТСствС ΡƒΠ·Π»ΠΎΠ² найдСтся Ρ‚Π°ΠΊΠΎΠΉ ΡƒΠ·Π΅Π», Ρ‡Ρ‚ΠΎ сравнСниС тСкстового значСния этого ΡƒΠ·Π»Π°, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊ числу, ΠΈ самого числСнного ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ истинным;

β–‘ Π΅ΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² являСтся мноТСством ΡƒΠ·Π»ΠΎΠ², Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ строковый Ρ‚ΠΈΠΏ, сравнСниС Π±ΡƒΠ΄Π΅Ρ‚ истинным Ρ‚ΠΎΠ³Π΄Π° ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π²ΠΎ мноТСствС ΡƒΠ·Π»ΠΎΠ² найдСтся Ρ‚Π°ΠΊΠΎΠΉ ΡƒΠ·Π΅Π», Ρ‡Ρ‚ΠΎ сравнСниС Π΅Π³ΠΎ тСкстового значСния ΠΈ самого строкового ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ истинным;

β–‘ Π΅ΡΠ»ΠΈ ΠΎΠ±Π° ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° ΡΠ²Π»ΡΡŽΡ‚ΡΡ мноТСствами ΡƒΠ·Π»ΠΎΠ², ΠΈΡ… сравнСниС Π±ΡƒΠ΄Π΅Ρ‚ истинным Ρ‚ΠΎΠ³Π΄Π° ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° найдСтся ΡƒΠ·Π΅Π» Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ мноТСствС ΠΈ ΡƒΠ·Π΅Π» Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ мноТСствС, Ρ‚Π°ΠΊΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΈΡ… сравнСниС Π±ΡƒΠ΄Π΅Ρ‚ истинным.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ, Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ входящий Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ (листинг 3.25).

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

<values>

 <string>0.5</string>

 <string>50%</string>