C Использование сущностей

XML 1.0 обеспечивает различные типы сущностей, называемые фрагментами содержания, которые могут использоваться как в конструкциях DTD (параметрические сущности), так и в экземплярах документов. В Разделе 2.7, мы показали, как именованные группы подражают параметричеким сущностям. В этом разделе мы покажем, как сущности могут быть объявлены в экземплярах документов, и как функциональные эквиваленты сущностей могут быть объявлены в схемах.

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

Объявление и ссылка на сущность в экземпляре документа.

<?xml version="1.0" ?>
<!DOCTYPE PurchaseOrder [
<!ENTITY eacute "é">
]>
<purchaseOrder xmlns="http://www.example.com/PO1"
             orderDate="1999-10-20>
 <!-- etc. --> 
  <city>Montr&eacute;al</city>
 <!-- etc. -->
</purchaseOrder>

Здесь, мы объявляем сущность с именем eacute, как часть внутреннего подмножества (DTD), и ссылаемся на эту сущност в содержании элемента city. Обратите внимание, когда данный экземпляр документа обрабатывается, сущность будет разименована прежде, чем будет проведена проверка правильности схемы. Другими словами, обработчик схемы определит правильность использования элемента city , использующего Montréal как значение элемента.

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

<xsd:element name="eacute" type="xsd:token" fixed="é"/>

Теперь этот элемент может быть использован в экземпляре документа:

Использование элемента вместо объекта в документе.

<?xml version="1.0" ?>
<purchaseOrder
       xmlns="http://www.example.com/PO1"
       xmlns:c="http://www.example.com/characterElements"
       orderDate="1999-10-20>
 <!-- etc. -->
  <city>Montr<c:eacute/>al</city>
 <!-- etc -->
</purchaseOrder>

В этом случае обработчик схемы обработает два элемента, элемент city и элемент eacute, содержанием, которого является единственный символ é. Обратите внимание, что дополнительный элемент усложнит строковое соответствие. Две формы имени "Montréal", представленные выше в этих двух примерах не будут соответствовать друг другу, используя обычные методы строкового сравнения.

 

Сайт создан в системе uCoz