Опубликован: 24.01.2007 | Доступ: свободный | Студентов: 9068 / 1431 | Оценка: 4.28 / 4.09 | Длительность: 20:51:00
Лекция 6:

Определение и использование примитивов

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

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

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

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

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

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

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

Для каждого типа примитива в представленной ниже таблице приведена форма записи ссылки на примитив и перечень возможных мест помещения ссылки на примитив. В таблице также приведены ссылки на разделы в этой лекции, в которых вы можете найти примеры. О ссылках на символы речь пойдет далее в этой лекции, но данный вид ссылок также включен в таблицу для полноты картины.

Тип примитива Форма записи ссылки на примитив, где ИмяПримитива есть имя примитива Место, в которое вы можете поместить ссылку на примитив (пример)
Общий внутренний разбираемый &ИмяПримитива; В содержимое элемента (см. "Объявление общего внутреннего разбираемого примитива")

В значение атрибута (как значение по умолчанию в объявлении атрибута, либо в начальном теге элемента) (см. "Ссылка на примитив Пример 1")

В значение в объявлении внутреннего примитива (см. "Ссылка на примитив Пример 2")
Общий внешний разбираемый &ИмяПримитива; В содержимое элемента (см. "Объявление общего внешнего разбираемого примитива")
Общий внешний неразбираемый АтрПрим=’ИмяПримитива’

где АтрПрим есть атрибут типа ENTITY или ENTITIES

В значение в объявлении внутреннего примитива (см. "Ссылка на примитив Пример 2")

Вы не можете поместить ссылку на этот тип примитива, но можете присвоить имя примитива атрибуту, имеющему тип ENTITY или ENTITIES (см. "Объявление общего внешнего неразбираемого примитива")

Параметрический внутренний разбираемый %ИмяПримитива; В DTD в место помещения объявлений разметки, но не внутри объявлений разметки (исключения приведены в разделе 4 спецификации XML, доступ по адресу http://www.w3.org/TR/REC-xml) (см. "Объявление параметрического внутреннего разбираемого примитива")
Параметрический внешний разбираемый %ИмяПримитива; В DTD в место помещения объявлений разметки, но не внутри объявлений разметки (исключения приведены в разделе 4 спецификации XML, доступ по адресу http://www.w3.org/TR/REC-xml) (см. "Объявление параметрического внешнего разбираемого примитива")
Ссылка на символ 	 или &#xh; где 9 – десятичный числовой код символа, а h – шестнадцатеричный числовой код символа В содержимое элемента (см. "Вставка ссылок на символы")
В значение атрибута (в качестве значения по умолчанию в объявление списка атрибутов, или в начальный тег элемента) (см. "Вставка ссылок на символы")
В значение в объявлении внутреннего примитива (см. "Вставка ссылок на символы")

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

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

<!DOCTYPE INVENTORY
	[	
	<!ENTITY am "American">
	<!ENTITY en "English">
	<!ELEMENT INVENTORY (BOOK*)>
	<!ELEMENT BOOK (TITLE, AUTHOR)>
	<!ELEMENT TITLE (#PCDATA)>
	<!ELEMENT AUTHOR (#PCDATA)>
	<!ATTLIST AUTHOR  Nationality CDATA "&am;">
	]
>
<INVENTORY>
	<BOOK>
		<TITLE>David Copperfield</TITLE>
		<AUTHOR Nationality="&en;">Charles Dickens</AUTHOR>
	</BOOK>
	<!-- другие элементы… -->
</INVENTORY>

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

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

<!DOCTYPE INVENTORY
	[
	<!ENTITY int_entity "internal entity value">
	<!ENTITY ext_entity SYSTEM "Entity.xml">
	<!ENTITY combo_entity
		"значение, состоящее из &ext_entity; плюс &int_entity;">
	<!-- другие объявления разметки… -->
	]
>

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

Вы можете воспользоваться ссылкой на символ, чтобы вставить символ, которого нет на вашей клавиатуре (например, \ddot{a} ), либо вставить символ, который не допускает его вставку в данном контексте как литерал (например, символы < или & в составе символьных данных элемента). Вам не нужно делать какие-либо определения перед использованием ссылки на символ – вы можете просто поместить ее в нужном месте.

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

&#9;

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

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

&#xh;

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

Например, обе ссылки &#65; и &#x41; означают вставку прописной буквы A. (Числовой код для A равен десятичному числу 65 и шестнадцатеричному числу 41.)

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

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

&#228;

Примечание. Список мест, в которые вы можете поместить ссылку на символ в вашем документе, приведен в таблице в разделе "Вставка ссылок на примитивы" ранее в этой лекции. Там же приведены и примеры.

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

<TITLE>&#60;The Legend of Sleepy Hollow></TITLE>

Для следующего элемента ссылка на символ &#228; используется для вставки символа \ddot{a} (вы не можете ввести его с клавиатуры) в значение атрибута:

<RESIDENT Address="Seilerst&#228;tte 30, Wien">Mike Young</RESIDENT>

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

<!ENTITY heading1 "&#37; Complete">
Максим Попов
Максим Попов

Почему при использовании скриптов, приведенных в курсе Основы XML

лекция Лекция 8: 

Отображение XML-документов с использованием связывания данных

не происходит связывания XLM документа с HTML?

Отображаются пустые поля. Браузер IE11

Владислав Нагорный
Владислав Нагорный

Подскажите, пожалуйста, планируете ли вы возобновление программ высшего образования? Если да, есть ли какие-то примерные сроки?

Спасибо!

Геннадий Шестаков
Геннадий Шестаков
Беларусь, Орша
Наталья Алмаева
Наталья Алмаева
Россия