<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>
</xsl:text>
<xsl:value-of select="$b:elementcount"/>
</xsl:template>
Π±ΡΠ΄Π΅Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ΅Π½, Π² ΡΠ°Π±Π»ΠΎΠ½Π΅
<xsl:template match="counts" xmlns="uri:a">
<xsl:value-of select="$elementcount"/>
<xsl:text>
</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 ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅Π»ΡΠ·Ρ. ΠΠΎΡΡΠΎΠΌΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ "ΠΌΠ΅Π½ΡΡΠ΅" ("<") ΠΈ "Π½Π΅ Π±ΠΎΠ»ΡΡΠ΅" ("<=") Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉ. ΠΠΏΠ΅ΡΠ°ΡΠΎΡ "ΠΌΠ΅Π½ΡΡΠ΅" ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°ΠΏΠΈΡΠ°Π½ ΠΊΠ°ΠΊ "<", Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ "Π½Π΅ Π±ΠΎΠ»ΡΡΠ΅" ΠΊΠ°ΠΊ "<=".