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

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

Объявление общих примитивов

Примитив создается путем объявления его в DTD документа. Вы объявляете примитив с использованием разновидности объявления разметки, схожей с той, которая используется для объявления элементов и атрибутов. В последующих разделах вы узнаете, как объявлять каждый из типов общих примитивов.

Объявление общего внутреннего разбираемого примитива

Объявление общего внутреннего разбираемого примитива имеет следующую форму записи:

<!ENTITY ИмяПримитива ЗначениеПримитива>

Здесь ИмяПримитива есть имя примитива. Вы можете выбрать любое имя, следуя следующим правилам:

  • имя должно начинаться с буквы или с символа подчеркивания (_), после чего может следовать одна или несколько букв, цифр, точек (.), тире (–) или символов подчеркивания;
  • примитив может иметь такое же имя, что и параметрический примитив в документе. (Общие примитивы и параметрические примитивы занимают различные пространства имен.) Примитив также может иметь такое же имя, как элемент или атрибут;
  • помните, что для всего текста внутри разметки имеет значение регистр, в котором набраны символы. Это относится и к именам примитивов. Так, примитив с именем Bowser и примитив с именем bowser будут считаться различными.

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

  • строка должна быть заключена в одинарные (') или в двойные (") кавычки;
  • строка не может содержать тот же символ кавычек, который используется в качестве ограничителей;
  • строка не может содержать символ амперсанда (&), если только он не используется в качестве первого символа в указании ссылки на символ или на общий примитив. Строка также не должна содержать символ процентов (%). (Чтобы познакомиться с возможными исключениями, обратитесь к разделу 4 спецификации XML, которую вы можете найти по адресу http://www.w3.org/TR/REC-xml.);
  • содержимое строки должно быть корректным для места, в которое вы предполагаете вставить примитив. Например, если вы помещаете примитив внутрь элемента, он должен содержать один или несколько компонентов, которые могут быть корректно вставлены в другие элементы (вложенные элементы, символьные данные и т.д., как описано в разделе "Типы содержимого элемента" в "Создание корректно сформированных XML-документов" ). Либо, если вы вставляете примитив внутрь значения атрибута, он должен содержать символы, которые являются допустимыми для значений атрибута (см. раздел "Правила для корректного задания значений атрибутов" в "Создание корректно сформированных XML-документов" ). Далее в этой лекции вы узнаете, куда можно помещать общие внутренние разбираемые примитивы.

Например, следующее DTD определяет общий внутренний разбираемый примитив с именем title:

<!DOCTYPE ARTICLE
	[
	<!ELEMENT ARTICLE (TITLEPAGE, INTRODUCTION, SECTION*)>
	<!ELEMENT TITLEPAGE (#PCDATA | SUBTITLE)*>
	<!ELEMENT SUBTITLE (#PCDATA)>
	<!ELEMENT INTRODUCTION (#PCDATA)>
	<!ELEMENT SECTION (#PCDATA)>
	<!ENTITY title
		"The Story of XML
		<SUBTITLE>The Future Language of the Internet</SUBTITLE>">
	]
>

Примитив title содержит символьные данные плюс элемент ( SUBTITLE ). В соответствии с объявлением в DTD это содержимое может быть корректно вставлено только в элемент TITLEPAGE, как показано ниже:

<TITLEPAGE>
		Title:  &title;
		Author: Michael Young
	</TITLEPAGE>

XML-процессор заменит ссылку на примитив ( &title; ) содержимым примитива и обработает содержимое, как если бы вы непосредственно набрали его в документе в позиции ссылки, подобно следующему:

<TITLEPAGE>
	Title:  The Story of XML
	<SUBTITLE>The Future Language of the Internet</SUBTITLE>
	Author: Michael Young
</TITLEPAGE>

Объявление общего внешнего разбираемого примитива

Объявление для общего внешнего разбираемого примитива имеет следующую форму записи:

<!ENTITY ИмяПримитива SYSTEM СистемЛитерал>

Здесь ИмяПримитива есть имя примитива. Вы можете выбрать любое имя, следуя правилам задания имен для общих примитивов, приведенным в предыдущем разделе.

СистемЛитерал есть системный литерал, который описывает местонахождение файла, содержащего данные примитива. Системный литерал может быть ограничен одинарными (') или двойными (") кавычками и содержать любые символы, кроме символа кавычек, используемого как ограничители.

Системный литерал задает унифицированный идентификатор ресурса (URI) файла, содержащего данные примитива. На сегодняшний день URI практически то же самое, что стандартный Internet-адрес, известный как унифицированный указатель ресурса (URL). Вы можете использовать либо полный URI, например:

<!ENTITY abstract SYSTEM "http://bogus.com/documents/Abstract.xml">

либо частичный URI, который задает местонахождение относительно местонахождения XML-документа, содержащего URI, например:

<!ENTITY abstract SYSTEM "Abstract.xml">

Относительные URI в XML-документах работают аналогично относительным URL для HTML-страниц. Для более подробной информации об URI обратитесь к разделу "Использование только внешнего подмножества DTD" в "Создание валидных XML-документов" .

Файл общего внешнего разбираемого примитива может содержать только те составляющие, которые могут быть корректно вставлены в элемент (символьные данные, вложенные элементы и т.д., как описано в разделе "Типы содержимого элемента" в "Создание корректно сформированных XML-документов" ). Вы можете вставить общий внешний разбираемый примитив только внутрь содержимого элемента. (Можно включить его в значение в объявлении внутреннего примитива, но затем нужно вставить это содержимое в элемент.)

Например, следующее DTD определяет внешний файл Topics.xml как общий внешний разбираемый примитив:

<!DOCTYPE ARTICLE
	[
	<!ELEMENT ARTICLE (TITLEPAGE, INTRODUCTION, SECTION*)>
	<!ELEMENT TITLEPAGE (#PCDATA)>
	<!ELEMENT INTRODUCTION ANY>
	<!ELEMENT SECTION (#PCDATA)>
	<!ENTITY topics SYSTEM "Topics.xml">
	]
>

Вот содержимое файла Topics.xml:

<HEADING>Topics</HEADING>
The Need for XML
The Official Goals of XML
Standard XML Applications
Real-World Uses for XML

Этот типичный файл внешнего примитива содержит два пункта, которые вы можете включить в XML-элемент: вложенный элемент и блок символьных данных. Его содержимое может быть корректно вставлено в элемент INTRODUCTION (который может иметь любой тип содержимого), как показано в следующем примере:

<INTRODUCTION>
	Here’s what this article covers:
	&topics;
</INTRODUCTION>
Максим Попов
Максим Попов

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

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

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

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

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

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

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

Спасибо!