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

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

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

β–‘ Π”ля ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… символов число Π±Π°ΠΉΡ‚ опрСдСляСтся количСством Π²Π΅Π΄ΡƒΡ‰ΠΈΡ… Π΅Π΄ΠΈΠ½ΠΈΡ† ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π±Π°ΠΉΡ‚Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

β–‘ Π”Π²Π° ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π±ΠΈΡ‚Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π±Π°ΠΉΡ‚Π° Ρ€Π°Π²Π½Ρ‹ Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅ ΠΈ Π½ΡƒΠ»ΡŽ соотвСтствСнно.

β–‘ Π’сС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π±ΠΈΡ‚Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для кодирования символа.

Π’ Ρ‚Π°Π±Π». 1.2 для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° символов ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ количСство Π±Π°ΠΉΡ‚, Π½ΡƒΠΆΠ½Ρ‹Ρ… для кодирования символа, Ρ„ΠΎΡ€ΠΌΠ° кодирования ΠΈ количСство Π±ΠΈΡ‚, доступных для ΠΊΠΎΠ΄Π°.


Π’Π°Π±Π»ΠΈΡ†Π° 1.2. Π€ΠΎΡ€ΠΌΡ‹ кодирования символов Π² UTF-8

Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Кол-Π²ΠΎ Π±Π°ΠΉΡ‚ Π€ΠΎΡ€ΠΌΠ° кодирования Кол-Π²ΠΎ Π±ΠΈΡ‚ #x0-#x7F 1 0xxxxxxx 7 #x80-#x7FF 2 110xxxxx 10xxxxxx 11 #x800-#xFFFF 3 1110xxxx 10xxxxxx 10xxxxxx 16 #x10000- #x1FFFFF 4 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 21

К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, символу "Π­" (Π·Π°Π³Π»Π°Π²Π½ΠΎΠΉ русской Π±ΡƒΠΊΠ²Π΅ "Π­") Unicode присваиваСт ΠΊΠΎΠ΄ #x42D ΠΈΠ»ΠΈ 10000101101 Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ прСдставлСнии. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» #x80-#x7ff, Π·Π½Π°Ρ‡ΠΈΡ‚, для кодирования Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²ΡƒΡ…-Π±Π°ΠΉΡ‚ΠΎΠ²ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ Π²ΠΈΠ΄Π° 110xxxxx 10xxxxxx, Π³Π΄Π΅ символы "x" ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ 11 Π±ΠΈΡ‚, доступных для ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π΄Π°Π½Π½ΠΎΠΌΡƒ символу Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄:

11010000 10101101

ΠΈΠ»ΠΈ #xD0AD Π² ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΌ прСдставлСнии.

ΠŸΠΎΠ»ΡƒΠΆΠΈΡ€Π½Ρ‹ΠΌ ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠΌ Π²Ρ‹Π΄Π΅Π»Π΅Π½Ρ‹ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ Π±ΠΈΡ‚Ρ‹ UTF-8 (110 ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ символ Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ Π΄Π²ΡƒΡ…Π±Π°ΠΉΡ‚Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ, 10 опрСдСляСт Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π±Π°ΠΉΡ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ), курсивом β€” Π±ΠΈΡ‚Ρ‹ ΠΊΠΎΠ΄Π° символа.

Удобство UTF-8 Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠ΅Ρ€Π²Ρ‹Ρ… 127 символов совпадаСт с ΡˆΠΈΡ€ΠΎΠΊΠΎ распространСнной 7-Π±ΠΈΡ‚Π½ΠΎΠΉ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ ASCII. Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ использованиС ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ тСкста Π² UTF-8, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ тСкстовых Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ².

UTF-16

Для записи Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… символов с ΠΊΠΎΠ΄Π°ΠΌΠΈ, мСньшими #xFFFF, UTF-16 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΄Π²ΡƒΡ…Π±Π°ΠΉΡ‚Π½Ρ‹Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π±ΠΈΡ‚ соотвСтствуСт Π±ΠΈΡ‚Ρƒ ΠΊΠΎΠ΄Π°. Помимо этого, Π² UTF-16 ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ прСдставлСны символы с ΠΊΠΎΠ΄Π°ΠΌΠΈ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ #10000-#FFFFF. Для кодирования этих символов Π² UTF-16 ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΏΠ°Ρ€Ρ‹ 16-Π±ΠΈΡ‚Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π΅ #xD800-#xDFFF (Ρ€Π°Π½Π΅Π΅ Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Unicode), Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ суррогатными ΠΏΠ°Ρ€Π°ΠΌΠΈ (surrogate pairs). МладшиС 10 Π±ΠΈΡ‚ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ значСния отводятся Π½Π° ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ символа, Ρ‡Ρ‚ΠΎ Π² ΠΈΡ‚ΠΎΠ³Π΅ Π΄Π°Π΅Ρ‚ 20 Π±ΠΈΡ‚, достаточных для записи любого ΠΊΠΎΠ΄Π°, Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°ΡŽΡ‰Π΅Π³ΠΎ #xFFFFF (Ρ‚Π°Π±Π». 1.3).


Π’Π°Π±Π»ΠΈΡ†Π° 1.3. Π€ΠΎΡ€ΠΌΡ‹ кодирования символов Π² UTF-16

Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Кол-Π²ΠΎ Π±Π°ΠΉΡ‚ Π€ΠΎΡ€ΠΌΠ° кодирования Кол-Π²ΠΎ Π±ΠΈΡ‚ #x0-#xD7FF 2 xxxxxxxx xxxxxxxx 16 #xD800-#xDFFF Π—Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ #xE000-#xFFFF 2 xxxxxxxx xxxxxxxx 16 #x10000-#xFFFFF 4 110110xxxxxxxxxx 110110xxxxxxxxxx 20 ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

Π‘ΠΈΠΌΠ²ΠΎΠ» "Π­" с ΠΊΠΎΠ΄ΠΎΠΌ #x42D Π±ΡƒΠ΄Π΅Ρ‚ записан Π² UTF-16 Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠ· Π΄Π²ΡƒΡ… Π±Π°ΠΉΡ‚ β€” #x042D.

Для символа с ΠΊΠΎΠ΄ΠΎΠΌ #x153DC (Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ прСдставлСнии β€” 10101001111011100) понадобится 4 Π±Π°ΠΉΡ‚Π°. Он Π±ΡƒΠ΄Π΅Ρ‚ записан Π² Π²ΠΈΠ΄Π΅

1101100001010100 1101101111011100

ΠΈΠ»ΠΈ #xD854DBDC Π² ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΌ исчислСнии.

ΠŸΠΎΠ»ΡƒΠΆΠΈΡ€Π½Ρ‹ΠΌ ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠΌ Π²Ρ‹Π΄Π΅Π»Π΅Π½Ρ‹ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ Π±ΠΈΡ‚Ρ‹ UTF-16, курсивом β€” Π±ΠΈΡ‚Ρ‹ ΠΊΠΎΠ΄Π° символа.

UTF-32

UTF-32 являСтся самой простой Ρ„ΠΎΡ€ΠΌΠΎΠΉ кодирования β€” для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ символа, Π²Π½Π΅ зависимости ΠΎΡ‚ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ 4 Π±Π°ΠΉΡ‚Π°. Π’Π°ΠΊΠΎΠΉ способ, нСсомнСнно, Π½Π΅ являСтся самым экономичным с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния объСма Ρ…Ρ€Π°Π½ΠΈΠΌΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π½ΠΎ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях прСдоставляСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ прСимущСства ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ тСкста, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ символы Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

ΠšΠΎΠ΄Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… символов Unicode

Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… символов Unicode ΠΊΠΎΠ΄ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ символы ΠΈ Π·Π½Π°ΠΊΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… языков, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ символы, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π΅Ρ€Π°Π·Ρ€Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΏΡ€ΠΎΠ±Π΅Π» (no-break space), табуляция, пСрСнос строки ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. ΠšΠΎΠ΄Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ· этих символов, часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ…ΡΡ Π² XML-тСхнологиях, ΠΌΡ‹ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠΌ Π² Ρ‚Π°Π±Π». 1.4.


Π’Π°Π±Π»ΠΈΡ†Π° 1.4. Unicode-ΠΊΠΎΠ΄Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… символов

Код ΠžΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ОписаниС #Ρ…9 [НВ] Π“ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Π°Ρ табуляция (horizontal tabulation) #xA [LF] ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ строки (line feed) #xD [CR] Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΊΠ°Ρ€Π΅Ρ‚ΠΊΠΈ (carriage return) #x20 [SP] ΠŸΡ€ΠΎΠ±Π΅Π» (space) #x21 ! Π’ΠΎΡΠΊΠ»ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π·Π½Π°ΠΊ (exclamation sign) #x22 " Π”Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ (quotation mark) #x26 & АмпСрсант (ampersand) #x27 ' Апостроф ΠΈΠ»ΠΈ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ (apostrophe) #x3C < Π—Π½Π°ΠΊ "мСньшС" ΠΈΠ»ΠΈ лСвая угловая скобка (less-than sign) #x3F ? Π’ΠΎΠΏΡ€ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π·Π½Π°ΠΊ (question mark) #xA0 [NBSP] НСразрываСмый ΠΏΡ€ΠΎΠ±Π΅Π» (no-break space)

ΠšΠΎΠ΄Ρ‹ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… символов ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° Web-сайтС Unicode Consortium Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Code Charts: http://www.unicode.org/charts/.

Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΈ XML

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈ модСль символов Unicode, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² XML, ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°Ρ‚ΡŒ EBNF-опрСдСлСния основных Π±Π°Π·ΠΎΠ²Ρ‹Ρ… конструкций языка β€” символов, ΠΈΠΌΠ΅Π½, ΠΈΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² ΠΈ ΠΈΡ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ.

Π’ XML ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ символы Unicode, ΠΊΡ€ΠΎΠΌΠ΅ суррогатных Π±Π»ΠΎΠΊΠΎΠ² ΠΈ символов с ΠΊΠΎΠ΄Π°ΠΌΠΈ #xFFFE ΠΈ #xFFFF:

[2] Char ::= #x9 | #xA | #xD | [#x20 - #xD7FF]

             | [#Ρ…Π•000 - #xFFFD) | [#Ρ…10000 - #x10FFFF]

Для удобства всС мноТСство символов Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΎ Π½Π° нСсколько ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ.

β–‘ Π‘ΡƒΠΊΠ²Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΈ Letter, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, дСлятся Π½Π° основныС (BaseChar) ΠΈ идСографичСскиС (Ideographic). Π‘ΡƒΠΊΠ²Ρ‹ относятся ΠΊ Π°Π»Ρ„Π°Π²ΠΈΡ‚Π°ΠΌ, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… состоят слова Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… языков. ΠŸΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΈ Π±ΡƒΠΊΠ² Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ просты, Π½ΠΎ Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ символы Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π°Π»Ρ„Π°Π²ΠΈΡ‚ΠΎΠ². Π§ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π»Π΅Π³ΠΊΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΈΡ… Π² тСхничСской Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ XML ΠΏΠΎ адрСсу http://www.w3.org/TR/REC-xml.html ΠΏΠΎΠ΄ Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌΠΈ [84] (Letter), [85] (BaseChar) ΠΈ [86] (Ideographic).

β–‘ Π¦ΠΈΡ„Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΡƒΠ»ΡŒΡ‚ΡƒΡ€Π°Ρ… числа. Π¦ΠΈΡ„Ρ€Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠ΅ΠΉ Digit с Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ [88].

β–‘ ΠœΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ символы (CombiningChar), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ написаниС ΠΈΠ»ΠΈ Π·Π²ΡƒΡ‡Π°Π½ΠΈΠ΅ символов, ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, #x308 β€” двойная Ρ‚ΠΎΡ‡ΠΊΠ° свСрху символа, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для обозначСния умляута Π² Π½Π΅ΠΌΠ΅Ρ†ΠΊΠΎΠΌ ΠΈ для Π·Π°ΠΌΠ΅Π½Ρ‹ e Π½Π° Ρ‘ Π² русском языкС. ΠŸΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΡ CombiningChar ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΎΠΌΠ΅Ρ€ [87].

β–‘ Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ (Extender). ΠŸΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΡ Extender ΠΈΠΌΠ΅Π΅Ρ‚ порядковый Π½ΠΎΠΌΠ΅Ρ€ [89].

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ символьной конструкциСй являСтся ΠΏΡ€ΠΎΠ±Π΅Π»ΡŒΠ½ΠΎΠ΅ пространство S. ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ Π΅Ρ‰Π΅ Ρ€Π°Π· Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΡŽ:

[3] S ::= (#Ρ…9 | #хА | #xD | #x20)+

Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… продукциях XML-языков ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΈΠΌΠ΅Π½Π°. НапримСр, ΠΈΠΌΠ΅Π½Π° Π΄Π°ΡŽΡ‚ΡΡ элСмСнтам, Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ XPath ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π’ основС опрСдСлСния ΠΈΠΌΠ΅Π½ΠΈ Π»Π΅ΠΆΠ°Ρ‚ ΠΈΠΌΠ΅Π½Π½Ρ‹Π΅ символы NameChar:

[4] NameChar ::= Letter | Digit | CombiningChar | Extender

                 | '.' | '-' | '_' | ':'

Имя начинаСтся Π»ΠΈΠ±ΠΎ Π±ΡƒΠΊΠ²ΠΎΠΉ, Π»ΠΈΠ±ΠΎ символами "_" ΠΈΠ»ΠΈ ":" ΠΈ состоит ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠΌΠ΅Π½Π½Ρ‹Ρ… символов:

[5] Name ::= (Letter | '_' | ' :') (NameChar*)

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ… XML ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠΌΠ΅Π½, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΈ Names:

[6] Names ::= Name (S Name)*

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, тСхничСская рСкомСндация опрСдСляСт Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΎΠΊΠ΅Π½ NmToken β€” строку, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΈΠΌΠ΅Π½Π½Ρ‹Ρ… символов ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ‚Π°ΠΊΠΈΡ… Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ², NmTokens.