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

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

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

<xsl:stylesheet

 version="1.0"

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

 xmlns:a="uri:a"

 xmlns:b="uri:b">


 <xsl:variable name="a:elementcount" select="count(//a:*)"/>

 <xsl:variable name="b:elementcount" select="count(//b:*)"/>

 ...

</xsl:stylesheet>

Π’ этом ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ количСство элСмСнтов Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… пространству ΠΈΠΌΠ΅Π½ Π°, Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ a:elementcount, Π° пространству ΠΈΠΌΠ΅Π½ b β€” Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ b:elementcount.

ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ прСфикса Π² XPath-выраТСниях Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ прСфикс ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ прСфикса ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ прСфикс являСтся Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ со всСми Π²Ρ‹Ρ‚Π΅ΠΊΠ°ΡŽΡ‰ΠΈΠΌΠΈ послСдствиями. НапримСр, Ссли шаблон

<xsl:template match="counts">

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

 <xsl:text>&#xA;</xsl:text>

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

</xsl:template>

Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π΅Π½, Π² шаблонС

<xsl:template match="counts" xmlns="uri:a">

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

 <xsl:text>&#xA;</xsl:text>

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

</xsl:template>

процСссор Π½Π΅ смоТСт Π½Π°ΠΉΡ‚ΠΈ объявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ $elementcount, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠ΅ имя объявлСнной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ состоит ΠΈΠ· URI пространства ΠΈΠΌΠ΅Π½ "uri:Π°" ΠΈ локальной части ΠΈΠΌΠ΅Π½ΠΈ elementcount, Π° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠ΅ имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ elementcount состоит ΠΈΠ· Π½ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ URI ΠΈ локальной части elementcount. Π˜Π½Ρ‹ΠΌΠΈ словами, эти ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ Ρ€Π°Π·Π½Ρ‹ΠΌ пространствам.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Π±ΡƒΠ»Π΅Π²Ρ‹ΠΌΠΈ значСниями

XPath ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²Π΅ логичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ β€” and (логичСскоС "ΠΈ") ΠΈ or (логичСскоС "ΠΈΠ»ΠΈ"). Π’ XPath Π½Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° логичСского отрицания, вмСсто Π½Π΅Π³ΠΎ примСняСтся функция not, которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ "истину", Ссли Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ Π±Ρ‹Π»Π° "лоТь" ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚.

ЛогичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π² XPath Π±ΠΈΠ½Π°Ρ€Π½Ρ‹, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π΄Π²Π° ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° Π±ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Если ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΈΠΏ, Ρ‚ΠΎ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ ΠΊ Π±ΡƒΠ»Π΅Π²Ρ‹ΠΌ значСниям.

ЛогичСскиС вычислСния Π² XPath Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ стандартны. ΠœΡ‹ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΈΡ… для справки Π² Ρ‚Π°Π±Π». 6.2.


Π’Π°Π±Π»ΠΈΡ†Π° 6.2. ВычислСниС логичСских Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ A B A or Π’ A and Π’ false false false false false true true false true false true false true true true true

Как ΠΈ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… языках, опСрация "ΠΈ" (and) ΡΡ‚Π°Ρ€ΡˆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ "ΠΈΠ»ΠΈ" (or). НапримСр, Ρ‚Π°ΠΊΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ A and B or C and D or E эквивалСнтно Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ (A and Π’) or (Π‘ and D) or E.

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ синтаксичСскиС ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΉ логичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ XPath. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ "ΠΈΠ»ΠΈ" соотвСтствуСт продукция OrExpr, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ "ΠΈ" β€” продукция AndExpr.

[XP21] OrExpr  ::= AndExpr | OrExpr 'or' AndExpr

[XP22] AndExpr ::= EqualityExpr | AndExpr 'and' EqualityExpr

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с числами

ΠŸΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ арифмСтичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² XPath довольно ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½. К Π½ΠΈΠΌ относится слоТСниС, Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅, ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ унарная опСрация отрицания, которая мСняСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° Π½Π° ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠ΅. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, числа ΠΌΠΎΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² сравнСния.

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

АрифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ XPath свСдСны Π² Ρ‚Π°Π±Π». 6.3.


Π’Π°Π±Π»ΠΈΡ†Π° 6.3. АрифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² XPath-выраТСниях

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ Бинтаксис Π‘Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ A + B Π’Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ A - B Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ A * B Π”Π΅Π»Π΅Π½ΠΈΠ΅ A div B ΠžΡΡ‚Π°Ρ‚ΠΎΠΊ дСлСния A mod B Π£Π½Π°Ρ€Π½ΠΎΠ΅ ΠΎΡ‚Ρ€ΠΈΡ†Π°Π½ΠΈΠ΅ - A

Если ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹, значСния, ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ числами, ΠΎΠ½ΠΈ сначала приводятся ΠΊ этому Ρ‚ΠΈΠΏΡƒ, Π° ΡƒΠΆ Π·Π°Ρ‚Π΅ΠΌ производится опСрация. НапримСр, ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ½ΠΎΠΆΠ°Ρ‚ΡŒ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹:

'2' * '2' β†’ 4

АрифмСтичСскиС дСйствия Π² XPath Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ называСтся, "ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ", Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ стандартным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. АрифмСтика XPath основываСтся Π½Π° стандартС IEEE 754, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» использован ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… распространСнных языках программирования, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² Java. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉ, слСдуСт лишь ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ дСлСния, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² Ρ€Π°Π·Π½Ρ‹Ρ… языках ΠΎΠ½ΠΈ ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ дСйствия ΠΈ ΠΏΠΎΡ‚ΠΎΠΌΡƒ Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΏΡƒΡ‚Π°Ρ‚ΡŒΡΡ.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ div Π΄Π΅Π»ΠΈΡ‚ свой ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ. Π­Ρ‚ΠΎ Π½Π΅ цСлочислСнноС Π΄Π΅Π»Π΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… языках, div осущСствляСт Π΄Π΅Π»Π΅Π½ΠΈΠ΅ чисСл с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ div Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ дСлСния "/" Π² Ρ‚Π°ΠΊΠΈΡ… языках, ΠΊΠ°ΠΊ Java, Π‘++ ΠΈ Pascal.

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

3.2 div 2.5 β†’ 1.28

3.2 div -2.5 β†’ -1.28

-3.2 div -2.5 β†’ 1.28

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ mod Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ остаток дСлСния ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ своСго ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² Ρ€Π°Π·Π½Ρ‹Ρ… языках остаток дСлСния вычисляСтся ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ, Π»Π΅Π³Ρ‡Π΅ всСго Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡΡΠ½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² XPath Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

3.2 mod 2 β†’ 1.2

3.2 mod -2 β†’ 1.2

-3.2 mod 2 β†’ -1.2

-3.2 mod -2 β†’ -1.2

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ mod Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ "%" Π² Ρ‚Π°ΠΊΠΈΡ… языках, ΠΊΠ°ΠΊ Java ΠΈ ECMAScript.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ остатка ΠΎΡ‚ дСлСния ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Π·Π½Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΈ Π΄Π΅Π»ΠΈΠΌΠΎΠ΅. Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π±Π΅Π· остатка, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ число A ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Ρ†Π΅Π»ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° число B Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ (A - (A mod B)) div B.

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

(3.2 - (3.2 mod 2)) div 2 β†’ 1

Π’ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ ошибок слСдуСт Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°ΠΊ вычитания Π² арифмСтичСских опСрациях. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ синтаксис XML Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ символ "-" Π² ΠΈΠΌΠ΅Π½Π°Ρ… элСмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π² выраТСниях Π² составС ΠΏΡƒΡ‚Π΅ΠΉ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ. НапримСр, A - B ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ€Π°Π·Π½ΠΎΡΡ‚ΡŒ A ΠΈ B, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ A-B Π±ΡƒΠ΄Π΅Ρ‚ воспринято, ΠΊΠ°ΠΊ имя 'A-B'. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ рСкомСндуСтся Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒ Π·Π½Π°ΠΊ минуса ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ.

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΈ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ с арифмСтичСскими опСрациями.

Π£Π½Π°Ρ€Π½ΠΎΠΌΡƒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Π½ΠΈΡŽ соотвСтствуСт продукция UnaryExpr. Как ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ вСрсии языка это β€” СдинствСнная унарная опСрация (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ опСрация ΠΎΠ΄Π½ΠΎΠ³ΠΎ элСмСнта).

[XP27] UnaryExpr ::= UnionExpr | '-' UnaryExpr

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ это ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, раскрыв Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ

UnaryExpr ::= '-' * UnionExpr

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΡƒΠ½Π°Ρ€Π½ΠΎΠ΅ ΠΎΡ‚Ρ€ΠΈΡ†Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ нСсколько Ρ€Π°Π·:

------5 β†’ 5

УмноТСнию, дСлСнию ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΡŽ остатка дСлСния соотвСтствуСт ΠΎΠ΄Π½Π° продукция MultiplicativeExpr:

[XP26] MultiplicativeExpr ::= UnaryExpr

                              | MultiplicativeExpr MultiplyOperator UnaryExpr

                              | MultiplicativeExpr 'div' UnaryExpr

                              | MultiplicativeExpr 'mod' UnaryExpr

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ умноТСния вынСсСн Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ:

[XP34] MultiplyOperator ::= '*'

БлоТСнию ΠΈ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΡŽ соотвСтствуСт ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ AdditiveExpr:

[XP25] AdditiveExpr ::= MultiplicativeExpr

                        | AdditiveExpr '+' MultiplicativeExpr

                        | AdditiveExpr '-' MultiplicativeExpr

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

XPath позволяСт ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ числа ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², пСрСчислСнных Π² Ρ‚Π°Π±Π». 6.4.


Π’Π°Π±Π»ΠΈΡ†Π° 6.4. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ сравнСния

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = Π Π°Π²Π½ΠΎ != НС Ρ€Π°Π²Π½ΠΎ < МСньшС > Π‘ΠΎΠ»ΡŒΡˆΠ΅ <= МСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ (Π½Π΅ большС) >= Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ (Π½Π΅ мСньшС)

XPath-выраТСния Ρ‡Π°Ρ‰Π΅ всСго ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² значСниях Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ², символ "<" Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π² соотвСтствии с синтаксисом XML ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСльзя. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ сравнСния "мСньшС" ("<") ΠΈ "Π½Π΅ большС" ("<=") Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ с использованиСм сущностСй. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ "мСньшС" ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ записан ΠΊΠ°ΠΊ "&lt;", Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ "Π½Π΅ большС" ΠΊΠ°ΠΊ "&lt;=".