XML - статьи


A.3 Расширенные типы элементов и названия атрибутов


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

[Определение:] Расширенный тип элемента представлен как пустой элемент XML типа ExpEType. Он имеет обязательный атрибут type, определяющий в этом типе , и необязательный атрибут ns, определяющий , если данный элемент является полным.

[Определение:] Расширенное имя атрибута представлено как пустой элемент XML типа ExpAName. Оно имеет обязательный атрибут name, определяющий название. Если атрибут является глобальным, он имеет обязательный атрибут ns, определяющий . В противном случае имеется обязательный атрибут eltype, определяющий тип задействованного элемента, а также необязательный атрибут elns, определяющий название пространства имен для этого элемента, если таковое известно.

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

<!--1 --> <section xmlns='urn:com:books-r-us'>

<!-- 2 -->   <title>Book-Signing Event</title>

<!-- 3 -->   <signing>

<!-- 4 -->     <author title="Mr" name="Vikram Seth" />

<!-- 5 -->     <book title="A Suitable Boy" price="$22.95" />

             </signing>

           </section>



Названия должны обрабатываться следующим образом:

СтрокаИмяРезультат
1section <ExpEType type="section" ns="urn:com:books-r-us" />
2 title<ExpEType type="title" ns="urn:com:books-r-us" />
3 signing<ExpEType type="signing" ns="urn:com:books-r-us" />
4 author<ExpEType type="author" ns="urn:com:books-r-us" />
4 title <ExpAName name='title' eltype="author" elns="urn:com:books-r-us" />
4 name <ExpAName name='name' eltype="author" elns="urn:com:books-r-us" />
5 book<ExpEType type="book" ns="urn:com:books-r-us" />
5 title<ExpAName name='title' eltype="book" elns="urn:com:books-r-us" />
5 price<ExpAName name='price' eltype="book" elns="urn:com:books-r-us" />
<
<!-- 1 --> <RESERVATION xmlns:HTML="http://www.w3.org/TR/REC-html40">

<!-- 2 --> <NAME HTML:CLASS="largeSansSerif">Layman, A</NAME>

<!-- 3 --> <SEAT CLASS="Y" HTML:CLASS="largeMonotype">33B</SEAT>

<!-- 4 --> <HTML:A HREF='/cgi-bin/ResStatus'>Check Status</HTML:A>

<!-- 5 --> <DEPARTURE>1997-05-24T07:55:00+1</DEPARTURE></RESERVATION>
1 RESERVATION<ExpEType type="RESERVATION" />
2 NAME<ExpEType type="NAME" />
2 HTML:CLASS <ExpAName name="CLASS" ns=http://www.w3.org/TR/REC-html40 />
3 SEAT<ExpEType type="SEAT" />
3 CLASS<ExpAName name="CLASS" eltype="SEAT">
3 HTML:CLASS<ExpAName name="CLASS" ns="http://www.w3.org/TR/REC-html40" />
4 HTML:A<ExpEType type="A" ns="http://www.w3.org/TR/REC-html40" />
4 HREF<ExpAName name="HREF" eltype="A" elns="http://www.w3.org/TR/REC-html40" />
5 DEPARTURE<ExpEType type="DEPARTURE" />

Содержание раздела