ВВЕДЕНИЕ В ТЕХНОЛОГИИ W3C ЛЕКЦИЯ 12. DTD, XML SCHEMA, XPATH, XSLT

advertisement
ВВЕДЕНИЕ В
ТЕХНОЛОГИИ W3C
ЛЕКЦИЯ 12. DTD, XML SCHEMA, XPATH, XSLT
DOCUMENT TYPE DEFINITION (DTD)
Определение допустимых компонентов XML
документа:
• Элементов
• Атрибутов
НАЗНАЧЕНИЕ DTD
• XML документ описывает собственный формат
• Соглашение о формате обмена данными
• Проверка файлов на соответствие формату
ВАРИАНТА ОПРЕДЕЛЕНИЯ DTD
Встроенный
Внешний
• В том же документе что и
тело XML
• Внутри определения
DOCTYPE
• <!DOCTYPE root-element
[element-declarations]>
• В отдельном файле
• DOCTYPE ссылается на файл
• <!DOCTYPE root-element
SYSTEM "filename">
БЛОКИ DTD
• Elements
• Attributes
• Entities
• PCDATA
• CDATA
ЭЛЕМЕНТЫ
• Основа XML
• <!ELEMENT element-name category>
• <!ELEMENT element-name (element-content)>
КАТЕГОРИИ ЭЛЕМЕНТОВ
• Пустой
• <!ELEMENT br EMPTY>
• <br />
• С обрабатываемыми данными
• <!ELEMENT element-name (#PCDATA)>
• С произвольным содержимым
• <!ELEMENT note ANY>
• С дочерними элементами
• <!ELEMENT element-name (child1,child2,...)>
МОДИФИКАТОРЫ
•
Только одно вхождение
•
•
Одно и более вхождений
•
•
<!ELEMENT note (message+)>
Ноль и более вхождений
•
•
<!ELEMENT note (message)>
<!ELEMENT note (message*)>
Не более одного вхождения
•
<!ELEMENT note (message?)>
АТРИБУТЫ
• Метаданные элементов
• <!ATTLIST element-name attribute-name attribute-type attributevalue>
• <!ATTLIST payment type CDATA "check">
• <payment type="check" />
ТИПЫ АТРИБУТОВ
CDATA
Символьные данные
(en1|en2|..)
Список значений
ID
Уникальный идентификатор
IDREF
Ссылка на идентификатор другого элемента
IDREFS
Ссылка на идентификаторы других элементов
NMTOKEN
Правильное имя XML
NMTOKENS
Список правильных имен XML
ENTITY
Сущность
ENTITIES
Список сущностей
NOTATION
Примечание
xml:
Предопределенное значение xml
ТИПЫ ЗНАЧЕНИЙ АТРИБУТОВ
• value – некоторое значение по умолчанию
• #REQUIRED – обязательный атрибут
• #IMPLIED – необязательный атрибут
• #FIXED value – неизменяемое значение
СУЩНОСТИ (ENTITIES)
• Переменные используемые для подстановки
значений
• <!ENTITY writer "Donald Duck.">
<!ENTITY copyright "Copyright W3Schools.">
• <author>&writer;&copyright;</author>
XML - SCHEMA
• Альтернатива DTD
• Основана на XML
• XML Schema Definition (XSD)
ЧТО ОПИСЫВАЕТ XML-SCHEMA
• Элементы, которые может содержать документ
• Атрибуты, которые может содержать документ
• Отношения между элементами
• Порядок дочерних элементов
• Типы данных для атрибутов
• Значения по умолчанию и фиксированные значения
ПРЕИМУЩЕСТВА XML SCHEMA
• Расширяемость
• Более широкие возможности
• Написана на XML
• Поддержка типов данных
• Поддержка пространств имен
ЭЛЕМЕНТ <SCHEMA>
•
•
Корневой элемент XML Schema
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3schools.com"
xmlns="http://www.w3schools.com"
elementFormDefault="qualified">
...
...
</xs:schema>
АТТРИБУТЫ
• xmlns:xs=http://www.w3.org/2001/XMLSchema
• Пространство имен схемы
• targetNamespace=http://www.w3schools.com
• Пространство имен документа, описываемого схемой
• xmlns=http://www.w3schools.com
• Пространство имен по умолчанию
ССЫЛКИ НА XML SCHEMA
• <note xmlns="http://www.w3schools.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"
xsi:schemaLocation="http://www.w3schools.com
note.xsd">
ОПРЕДЕЛЕНИЕ ЭЛЕМЕНТОВ
• <xs:element name="xxx" type="yyy"/>
• name – имя элемента
• type – тип данных
• default = “value” – значение по умолчанию
• fixed = “value” – фиксированное значение
ОПРЕДЕЛЕНИЕ АТРИБУТА
• <xs:attribute name="xxx" type="yyy"/>
• name – имя элемента
• type – тип данных
• default = “value” – значение по умолчанию
• fixed = “value” – фиксированное значение
• use=“required” – обязательный атрибут
ОГРАНИЧЕНИЯ
• <xs:element name="age">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="120"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
ОГРАНИЧЕНИЯ
•
<xs:element name="car">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Audi"/>
<xs:enumeration value="Golf"/>
<xs:enumeration value="BMW"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
ОГРАНИЧЕНИЯ
• <xs:element name="letter">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-z]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
СЛОЖНЫЕ ТИПЫ ДАННЫХ
• <xs:element name="employee" type="personinfo"/>
<xs:complexType name="personinfo">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
ИНДИКАТОРЫ
• Порядка
• All
• Choice
• Sequence
• Вхождения
• maxOccurs
• minOccurs
• Групп
• Group name
• attributeGroup name
ЭЛЕМЕНТ <ANY>
•
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
<xs:any minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
АТРИБУТ <ANYATTRIBUTE>
•
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
<xs:anyAttribute/>
</xs:complexType>
</xs:element>
XPATH
• Язык поиска информации в XML
• Используется
•
•
•
•
XSLT
XQuery
XPointer
XLink
ТИПЫ УЗЛОВ
• Элементы
• Атрибуты
• Текст
• Пространства имен
• Инструкции по обработке
• Комментарии
• Документы
АТОМАРНЫЕ ЗНАЧЕНИЯ
• Узлы не имеющие предков и потомков
• Текст в элементах
• Значения атрибутов
ТИПЫ ОТНОШЕНИЙ
• Родитель
• Дочерний
• Ровесник
• Предок
• Потомок
ВЫБОР УЗЛОВ
nodename
Все узлы с указанным именем
/
Корневой элемент
//
Выбор элементов не зависимо от их
положения в документе
.
Текущий узел
..
Родительский узел
@
Выбор атрибута
ПРЕДИКАТЫ
• [1] – номер узла
• []last()] – последний узел
• [last()-1] – предпоследний узел
• [position()<3] – первые два узла
• [@attr] – все элементы с указанным атрибутом
• [@attr=“value”] – все элементы с выбранным значением
атрибута
ПОИСК НЕИЗВЕСТНЫХ УЗЛОВ
• * - все элементы
• @* - все атрибуты
• node() – любой узел
НАПРАВЛЕНИЯ ПОИСКА
ancestor
предки
ancestor-or-self
Предки или сам узел
attribute
child
descendant
атрибуты
Дочерние узлы
Потомки
descendant-or-self
Потомки или сам узел
following
Все в документе после закрывающего тега
following-sibling
namespace
parent
preceding
Все ровесники после закрывающего тега
Все пространства имен
Родительский узел
Все в документе до открывающего тега
preceding-sibling
self
Все ровесники до открывающего тега
Текущий элемент
XSLT
• Язык трансформации XML документа в другой XML
документ
• Использует XPath для навигации по документу
ОПРЕДЕЛЕНИЕ ФАЙЛА
ТРАНСФОМАЦИИ
• <xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
• <xsl:transform version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<XSL:TEMPLATE>
• Элемент описания шаблона
• Атрибут match содержит XPath выражение к
которому применяется шаблон
<XSL:VALUE-OF>
• Извлечение данных из XML элементов
• <td><xsl:value-of select="catalog/cd/title"/></td>
<td><xsl:value-of select="catalog/cd/artist"/></td>
<XSL:FOR-EACH>
• Применение для каждого элемента, найденного
запросом
•
<xsl:for-each select="catalog/cd">
<tr>
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="artist"/></td>
</tr>
</xsl:for-each>
<XSL:SORT>
• Сортировка элементов выборки
• Используется совместно с <xsl:for-each>
• <xsl:for-each select="catalog/cd">
<xsl:sort select="artist"/>
<tr>
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="artist"/></td>
</tr>
</xsl:for-each>
<XSL:IF>
• Проверка условия
• <xsl:if test="expression">
...some output if the expression is true...
</xsl:if>
<XSL:CHOOSE>
•
•
Выбор из нескольких выриантов
<xsl:choose>
<xsl:when test="expression">
... some output ...
</xsl:when>
<xsl:otherwise>
... some output ....
</xsl:otherwise>
</xsl:choose>
<XSL:APPLY-TEMPLATES>
• Применение именованного шаблона к текущему
элементу или его дочерним элементам
Download