β‘ ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π½Π°Π»ΠΈΡΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° XSLT-ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°. ΠΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΠΆΠΈΠ΄Π°ΡΡ, ΡΡΠΎ Π»ΡΠ±ΠΎΠΉ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΡΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΌΠΈ Π½Π° Π»ΡΠ±ΠΎΠΌ ΡΠ·ΡΠΊΠ΅, ΡΠΎ Π΅ΡΡΡ, ΠΈΠ½Π°ΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°ΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΊ ΡΡΡΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ ΠΈΠ»ΠΈ, Π² Π»ΡΡΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅, Π³ΡΡΠΏΠΏΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ².
β‘ Π ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΡΠ°ΠΌ XSLT Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ ΡΡΡΠ΅ΠΊΡΠΎΠ², ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π½Π΅ ΠΎΠ±ΡΠ·Π°Π½Ρ. ΠΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ, Π² ΠΊΠΎΡΠΎΡΡΡ Π΅ΡΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΠ±ΠΎΡΠ½ΡΠΌΠΈ ΡΡΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΠΌΠΎΠ³ΡΡ ΠΈΠ·-Π·Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π²Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π° ΡΠ°Π·Π½ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°Ρ ΡΠ°Π·Π½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
ΠΡΠ°ΠΊ, Π²ΠΎΠΏΡΠΎΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π½Π΅Ρ β ΡΡΠΎ Π²ΠΎΠΏΡΠΎΡ "ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΠΏΡΠΎΡΠΈΠ² ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡΠΈ", ΠΈ, Ρ ΠΎΡΡ Π΅Π³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠ΅Π³Π΄Π° Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ, ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΈ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΎΠ±ΡΠΈΠ΅ ΠΊΡΠΈΡΠ΅ΡΠΈΠΈ ΠΎΡΠ΅Π½ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅ΠΌ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ (ΡΠ°Π±Π». 10.1).
Π’Π°Π±Π»ΠΈΡΠ° 10.1. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ: ΠΊΡΠΈΡΠ΅ΡΠΈΠΈ Π·Π° ΠΈ ΠΏΡΠΎΡΠΈΠ²
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΈΡ, Π΅ΡΠ»ΠΈ: ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π½Π΅ ΡΡΠΎΠΈΡ, Π΅ΡΠ»ΠΈ: ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π±ΡΠ΄ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π½Π° Π·Π°ΡΠ°Π½Π΅Π΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ΅ ΠΈΠ»ΠΈ Π³ΡΡΠΏΠΏΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ²; ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ΅Π½. ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΡ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ; Π² XSLT Π½Π΅Ρ ΡΡΠ΅Π΄ΡΡΠ² Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ΅Π±ΡΠ΅ΠΌΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ, Π»ΠΈΠ±ΠΎ ΠΎΠ½ΠΈ ΠΎΡΠ΅Π½Ρ Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Ρ; Π² XSLT ΠΈΠΌΠ΅ΡΡΡΡ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ΅Π±ΡΠ΅ΠΌΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ; ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΠ±Π»Π°Π΄Π°ΡΡ ΠΏΠΎΠ±ΠΎΡΠ½ΡΠΌΠΈ ΡΡΡΠ΅ΠΊΡΠ°ΠΌΠΈ; ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ Π±Π΅Π· ΠΏΠΎΠ±ΠΎΡΠ½ΡΡ ΡΡΡΠ΅ΠΊΡΠΎΠ²; ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ Ρ ΠΎΡΠΎΡΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠ΅Π»Π΅Π²ΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ΅ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅ΡΠΠΎΠ΄Π²ΠΎΠ΄Ρ ΠΈΡΠΎΠ³, ΠΎΠ±ΡΠ°Π·Π½ΠΎ Π²ΡΡΠ°ΠΆΠ°ΡΡΡ, ΡΠΊΠ°ΠΆΠ΅ΠΌ, ΡΡΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ β ΡΡΠΎ ΠΏΡΡΠΊΠ°, ΡΡΡΠ΅Π»ΡΡΡ ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΠΎ Π²ΠΎΡΠΎΠ±ΡΡΠΌ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΎΡΡΠ°Π΅ΡΡΡ Π½ΠΈΡΠ΅Π³ΠΎ Π΄ΡΡΠ³ΠΎΠ³ΠΎ, ΠΈΠ»ΠΈ Π²ΠΎΡΠΎΠ±ΡΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π²Π΅Π»ΠΈΠΊΠΈ.
Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ ΠΎΠΏΠΈΡΠ°ΡΡ Π² ΠΎΠ΄Π½ΠΎΠΉ Π³Π»Π°Π²Π΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π΄Π°ΠΆΠ΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΡ XSLT-ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ². ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΏΠΎΡΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΈΠ·Π»ΠΎΠΆΠΈΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠ±ΡΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΌΠΎΠ³ΡΡ ΠΏΠΎΡΠ»ΡΠΆΠΈΡΡ ΠΎΡΠ½ΠΎΠ²ΠΎΠΉ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°ΡΡΠ½ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ.
ΠΡΠ½ΠΎΠ²Π½ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ, ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠΌΡΡ Π² ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅, Π±ΡΠ΄Π΅Ρ Java. ΠΠΎΠΆΠ°Π»ΡΠΉ, Java ΡΠ²Π»ΡΠ΅ΡΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ, ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ, ΡΡΠΎΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΎΠ± ΠΎΠ±ΡΠΈΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°Ρ . ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΠ»ΠΈ ΡΠΈΡΠ°ΡΠ΅Π»Ρ Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌ Ρ ΡΡΠΈΠΌ ΡΠ·ΡΠΊΠΎΠΌ β Π½ΠΈΡΠ΅Π³ΠΎ ΡΡΡΠ°ΡΠ½ΠΎΠ³ΠΎ, Π²Π΅Π΄Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π² ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ Π² XSLT, Π° Π½Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΈΡ Π² Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ ΠΈ Java-ΠΊΠΎΠ΄ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΠ°Π±ΠΎΡΠΈΠΌΠΈ.
Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ, Π²ΡΠΏΠΎΠΌΠ½ΠΈΠΌ, ΠΊΠ°ΠΊ ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π»ΠΈ Π² ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡΡ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ½ΠΊΡΠΈΡ concat:
<xsl:value-of select="concat('para', 'bellum')"/>
ΠΡΡΠΈΠ±ΡΡ select ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ XPath-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ concat('para', 'bellum'), ΠΊΠΎΡΠΎΡΠΎΠ΅ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° XPath ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠΈ FunctionCall:
[XP16] FunctionCall ::= FunctionName
'(' ( Argument ( ',' Argument ) * ) ? ')'
ΠΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ²Π»ΡΡΡΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π° ΠΈΠΌΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π»ΡΠ±ΡΠΌ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΌ XML-ΠΈΠΌΠ΅Π½Π΅ΠΌ (Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ node, comment, processing-instruction ΠΈ text, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΈΠΏΠ° ΡΠ·Π»Π°):
[XP17] Argument ::= Expr
[XP35] FunctionName ::= QName - NodeType
Π ΠΏΠ»Π°Π½Π΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π½ΠΈΡΠ΅ΠΌ Π½Π΅ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ: ΠΎΠ½ΠΈ ΠΎΡΠ²Π΅ΡΠ°ΡΡ ΡΠ΅ΠΌ ΠΆΠ΅ ΡΠ°ΠΌΡΠΌ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΠ΅ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ XPath ΠΈ XSLT ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ Π½ΡΠ»Π΅Π²ΠΎΠΌΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Ρ ΠΈΠΌΠ΅Π½, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π±ΡΡΡ Π½Π΅Π½ΡΠ»Π΅Π²ΡΠΌ. ΠΠ½ΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, Π²ΡΠ·ΠΎΠ²Ρ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΈΠΌΠ΅ΡΡΠΈΠ΅ Π²ΠΈΠ΄ ΠΈΠΌΡ(Π°ΡΠ³ΡΠΌΠ΅Π½Ρ, Π°ΡΠ³ΡΠΌΠ΅Π½Ρ, ...), Π±ΡΠ΄ΡΡ ΡΡΠΈΡΠ°ΡΡΡΡ Π²ΡΠ·ΠΎΠ²Π°ΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ Π±Π°Π·ΠΎΠ²ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, Π° Π²ΡΠ·ΠΎΠ²Ρ Π²ΠΈΠ΄Π° ΠΏΡΠ΅ΡΠΈΠΊΡ:ΠΈΠΌΡ(Π°ΡΠ³ΡΠΌΠ΅Π½Ρ, Π°ΡΠ³ΡΠΌΠ΅Π½Ρ, ...) Π±ΡΠ΄ΡΡ ΡΡΠΈΡΠ°ΡΡΡΡ Π²ΡΠ·ΠΎΠ²Π°ΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ.
ΠΡΠΈΠΌΠ΅ΡΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
round(0.6)
ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ XPath, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
math:round(0.6)
ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ.
ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΠΎ Π²ΡΠ΅Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°Ρ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π·Π²Π΅Π½ΠΎΠΌ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ²ΡΠ·ΡΠ²Π°Π΅Ρ Π΅Π΅ Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ.
ΠΡΠΈΠΌΠ΅Ρ<xsl:value-of select="math:round(0.6)" xmlns:math="java:java.lang.Math"/>
ΠΠ»Π΅ΠΌΠ΅Π½Ρ xsl:value-of Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ math:round(0.6), ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ. Π‘Π°ΠΌΠΎ ΠΈΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ round ΠΈ ΠΏΡΠ΅ΡΠΈΠΊΡΠ° math, ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ URI java:java.lang.Math. Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ XSLT-ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ² Π²ΡΠ·ΠΎΠ² ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΎΠ΄Π° Π±ΡΠ΄Π΅Ρ ΠΎΠ·Π½Π°ΡΠ°ΡΡ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ round ΠΊΠ»Π°ΡΡΠ° java.lang.Math.
ΠΡΠΎΡΡΠ΅ΠΉΡΠΈΠΌ ΡΠ»ΡΡΠ°Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ Π² XSLT-ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°Ρ , Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΡ Π½Π° Java, ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌ ΡΡΠ½ΠΊΡΠΈΡΠΌ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Java.
ΠΡΠΈΠΌΠ΅ΡΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ Π²Ρ ΠΎΠ΄ΡΡΠΈΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΡΠΎΡΠ΅ΠΊ, Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠ·Π΄Π°Π΅Ρ SVG-Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π»ΠΈΠ½ΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡΡ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅SVG β ΡΡΠΎ XML-ΡΠ·ΡΠΊ Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΠΉ Π²Π΅ΠΊΡΠΎΡΠ½ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠΈ (ΠΎΡ Π°Π½Π³Π». scalable vector graphics). SVG ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΡΡΡΠΌ XML-ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠΎΠΌ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ Π²Π΅ΠΊΡΠΎΡΠ½ΡΡ Π³ΡΠ°ΡΠΈΠΊΡ. SVG-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠ°ΠΊΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, ΠΊΠ°ΠΊ Adobe SVG Viewer ΠΈΠ»ΠΈ Batik ΠΎΡ Apache XML Project.
ΠΠΈΡΡΠΈΠ½Π³ 10.3. ΠΡ ΠΎΠ΄ΡΡΠΈΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ<?xml version="1.0" encoding="windows-1251"?>
<ΡΠΎΡΠΊΠΈ width="200" height="200">
<ΡΠΎΡΠΊΠ° x="-50" y="-50"/>
<ΡΠΎΡΠΊΠ° x=" 50" y="-50"/>
<ΡΠΎΡΠΊΠ° x=" 50" y=" 50"/>
<ΡΠΎΡΠΊΠ° x="-50" y=" 50"/>
</ΡΠΎΡΠΊΠΈ>
ΠΠΈΡΡΠΈΠ½Π³ 10.4. ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅<?xml version="1.0" encoding="windows-1251"?>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/2000/svg">
<xsl:output
indent="yes"
doctype-public="-//W3C//DTD SVG 1.0//EN"
doctype-system="http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"/>
<xsl:template match="/">
<svg width="200" height="200">
<desc>Simple line-based figure</desc>
<xsl:apply-templates select="ΡΠΎΡΠΊΠΈ"/>
</svg>
</xsl:template>
<xsl:template match="ΡΠΎΡΠΊΠΈ">
<g style="stroke:black; stroke-width:2">
<xsl:apply-templates select="ΡΠΎΡΠΊΠ°"/>
</g>
</xsl:template>
<xsl:template match="ΡΠΎΡΠΊΠ°">
<line
x1="{@x + 100}"
y1="{@y + 100}"
x2="{following-sibling::ΡΠΎΡΠΊΠ°[1]/@x + 100}"
y2="{following-sibling::ΡΠΎΡΠΊΠ°[1]/@y + 100}">
<xsl:if test="position() = last()">
<xsl:attribute name="x2">
<xsl:value-of
select="preceding-sibling::ΡΠΎΡΠΊΠ°[last()]/@x + 100"/>
</xsl:attribute>
<xsl:attribute name="y2">
<xsl:value-of
select="preceding-sibling::ΡΠΎΡΠΊΠ°[last()]/@y + 100"/>
</xsl:attribute>
</xsl:if>
</line>
</xsl:template>
</xsl:stylesheet>
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΡΡΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ SVG-Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ.
ΠΠΈΡΡΠΈΠ½Π³ 10.5. ΠΡΡ ΠΎΠ΄ΡΡΠΈΠΉ SVG-Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ<!DOCTYPE svg
PUBLIC "-//W3C//DTD SVG 1.0//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200">
<desc>Simple line-based figure</desc>
<g style="stroke:black; stroke-width:2">
<line x1="50" y1="50" x2="150" y2="50"/>
<line x1="150" y1="50" x2="150" y2="150"/>
<line x1="150" y1="150" x2="50" y2="150"/>
<line x1="50" y1="150" x2="50" y2="50"/>
</g>
</svg>
ΠΠ° ΡΠΈΡ. 10.1 ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°.
Π ΠΈΡ. 10.1. ΠΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ SVG-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ ΡΠ΅ΠΏΠ΅ΡΡ, ΡΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΌΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Ρ ΡΠΎΡΠ΅ΠΊ Π½Π°Π±ΠΎΡ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡΡΠΈΡ ΠΈΡ Π»ΠΈΠ½ΠΈΠΉ, Π½ΠΎ Π΅ΡΠ΅ ΠΈ ΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠ²ΠΎΡΠΎΡ Π½Π° Π·Π°Π΄Π°Π½Π½ΡΠΉ Π² Π³ΡΠ°Π΄ΡΡΠ°Ρ ΡΠ³ΠΎΠ» Ξ±.
Π€ΠΎΡΠΌΡΠ»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΠΏΡΠΈ ΠΏΠΎΠ²ΠΎΡΠΎΡΠ΅ ΡΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΠΎ ΠΏΡΠΎΡΡΡ:
x = x'βcos(Ξ±) β yβsin(Ξ±),
Ρ = x'βsin(Ξ±) + x'βcos(Ξ±),