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

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

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

[40] STag ::= '<' Name (S Attribute)* S? '>'

Π’ рядС случаСв Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ Ρ‚Π΅Π³Π° ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ.

ΠŸΠ΅Ρ€Π΅Π΄ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ ΡƒΠ³Π»ΠΎΠ²ΠΎΠΉ скобкой Ρ‚Π΅Π³Π° ΠΌΠΎΠ³ΡƒΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΡΡ‚ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π»ΡŒΠ½Ρ‹Π΅ символы, поэтому Π²ΠΏΠΎΠ»Π½Π΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ запись:

<Π°

 href="http://www.xsltdev.ru"

>

Π’ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌ Ρ‚Π΅Π³Π΅ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΠ΅Ρ‚ косая Ρ‡Π΅Ρ€Ρ‚Π° ("/") ΠΈ ΠΏΠ΅Ρ€Π΅Π΄ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ ΡƒΠ³Π»ΠΎΠ²ΠΎΠΉ скобкой Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΡ‚ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹:

[42] ETag ::= '</' Name S? '>'

ИмСна Π² ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌ ΠΈ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌ Ρ‚Π΅Π³Π°Ρ… Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ элСмСнта ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· элСмСнтов (Π½Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» element), сущностСй (Reference), сСкций ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… (CDSect), инструкций ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ (PI) ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² (Comment), ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠ°Π½Π½Ρ‹Ρ… с ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ (CharData):

[43] content ::= CharData?

                 ((element

                 | Reference

                 | CDSect

                 | PI

                 | Comment) CharData?)*

ΠŸΡƒΡΡ‚ΠΎΠΉ элСмСнт Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ содСрТимого ΠΈ задаСтся ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠ΅ΠΉ EmptyElemTag Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅:

[44] EmptyElemTag ::= '<' Name (S Attribute)* S? '/>'

Π’Π΅Π³ пустого элСмСнта выглядит Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Ρ‚Π΅Π³ нСпустого элСмСнта с Ρ‚ΠΎΠΉ лишь Ρ€Π°Π·Π½ΠΈΡ†Π΅ΠΉ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ ΡƒΠ³Π»ΠΎΠ²ΠΎΠΉ скобкой стоит символ косой Ρ‡Π΅Ρ€Ρ‚Ρ‹ ("/"). Π’ этом, кстати, ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π³Π»Π°Π²Π½Ρ‹Ρ… ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΉ синтаксиса языка XML ΠΎΡ‚ HTML. НапримСр, вмСсто <HR> Π² XML слСдуСт ΠΏΠΈΡΠ°Ρ‚ΡŒ <HR/>.

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ привСсти синтаксис HTML Π² соотвСтствиС со стандартом XML, Π±Ρ‹Π» создан язык XHTML. Π­Ρ‚ΠΎΡ‚ язык ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ соотвСтствуСт синтаксису XML, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ XHTML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² XML-срСдствами, Π½ΠΎ ΠΏΡ€ΠΈ этом Π½Π°Π±ΠΎΡ€ Ρ‚Π΅Π³ΠΎΠ² XHTML ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π΅Π½ Π½Π°Π±ΠΎΡ€Ρƒ Ρ‚Π΅Π³ΠΎΠ² языка HTML. К соТалСнию, Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ всС Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ XHTML. Π§Π°Ρ‰Π΅ всСго ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ с пустыми элСмСнтами (ΠΈΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹ΠΌΠΈ Ρ‚Π΅Π³Π°ΠΌΠΈ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… HTML): Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ запись Π²ΠΈΠ΄Π° <br/>. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ использованиСм ΠΏΠ΅Ρ€Π΅Π΄ косой Ρ‡Π΅Ρ€Ρ‚ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π΅Π»Π°: запись Π²ΠΈΠ΄Π° <br />, скорСС всСго, Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ.

Атрибут

Π’ элСмСнтах ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ с присвоСнными ΠΈΠΌ значСниями. Атрибут задаСтся Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅:

Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚="Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅"

НапримСр, Π² записи гипСртСкстовой ссылки

<Π° href="http://www.xsltdev.ru">Π—Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ ΠΊ Π½Π°ΠΌ!</Π°>

элСмСнт Π° ΠΈΠΌΠ΅Π΅Ρ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ href, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ присвоСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ "http://www.xsltdev.ru".

Π’ языкС XML Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ всСгда Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ значСния. НапримСр, Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ selected Π² записи элСмСнта

<option selected>

 Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ элСмСнт

</option>

Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π΄Π°Π½ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния XML Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΅ΠΌΡƒ Π½Π΅ присвоСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π² HTML Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ являСтся Π²ΠΏΠΎΠ»Π½Π΅ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ. Π’Π°ΠΊΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π»Π΅Π³ΠΊΠΎ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

<option selected="selected">

 Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ элСмСнт

</option>

ЗначСния Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ β€” ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΈΠ»ΠΈ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ случаС ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ:

<option selected='selected'>

 Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ элСмСнт

</option>

На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ часто Π±Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² значСниях Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для записи Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ²). Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚, ΠΊΠ°ΠΊ это ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ:

<auth login='"scott"' password="'tiger'"/>

Атрибуту login присвоСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ "scott" (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ), Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρƒ password β€” Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 'tiger' (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ).

Π’ XML ΠΎΠ΄ΠΈΠ½ элСмСнт Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° состоит ΠΈΠ· ΠΈΠΌΠ΅Π½ΠΈ, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт Π·Π½Π°ΠΊ равСнства, Π° Π·Π°Ρ‚Π΅ΠΌ, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°:

[41] Attribute ::= Name Eq Attribute

[25] Eq ::= S? '=' S?

[10] AttValue ::= '"' ([^<&"] | Reference)* '"'

                  | "'" ([^<&'] | Reference)* "'"

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° записываСтся Π² ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ…, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ ΠΎΠ½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ символов '<' ΠΈ '&', ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² XML ΠΊΠ°ΠΊ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ символы (< ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π΅Π³ элСмСнта, Π° & β€” ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ). ВмСстС с Ρ‚Π΅ΠΌ, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ (Π½Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» Reference) β€” ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅

Π’ XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π½Π΅ относящиСся ΠΊ содСрТимому Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° инструкции, нСсущиС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ для прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ этот Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ. Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π²ΠΈΠ΄:

<?ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ содСрТимоС?>

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ всСгда Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΡƒΠ³Π»ΠΎΠ²Ρ‹Π΅ скобки со Π·Π½Π°ΠΊΠ°ΠΌΠΈ вопроса. ΠŸΠ΅Ρ€Π²Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ инструкции, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, опрСдСляСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈΠ»ΠΈ систСму, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° вторая Ρ‡Π°ΡΡ‚ΡŒ, Π΅Π΅ содСрТимоС.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ инструкции ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ запись:

<?serv cache-document?>

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Ρ†Π΅Π»Π΅Π²ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ имя 'serv', Π° сама инструкция ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π° ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ сСрвСру Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² кэшС. ЕстСствСнно, инструкции ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈΠΌΠ΅ΡŽΡ‚ смысл Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ‚Π΅Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΎΠ½ΠΈ Π°Π΄Ρ€Π΅ΡΡƒΡŽΡ‚ΡΡ.

ΠŸΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΈ инструкций ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄:

[16] PI ::= '<?' PITarget

            (S (Char* - (Char* '?>' Char*)))? '?>'

Π’ этом ΠΏΡ€Π°Π²ΠΈΠ»Π΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ (S (Char* - (Char* '?>' Char*)))? ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ содСрТимоС инструкции ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Ρ‹ ΠΏΡ€ΠΎΠ±Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ символами, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ содСрТимоС состоит ΠΈΠ· Π»ΡŽΠ±Ρ‹Ρ… символов, ΠΊΡ€ΠΎΠΌΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ '?>', которая ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΊΠΎΠ½Π΅Ρ† инструкции.

Π¦Π΅Π»Π΅Π²ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ любоС имя (ΠΊΡ€ΠΎΠΌΠ΅ "xml" Π² любом рСгистрС символов). Имя Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ прилоТСния опрСдСляСтся EBNF-ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΠΌ PITarget:

[17] PITarget ::= Name - (('X' | 'Ρ…') ('М' | 'm') ('L' | 'l'))

Π’ XML ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° особая конструкция, называСмая Π₯МL-Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠ΅ΠΉ (XML declaration). Она ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄:

<?xml version="вСрсия" encoding="ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°" standalone="yes | no"/>

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ XML-дСкларация ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅, с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния стандарта ΠΎΠ½Π° Ρ‚Π°ΠΊΠΎΠ²ΠΎΠΉ Π½Π΅ являСтся. Если ΠΆΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΌΠ΅Π½Π΅Π΅ строго, Ρ‚ΠΎ смысл XML-Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ соотвСтствуСт смыслу инструкции ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅: ΠΎΠ½Π° сообщаСт ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌΡƒ Π΄Π°Π½Π½Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌΡƒ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… свойствах этого Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. XML-дСкларация ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ псСвдоатрибуты version, encoding ΠΈ standalone, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ рассмотрим Π½ΠΈΠΆΠ΅.

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ элСмСнтов, XML-дСкларация, ΠΊΠ°ΠΊ ΠΈ инструкции ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ². Однако ΠΈΡ… содСрТимоС ΠΎΡ‡Π΅Π½ΡŒ часто образуСтся Π² Ρ„ΠΎΡ€ΠΌΠ΅ имя="Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅" β€” Ρ‚Π°ΠΊΠΈΠ΅ объявлСния ΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ псСвдоатрибутами.

ΠŸΡΠ΅Π²Π΄ΠΎΠ°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ version содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ вСрсии XML, Π² соотвСтствии с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±Ρ‹Π» создан этот Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚. Π’Π΅ΠΊΡƒΡ‰Π΅ΠΉ вСрсиСй языка XML являСтся 1.0, поэтому Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв указываСтся version="1.0".

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

<?xml version="1.0"?>

ΠŸΡΠ΅Π²Π΄ΠΎΠ°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ encoding сообщаСт, Π² ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ создан Π΄Π°Π½Π½Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²Ρ‹Π±Ρ€Π°Π½Π° Unicode-ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° UTF-8 (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ см. "ИспользованиС Unicode"), Π½ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована ΠΈ любая другая ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°, лишь Π±Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΅Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π»ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.

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

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², созданных Π½Π° русском языкС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ кирилличСскиС ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ windows-1251 ΠΈ KOI8-R; XML-Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ для этих Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΈΠ΄:

<?xml version="1.0" encoding="windows-1251"?>

ΠΈ

<?xml version="1.0" encoding="KOI8-R"?>

соотвСтствСнно.

Для Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… использовались Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½ΠΈΠΆΠ½ΠΈΠ΅ 127 символов ASCII, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, символы с ΠΊΠΎΠ΄Π°ΠΌΠΈ, Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°ΡŽΡ‰ΠΈΠΌΠΈ #x7F, псСвдоатрибут encoding ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. Π’ этой области символов ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° UTF-8 совпадаСт с ASCII.

ΠŸΡΠ΅Π²Π΄ΠΎΠ°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ standalone Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Ρ‚ΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π»ΠΈ этот Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ внСшниС объявлСния ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Как ΠΌΡ‹ ΡƒΠ·Π½Π°Π΅ΠΌ Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅, XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, которая находится Π²ΠΎ Π²Π½Π΅ΡˆΠ½ΠΈΡ… Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ…. ΠžΠΏΡ†ΠΈΡ standalone, ΠΈΠΌΠ΅ΡŽΡ‰Π°Ρ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ "yes", ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π½Π΅ содСрТит Ρ‚Π°ΠΊΠΈΡ… объявлСний, ΠΈ, Π·Π½Π°Ρ‡ΠΈΡ‚, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π±Π΅Π· обращСния ΠΊ внСшним источникам.

Π”Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ XML соотвСтствуСт продукция XMLDecl, которая, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ нСсколько Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ»:

[23] XMLDecl ::= '<?xml' VersionInfo EncodingDecl?

                  SDDecl? S? '?>'

ΠŸΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΡ VersionInfo опрСдСляСт синтаксис псСвдоатрибута version:

[24] VersionInfo ::= S? 'version' Eq