XML - статьи

         

Добавление XML-атрибутов в GraphML-элементы


В большинстве случаев, дополнительная информация может (и должна) быть связана с GraphML-элементами с помощью , что гарантируется совместимостью GraphML-парсеров. Однако, в ряде случаев более удобно использовать XML-атрибуты. Предположим у вас имеется парсер, который умеет обрабатывать -атрибут href и корректно интерпретировать его как URL. Предположим вы хотите хранить в GraphML граф, узлы которого представляют собой WWW-страницы. Для ассоциации узла со страницей его модель должна позволять вам в теге node присваивать атрибуту xlink:href URL-ссылку на соответсвующую страницу:

Элемент node, содержащий URL-ссылку

... <node id="n0" xlink:href="http://graphml.graphdrawing.org"/> ...

Для добавления XML-атрибутов в GraphML-элементы используется механизм расширение GraphML. Это расширение должно быть определено в XML-схеме. В документе показан атрибут href добавленный к элементу node:

Расширение GraphML: атрибуты

<?xml version="1.0" encoding="UTF-8"?> <xs:schema targetNamespace="http://graphml.graphdrawing.org/xmlns" xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" >

<xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>

<xs:redefine schemaLocation="http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd"> <xs:attributeGroup name="node.extra.attrib"> <xs:attributeGroup ref="node.extra.attrib"/> <xs:attribute ref="xlink:href" use="optional"/> </xs:attributeGroup> </xs:redefine>

</xs:schema>

Приведенный выше документ имеет следующие функциональные составляющие: в качестве корневого элемента документ имеет элемент schema. Значение атрибута targetNamespace ="http://graphml.graphdrawing.org/xmlns" говорит о том, что данный документ соответствует спецификации языка GraphML. Три следующих строки задают именное пространство документа, используемое по умолчанию и префикс именного пространства для XLink и XMLSchema . Атрибуты elementFormDefault и attributeFormDefault в данном примере неважны.

<xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/> задает адрес местоположения именного пространства XLink , заданного в файле xlink.xsd .

<xs:redefine schemaLocation="http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd"> задает файл со схемой которая должна быть переопределена. Группа атрибутов node.extra.attrib включается в список атрибутов элемента node. После переопределения указанная группа атрибутов будет содержать старое содержимое , плюс атрибут с именем xlink:href, который является необязательным.

Кроме node.extra.attrib, имеются соответствующие группы атрибутов для всех основных GraphML-элементов.

В документе приведен пример документа который соответствует схеме .

GraphML-документ с дополнительными XML-атрибутами

<?xml version="1.0" encoding="UTF-8"?> <graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns graphml+xlink.xsd"> <graph edgedefault="directed"> <node id="n0" xlink:href="http://graphml.graphdrawing.org"/> <node id="n1" /> <edge source="n0" target="n1"/> </graph> </graphml>



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