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éal</city> <!-- etc. --> </purchaseOrder>
Здесь, мы объявляем объект с
именем eacute, как часть внутреннего (DTD) подмножества, и ссылаемся на
этот объект в содержании элемента city
. Обратите внимание, когда этот документ
примера обработан, объект будет разименован прежде, чем будет проведена
проверка правильности схемы. Другими словами, обработчик схемы определит
правильность использования Montréal в
элементе city
,
как значение элемента
.
Подобный, но не идентичный
результат, мы можем достигнуть, объявляя элемент в схеме, и устанавливая
содержание элемента следующим образом:
<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", представленные выше в этих двух примерах не будут
соответствовать друг другу, используя обычные методы строкового сравнения.