
- •Оглавление
- •1. История появления xml и его особенности. Хорошо оформленный документ
- •2. Структура документа xml. Верный документ
- •3. Ссылки на сущности, секция cdata. Комментарии, атрибуты, имена
- •4. Пространства имён xml. Инструкции по обработке
- •5. Конструкции dtd: объявление типа элемента, объявление атрибутов
- •6. Конструкции dtd: объявление сущности, объявление обозначения
- •7. Размещение описания dtd. Программы-анализаторы xml
- •8. Описание схемы документа на языке xsd. Встроенные простые типы
- •9. Определение новых простых типов в xsd
- •10. Объявление элементов и их атрибутов в xsd
- •11. Определение сложных типов в xsd
- •12. Пространства имён языка xsd. Связь документа xml со своей схемой
- •13. Создание ссылок на языке xLink. Пространство имён языка xLink
- •14. Атрибуты, используемые при создании ссылок на языке xLink
- •15. Типы ссылок, создаваемых на языке xLink
- •16. Создание банка ссылок. Программы-обработчики атрибутов xLink
- •17. Таблицы стилей css в языке xml. Язык описания стилей xsl
- •18. Язык записи преобразований xslt бред, не стала разбираться, что из этого надо, а что нет
15. Типы ссылок, создаваемых на языке xLink
Типы ссылок
Как видно из предыдущих примеров, ссылки бывают разных типов. Во-первых, ссылка может быть простой или расширенной. Во-вторых, ссылка может быть информационным ресурсом, указателем на ресурс, дугой графа или просто заголовком. Кроме того, значением атрибута type может служить слово none, означающее, что остальные атрибуты и содержимое элемента не имеют никакого отношения к ссылкам.
Тип none
Указание в качестве значения атрибута xlink:type слова none показывает, что элемент вовсе не является ссылкой, несмотря на то, что другие атрибуты и его содержимое могут вьгглядеть так, как будто относятся к языку XLink. Это полезно, если в каких-то ситуациях элемент надо использовать как ссылку, а в других ситуациях — нет. Вот, например, определение простого типа, сделанное на языке XSD. Определяемый тип состоит из двух значений: "simple" И "none".
<xsd:simpleType name="docType">
<xsd:restriction base="xsd:name">
<xsd:enumeration value="simple" /> <xsd:enumeration value="none" />
</xsd:restriction>
</xsd:simpleType>
Далее идет объявление элемента anEiem с атрибутом xlink:type только что определенного типа locType. Такой атрибут принимает значения "simple"
ИЛИ "none".
<xsd:element name="anElem" type="xsd:string">
<xsd:complexType>
<xsd:attribute name="xlink:type" type="locType"
use="required" /> <xsd:attribute name="xlink:href" type="xsd:anyURL" use="optional" /> </xsd:complexType>
</xsd:element>
После этого объявления элемент anEiem можно использовать в документах XML как ссылку:
<anElem xlink:type="simple" xlink:href="fl.xml">
Ссылка на описание </апЕ1ет>
или как простой элемент:
<anElem xlink:type="none">
Простое описание </anElem>
Тип locator
Ссылка типа locator описывает удаленный информационный ресурс. Описание выполняется обязательным атрибутом href, записанным явно или имеющим значение по умолчанию. Значением атрибута href служит адрес URL описываемого информационного ресурса. Например:
<myBiogr xlink:type="locator"
xlink:href="http://hsh.com/names/ivanov.xml"xlink:label="L1234" />
Описание удаленного ресурса используется затем при создании ссылки-дуги типа arc.
Ссылка типа locator не применяется самостоятельно, а только как один из элементов сложной ссылки типа extended. Пример такого использования приведен в листинге 4.2. Если элемент типа locator не записан внутри сложной ссылки типа extended, то он не будет обрабатываться как ссылка, а будет считаться просто неким элементом XML.
Кроме обязательного атрибута href, элементы типа locator могут содержать атрибуты role, title и label, и др. У элементов типа locator может быть любое тело, в том числе и вложенные элементы. Вложенные элементы не будут обрабатываться как ссылки.
Ссылки типа simple связывают один документ, тот, в котором определена ссылка, с другим документом или другой частью того же самого документа. Таким образом, связь устанавливается только между двумя документами, направление связи идет только от текущего документа, в котором записана ссылка типа simple, к удаленному ресурсу, адрес URL которого указан в атрибуте href.
В ссылке типа simple атрибут href необязателен. В случае его полного отсутствия, если у него нет даже значения по умолчанию, ссылка типа simple просто описывает информационный ресурс подобно ссылке типа resource. Пример ссылки типа simple приведен в листинге 4.1.
Кроме необязательного атрибута href, в элементах-ссылках типа simple можно использовать атрибуты role, arcrole, title, show, actuate И атрибуты, не относящиеся к языку XLink. У элемента типа simple может быть любое содержимое, но вложенные элементы не будут рассматриваться как ссылки.
Ссылка типа extended, пример которой уже приведен в листинге 4.2, может связывать любое число документов и других информационных ресурсов. Некоторые из этих связей могут быть входящими, другие — выходящими, третьи могут связывать сторонние документы. Описание таких связей производится элементами, вложенными в элемент-ссылку типа extended. Эти вложенные элементы — тоже ссылки, их типы — title, resource, locator или arc.
Самый простой тип ссылки — тип title. Атрибут xlink:type — это единственный обязательный атрибут языка XLink в такой ссылке. Более того, кроме него в ссылке типа title нет ни одного атрибута языка XLink, хотя могут быть атрибуты из другого пространства имен. Ссылка типа title ни на что не ссылается. Ее обычное назначение — дать описание расширенной ссылке, предназначенное для человека, а не для программы-обработчика. Например:
<rem xlink:type="title">
Другие материалы по теме </rem>
Значение атрибута title — простая строка символов, а содержимым элемента-ссылки типа title может быть что угодно, в том числе какой-то размеченный текст, содержащий вложенные элементы. Например:
<im xlink:type="title">
<html> <body>
<п2>Чертеж 2</h2>
<img src="p2302.gif">
</body> </html> </im>
Элементы-ссылки типа title можно вложить не только в ссылку типа extended, но и в ссылки типа locator или arc.
Ссылка типа resource записывается в теле сложной ссылки типа extended и отмечает локальный ресурс, чаще всего текущий документ XML, в котором записана ссылка. Правильнее было бы сказать, что это не ссылка, а пометка, сделанная в каком-то месте локального ресурса атрибутом label, как это представлено, например, в листинге 4.2.
Кроме атрибута label в ссылках типа resource можно использовать атрибуты title и role языка XLink, а также любые атрибуты, определенные самостоятельно. У элемента типа resource может быть любое содержимое, в том числе и вложенные элементы, хотя чаще всего такой элемент бывает пустым.
Ссылка типа arc создает дугу. Как правило, каждая такая ссылка создает дугу только одного вида: входящую, выходящую или стороннюю. В создании дуги участвуют атрибуты from и to. Они задают начало и конец дуги.
Кроме этих атрибутов в ссылках-дугах можно использовать атрибуты arcrole, title, show и actuate. Содержимое элемента типа arc может быть любым, но вложенные в него элементы не будут рассматриваться как ссылки.