Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК_XML.doc
Скачиваний:
16
Добавлен:
03.05.2019
Размер:
3.94 Mб
Скачать

4.9. Вставка ссылок на примитив

Вставка содержимого (замещающий текст) примитива в документ осуществляется с помощью ссылок на примитив. Общий вид ссылки на общий примитив следующий:

&ИмяПримитива;

а на параметрический примитив:

%ИмяПримитива;

где ИмяПримитива есть имя, присваиваемое примитиву в объявлении. Исключением является общий внешний не разбираемый примитив, который вы не можете вставить с использованием ссылки. Единственный способ использования этого типа примитива заключается в присвоении его имени атрибуту, имеющему тип ENTITY или ENTITIES. (См. раздел 3.10. “Задание атрибута маркерного типа”.)

Объявление примитива должно предшествовать любой ссылке на этот примитив.

4.10. Ссылка на примитив. Пример 1

В следующем XML-документе объявлены два общих внутренних разбираемых примитива, am и еn. Документ использует ссылку на am для присвоения значения по умолчанию атрибуту Nationality и ссылку на еn для присвоения значения атрибуту Nationality элемента AUTHOR. Преимущество использования примитива здесь заключается в том, что можно изменить значение по всему документу (в предположении, что в нем имеется много элементов) простым редактированием определения примитива (например, изменив значение en с “Англичанин” на “Британец”).

<!DOCTYPE INVENTORY

[

<!ENTITY am "Американец">

<!ENTITY en "Англичанин">

<!ELEMENT INVENTORY (BOOK*)>

<!ELEMENT BOOK (TITLE, AUTHOR)>

<!ELEMENT TITLE (#PCDATA)>

<!ELEMENT AUTHOR (*PCDATA)>

<!ATTLIST AUTHOR Nationality CDATA "&am;">

]

>

<INVENTORY>

<BOOK>

<TITLE>Дэвид Коперфилд</TITLE>

<AUTHOR Nationality="&en;">Чарльз Диккенс</AUTHOR>

</BOOK>

<!-- другие элементы... -->

</INVENTORY>

4.11. Ссылка на примитив. Пример 2

Следующее DTD определяет общий внутренний разбираемый примитив (int_entity) и общий внешний разбираемый примитив (ext_entity). Затем он определяет другой общий внутренний разбираемый примитив, combo_entity, и помещает оба предыдущих примитива в значение примитива combo_entity.

<!DOCTYPE INVENTORY

[

<!ENTITY int entity "значение внутреннего примитива">

<!ENTITY ext_entity SYSTEM "Entity.xml">

<!ENTITY combo_entity

"значение, состоящее из &ext_entity; плюс &int_entity;">

<!-- другие объявления разметки... -->

]>

4.12. Вставка ссылок на символы

Можно воспользоваться ссылкой на символ, чтобы вставить символ, которого нет на вашей клавиатуре (например, ä), либо вставить символ, который не допускает его вставку в данном контексте как литерал (например, символы < или & в составе символьных данных элемента). Для этого не нужно делать какие-либо определения перед использованием ссылки на символ - можно просто поместить ее в нужном месте.

Ссылка на символ имеет две различные формы. Первая форма:

где 9 - это одна или несколько десятичных цифр (от 0 до 9), представляющих числовой код символа в наборе символов ISO/IEC 10646.

Вторая форма ссылки на символ:

&#xh;

где h - это одна или несколько шестнадцатиричных цифр (от 0 до F), также представляющих числовой код символа в наборе ISO/IEC 10646. Например, обе ссылки A и &#х41; означают вставку прописной буквы А. (Числовой код для А равен десятичному числу 65 и шестнадцатиричному числу 41.)

Международная таблица символов ISO/IEC 10646 используется для числового представления символов практически любых языков. (ISO -International Organization for Standardization, IEC - International Organization Commission.) Коды первых 128 символов совпадают с кодами хорошо известного набора ASCII, используемого в большинстве компьютеров. На представленном ниже рисунке содержатся первые 256 символов в наборе ISO/IEC 10646. Для каждого элемента на следующем рисунке первое число (1:, 2:, 3:, и т.д.) есть десятичный код символа, а после двоеточия следует символ - если он есть - в том виде, в котором он отображается Microsoft Internet Explorer.

  1. !

  2. "

  3. #

  4. $

  5. %

  6. &

  7. (

  8. )

  9. *

  10. +

  11. ,

  12. -

  13. .

  14. /

  15. 0

  16. 1

  17. 2

  18. 3

  19. 4

  20. 5

  21. 6

  22. 7

  23. 8

  24. 9

  25. :

  26. ;

  27. <

  1. =

  2. >

  3. ?

  4. @

  5. A

  6. B

  7. C

  8. D

  9. E

  10. F

  11. G

  12. H

  13. I

  14. J

  15. K

  16. L

  17. M

  18. N

  19. O

  20. P

  21. Q

  22. R

  23. S

  24. T

  25. U

  26. V

  27. W

  28. X

  29. Y

  30. Z

  1. [

  2. \

  3. ]

  4. ^

  5. _

  6. `

  7. a

  8. b

  9. c

  10. d

  11. e

  12. f

  13. g

  14. h

  15. i

  16. j

  17. k

  18. l

  19. m

  20. n

  21. o

  22. p

  23. q

  24. r

  25. s

  26. t

  27. u

  28. v

  29. w

  30. x

  1. y

  2. z

  3. {

  4. |

  5. }

  6. ~

  1. ¡

  2. ¢

  3. £

  4. ¤

  5. ¥

  6. ¦

  7. §

  8. ¨

  9. ©

  10. ª

  11. «

  12. ¬

  13. ­

  14. ®

  15. ¯

  16. °

  17. ±

  18. ²

  19. ³

  20. ´

  1. µ

  2. ·

  3. ¸

  4. ¹

  5. º

  6. »

  7. ¼

  8. ½

  9. ¾

  10. ¿

  11. À

  12. Á

  13. Â

  14. Ã

  15. Ä

  16. Å

  17. Æ

  18. Ç

  19. È

  20. É

  21. Ê

  22. Ë

  23. Ì

  24. Í

  25. Î

  26. Ï

  27. Ð

  28. Ñ

  29. Ò

  1. Ó

  2. Ô

  3. Õ

  4. Ö

  5. ×

  6. Ø

  7. Ù

  8. Ú

  9. Û

  10. Ü

  11. Ý

  12. Þ

  13. ß

  14. à

  15. á

  16. â

  17. ã

  18. ä

  19. å

  20. æ

  21. ç

  22. è

  23. é

  24. ê

  25. ë

  26. ì

  27. í

  28. î

  29. ï

  30. ð

  1. ñ

  2. ò

  3. ó

  4. ô

  5. õ

  6. ö

  7. ÷

  8. ø

  9. ù

  10. ú

  11. û

  12. ü

  13. ý

  14. þ

  15. ÿ

  16. Ā

Например, из рисунка можно определить, что десятичный код символа для ä равен 228. Чтобы вставить этот символ в ваш документ, достаточно ввести ссылку:

ä

Для следующего элемента символ левой угловой скобки (<) вставляется в символьные данные элемента с помощью ссылки на символ < (60 есть десятичный код для <). Непосредственная вставка символа < в символьные данные не допускается.

<TITLE><The Legend of Sleepy Hollow></TITLE>

Для следующего элемента ссылка на символ ä используется для вставки символа ä (его нельзя ввести с клавиатуры) в значение атрибута:

<RESIDENT Address="Seilerstätte 30, Wien">Mike Young</RESIDENT>

В следующем объявлении общего внутреннего разбираемого примитива в DTD ссылка на символ % используется для вставки символа процентов (%) (37 есть десятичный код для %), который не может быть непосредственно введен как литерал в значение внутреннего примитива:

<!ENTITY heading1 "% Complete">