Опубликован: 24.01.2007 | Уровень: для всех | Доступ: платный
Лекция 3:

Создание корректно сформированных XML-документов

< Лекция 2 || Лекция 3: 12345 || Лекция 4 >

Добавление элементов в документ

Элементы в XML-документе содержат фактическую информацию, имеющуюся в документе (для листинга 3.1, например, это названия книг, фамилии авторов, цена и т. д.), а также отражают логическую структуру информации.

Элементы организованы в иерархическую древовидную структуру, в которой одни элементы вложены в другие. Документ должен иметь один и только один элемент верхнего уровня – элемент Документ, или корневой элемент – а все другие элементы вложены в него. Представленный ниже XML-документ является корректно сформированным.

<?xml version="1.0" encoding="windows-1251" ?>
<!--Корректно сформированный XML-документ.-->
<INVENTORY>
   	<BOOK>
      		<TITLE>The Adventures of Huckleberry Finn</TITLE>
      		<AUTHOR>Mark Twain</AUTHOR>
      		<BINDING>mass market paperback</BINDING>
      		<PAGES>298</PAGES>
      		<PRICE>$5.49</PRICE>
   	</BOOK>
   	<BOOK>
      		<TITLE>Leaves of Grass</TITLE>
      		<AUTHOR>Walt Whitman</AUTHOR>
      		<BINDING>hardcover</BINDING>
      		<PAGES>462</PAGES>
      		<PRICE>$7.75</PRICE>
   	</BOOK>
</INVENTORY>

А вот следующий документ не является корректно сформированным.

<?xml version="1.0" encoding="windows-1251" ?>
<!--Это НЕ корректно сформированный документ.-->
<BOOK>
      	<TITLE>The Adventures of Huckleberry Finn</TITLE>
      	<AUTHOR>Mark Twain</AUTHOR>
      	<BINDING>mass market paperback</BINDING>
      	<PAGES>298</PAGES>
      	<PRICE>$5.49</PRICE>
</BOOK>
<BOOK>
      	<TITLE>Leaves of Grass</TITLE>
      	<AUTHOR>Walt Whitman</AUTHOR>
      	<BINDING>hardcover</BINDING>
      	<PAGES>462</PAGES>
      	<PRICE>$7.75</PRICE>
</BOOK>

Элементы также должны быть правильно вложены. При этом если элемент (ограниченный начальным и конечным тегами) начинается внутри другого элемента, то он должен и заканчиваться внутри того же элемента. Например, эти элементы являются корректно сформированными:

<BOOK>
      	<TITLE>Leaves of Grass</TITLE>
      	<AUTHOR>Walt Whitman</AUTHOR>
</BOOK>

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

<!-- НЕ корректно сформированный документ.-->
<BOOK><TITLE>The Adventures of Huckleberry Finn</BOOK></TITLE>

Примечание. Элемент, который содержит один или более вложенных элементов (например, BOOK в листинге 3.1), называется родительским элементом. Элемент, содержащийся непосредственно внутри родительского элемента (например, TITLE внутри BOOK ), называется дочерним элементом, субэлементом, или вложенным элементом.

Анатомия элемента

Элемент обычно состоит из начального тега, содержимого и конечного тега, как показано на рисунке 3.3.


Рис. 3.3.

В отличие от HTML, XML требует наличия как начального, так и конечного тега. (Единственным исключением является элемент без содержимого, для которого вы можете использовать специальный тег пустого элемента, о котором пойдет речь далее в этой лекции.)

Имя, которое содержится в стартовой позиции начального тега и в конечном теге ( TITLE в нашем примере), называется типом или родовым идентификатором элемента (GI). Имя элемента идентифицирует особый тип или класс элемента, а не собственно элемент. Таким образом, документ может содержать более одного элемента с одинаковыми именами типа (например, элементы BOOK или TITLE в листинге 3.1).

При добавлении элемента в XML-документ вы можете выбрать любое имя типа по вашему желанию, руководствуясь при этом следующими правилами:

  • имя должно начинаться с буквы или с символа подчеркивания (_), после чего могут идти буквы, цифры, символы точки (.), тире (–) или подчеркивания;
  • в спецификации XML указано, что имена типов элементов, которые начинаются с префикса "xml" (при любом сочетании строчных или прописных букв), "зарезервированы для стандартных имен". Хотя Internet Explorer 5 не слишком требователен в этом отношении, лучше не использовать этот префикс, дабы избежать будущих неприятностей.

Ниже приведены примеры правильного задания имен типов элементов.

Part
_lstPlace
A
B-SECTION
Street.Address.1

Следующие имена использовать недопустимо:

1stPlace	<!-- В качестве первого символа нельзя использовать цифру -->
B Section	<!-- Пробел внутри имени не разрешается -->
B/Section	<!-- Косая черта внутри имени не разрешается -->
:Chapter	<!-- Двоеточие нельзя использовать в качестве первого символа -->
A:Section	<!-- В IE5 допускается, только если вы объявили А как пространство имен -->

Примечание. В соответствии с XML-спецификацией двоеточие (:) в имени элемента зарезервировано для задания пространства имен. Пространства имен дают возможность дифференцировать элементы с одними и теми же именами. Этот вопрос будет обсуждаться в "Отображение XML-документов с использованием таблиц каскадных стилей" в разделе "Вставка HTML-элементов в XML-документы и использование пространств имен". Internet Explorer 5 разрешает вам использовать двоеточие в имени элемента только в том случае, если оно следует за пространством имен, объявленным вами в документе. Например, запись A:Section будет корректной, только если вы объявили А как пространство имен.

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

<Title>Chapter one </title>    <!-- НЕ корректно. -->

Соблюдение регистра существенно для имен элементов, как и для всего текста в описании разметки. Так, тип элемента с именем Ace не будет эквивалентен типу ace или ACE.

< Лекция 2 || Лекция 3: 12345 || Лекция 4 >
Максим Попов
Максим Попов

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

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

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

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

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

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

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

Спасибо!

Наталья Алмаева
Наталья Алмаева
Россия
Светлана Казьмина
Светлана Казьмина
Россия, Волгодонск