Сведения о примерах изменения и проверки файлов XML

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

Это расширенный пример, показывающий, каким образом можно использовать элемент any из спецификации схемы XML для расширения документа XML.

Изменение PurchaseOrder.xml

Показывает, каким образом можно использовать файл схемы XML (PurchaseOrder.xsd) для предоставления помощи по редактированию при изменении файла XML (PurchaseOrder.xml).

В каталоге для пользователей в разных странах показано, каким создать производный тип и использовать атрибут xsi:type в документе экземпляра XML.

Пример report.xsd показывает, как работать с несколькими схемами из разных пространств имен.

Использование групп замены Показывает, каким образом схема XML позволяет использовать именованные группы элементов для замены других элементов.

anyElement

Этот пример показывает, каким образом можно использовать элемент any в схеме XML для создания расширяемой модели материалов в документе XML. Пример состоит из двух каталогов:
  1. anyNamespace - показывает, как использовать пространство имен ##any
  2. specifiedNamespace - показывает, как использовать определенное пространство имен

Использование пространства имен ##any

Схема Book.xsd в каталоге anyNamespace имеет сложный тип BookType. Содержимым BookType является название, автор, год, isbn, за которым может следовать любой (необязательный) допустимый XML, как указано в элементе any: <any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>

Это означает, что в документе экземпляра можно вставить любой элемент XML для расширения определения BookType. В этом примере имеются две другие схемы: Publisher.xsd и Reviewer.xsd. Используем их для расширения определения BookType в нашем документе экземпляра. Обратите внимание, что обе эти схемы находятся в разных пространствах имен.

BookRev.xml связан как с Book.xsd, так и с Reviewer.xsd с помощью атрибута xsi:schemaLocation. Он показывает, каким образом можно расширить BookType с помощью элемента reviewer для предоставления возможности оставлять комментарии о книге.
  1. На панели Эскиз редактора XML выберите элемент opensource:reviewer. Во всплывающем меню выберите Добавить дочерний объект > Комментарий, чтобы добавить комментарий для элемента reviewer.
  2. Выполнить проверку - документ является допустимым, поскольку элемент reviewer не выходит за пределы ограничений, определенных в файле Reviewer.xsd.
BookPub.xml связан как с Book.xsd, так и с Publisher.xsd с помощью атрибута xsi:schemaLocation. Он показывает, каким образом можно расширить BookType с помощью элемента company, чтобы предоставить информации об издателе для книги.
  1. На панели Эскиз редактора XML выберите элемент pub:company. Во всплывающем меню выберите Удалить для его удаления.
  2. Выполнить проверку - документ является допустимым, поскольку элемент any является необязательным.

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

Схема Book.xsd в каталоге specifiedNamespace имеет сложный тип BookType. Содержимым BookType является название, автор, год, isbn, за которым может следовать любой (необязательный) допустимый XML, принадлежащий к пространству имен http://www.wesley.com, как указано в элементе any: <any namespace="http://www.wesley.com" minOccurs="0" maxOccurs="unbounded"/>

Это означает, что в документе экземпляра можно вставить любой элемент XML для расширения определения BookType, если он принадлежит к пространству имен http://www.wesley.com. В данном примере Reviewer.xsd принадлежит к этому пространству имен.

Book.xml связан как с Book.xsd, так и с Reviewer.xsd с помощью атрибута xsi:schemaLocation. Он показывает, каким образом можно расширить BookType с помощью элемента reviewer для предоставления возможности оставлять комментарии о книге.

Для Book.xml - на панели Эскиз редактора XML выберите элемент rev:reviewer. Во всплывающем меню выберите Добавить дочерний объект > Комментарий, чтобы добавить комментарий для элемента reviewer. Выполните проверку, чтобы убедиться в допустимости документа.

Создание экземпляров на основе схем с элементом any

С помощью мастера Создать XML можно создать экземпляр схемы XML.
  1. На панели навигации выберите объект Book.xsd object в каталоге "specifiedNamespace". В контекстном меню объекта Book.xsd выберите Создать > Файл XML, чтобы вызвать мастер Создать XML.
  2. На первой странице мастера укажите имя нового файла - Book1.xml. Нажмите кнопку Далее.
  3. Можно заметить, что группа элементов Информация о схеме XML содержит таблицу, в которой показано 2 пространства имен. Первое пространство имен соответствует Book.xsd. На второе пространство имен ссылается элемент any, находящийся в Book.xsd.
  4. Нажмите кнопку Готово.

Добавление пространств имен в документ XML

В редакторе XML предусмотрен удобный механизм добавления дополнительных пространств имен в документ XML. При добавлении пространств имен вручную (путем введения на панели Исходный текст) легко допустить ошибку; можно случайно указать неправильный URI пространства имен схемы, а синтаксис атрибута расположения схемы может вызвать затруднения. Для помощи в данной задаче предусмотрено окно диалога. На панели Схема или Эскиз можно обратиться к окну диалога Изменить пространства имен, предусмотренного для помощи при выполнении этой задачи.
  1. Откройте файл BookPub.xml в каталоге anyElement/anyNamespace.
  2. В контекстном меню корневого элемента выберите пункт Изменить пространства имен.
  3. Нажмите кнопку Добавить, чтобы вызвать окно диалога для ввода информации для нового пространства имен.
  4. Выберите Укажите новое пространство имен. Нажмите кнопку Выбрать и найдите файл Reviewer.xsd в каталоге anyNamespace.
  5. Заполните поля Приставка и Имя пространства имен.
  6. Нажмите кнопку OK, затем повторно нажмите OK. Будет добавлен атрибут xmlns:openSource, а обновлено значение атрибута xsi:schemalocation.
  7. Теперь, после добавления пространства имен, можно заметить, что если в контекстном меню элемента pub:company выбрать пункт Добавить перед или Добавить после, то можно добавить элементы из пространства имен Reviewer.xsd (например, http://www.apache.com).

Изменение PurchaseOrder.xml

Файл PurchaseOrder.xsd предоставляет правила для определения содержимого файла PurchaseOrder.xml. Он связан с файлом PurchaseOrder.xml с помощью атрибута xsi:schemaLocation.

Ограничения на вхождения

В PurchaseOrder.xsd элемент item (в разделе сложного типа Элементы) имеет необязательный элемент shipDate со значением minOccurs=0:
		<element name="shipDate" type="date" minOccurs="0"/>

Для PurchaseOrder.xml - на панели Эскиз редактора XML выберите первый элемент в разделе элемента items. В его контекстном меню выберите Добавить дочерний объект > shipDate, чтобы добавить shipDate в элемент item. Будет добавлен элемент shipDate, в качестве значения которого задана текущая дата. Обратите внимание, что во всплывающем меню Добавить дочерний объект больше нет пункта shipDate, поскольку выполняется условие наличия не более одного элемента shipDate.

Если выбрать элемент shipDate и во всплывающем меню выбрать Удалить, то опция Добавить дочерний объект > shipDate опять станет доступной.

Перечислимый тип элемента

В PurchaseOrder.xsd. сложный тип USAddress имеет элемент state (штат), тип которого - простой тип USState
		<element name="state" type="po:USState"/>
Простой тип USState образован на основе строки с перечислимым фасетом:
		<simpleType name="USState"> 
			<restriction base="string">
				<enumeration value="CA"></enumeration>
 				<enumeration value="PA"></enumeration>
				<enumeration value="AR"></enumeration>
			</restriction>
		</simpleType>

Для PurchaseOrder.xml - на панели Эскиз редактора XML выберите текстовое поле штата в разделе элемента shipTo. Появится список, в котором можно выбрать одно из трех значений (CA, PA или AR), ограниченных значениями перечисления в простом типе USState.

Использование производных типов в документах экземпляра (атрибут xsi:type)

В файле ipo.xml показано, каким образом можно отправить товары в Великобританию, а счет - в США по указанному адресу. В ipo.xsd элементы billTo и shipTo определены как относящиеся к типу Address:
		<element name="shipTo" type="ipo:Address"/>
		<element name="billTo" type="ipo:Address"/>

В address.xsd два сложных типа USAddress и UKAddress расширяют базовый тип Address.

В документе экземпляра ipo.xml может быть выбрано для использования другое порождение Address (например USAddress) с помощью атрибута xsi:type.

На панели Эскиз редактора XML выберите атрибут xsi:type в разделе элемента shipTo. Обратите внимание, доступен список для выбора типа Address, который требуется использовать. Пошаговая поддержка будет зависеть от типа, выбранного в поле со списком.

Работа с несколькими схемами и пространствами имен

Пример Квартальный отчет показывает, как работать с несколькими схемами из разных пространств имен. Он включает следующие файлы в папке PurchaseOrder/international: address.xsd, ipo.xsd, report.xsd и report.xml.

По мере расширения схем часто бывает целесообразно разделить их содержимое на несколько документов схем для упрощения обслуживания, повторного использования и читаемости. Схема XML определяет два конструктивных элемента: include и import. Элемент include вводит определения и объявления из включенной схемы в текущую схему. Необходимо, чтобы включенная схема находилась в том же целевом пространстве имен, в котором находится включающая схема. Аналогичный алгоритм и у элемента import, с одним исключением - импортируемая схема может происходить из другого пространства имен.

Дополнительная информация об элементах include и import приведена в электронной справке редактора схемы XML.

Использование групп замены

Файл Catalogue.xsd объявляет, что элементы Книга и Журнал должны быть в группе замены для элемента Публикация:
		<element name="Book" type="Catalogue:BookType"
				substitutionGroup="Catalogue:Publication"/>
		<element name="Magazine" type="Catalogue:MagazineType"
				substitutionGroup="Catalogue:Publication"/>

Содержимым элемента Каталог может быть любой элемент, имеющийся в группе замены. На панели Эскиз редактора XML выберите меню Добавить дочерний объект элемента Каталог. Обратите внимание, элемент Book и Magazine можно использовать в качестве замены содержимого элемента Publication. Кроме того, в этом примере элемент Publication был объявлен как абстрактный, чтобы исключить вероятность использования элемента Publication непосредственно в документе экземпляра.


Комментарии