XML - статьи

Информация для парсера


Для оптимизации синтаксического разбора документа с помощью парсера используются специальные метаданные, которые могут быть добавлены к некоторым GraphML-элементам с помощью XML-атрибутов. Все XML-атрибуты, задающие метаданные имеют префикс parse . Имеется два вида метаданных: информация о количестве элементов и информация о способе кодирования данных.

Во первых рассмотрим информацию о количестве элементов. Для элемента graph определены следующие XML-атрибуты: XML-атрибут parse.nodes задает количество узлов в графе, XML-атрибут parse.edges - количество ребер. XML-атрибут parse.maxindegree определяет максимальное количество входящих в вершину ребер, а XML-атрибут parse.maxoutdegree - максимальное количество исходящих из вершины ребер. Для элемента node XML-атрибут parse.indegree определяет максимальное количество входящих ребер для данной вершины, а XML-атрибут parse.outdegree - максимальное количество исходящих ребер для данной вершины.

Во вторых рассмотрим информацию, связанную с кодированием. Для элемента graph определены следующие XML-атрибуты: если XML-атрибут parse.nodeids имеет значение canonical , все узлы имеют идентификатор вида nX, где X обозначает количество элементов node предшествующих данному элементу. Второе значение XML-атрибута - free . Аналогично этому, XML-атрибут parse.edgeids задает вид идентификатора для узлов. Отличие состоит только в том, что идентификатор имеет вид eX. XML-атрибут parse.order определяет порядок в котором узлы и ребра располагаются в документе. При значении равном nodesfirst все элементы node располагаются раньше элементов edge. При значении равном adjacencylist, объявление узла предшествует объявлению его смежных вершин. Для значения free порядок следования не устанавливается.

Следующий пример иллюстрирует использование информации для парсера: Граф с дополнительной информацией для парсера.

<?xml version="1.0" encoding="UTF-8"?> <!-- This file was written by the JAVA GraphML Library.--> <graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd"> <graph id="G" edgedefault="directed" parse.nodes="11" parse.edges="12" parse.maxindegree="2" parse.maxoutdegree="3" parse.nodeids="canonical" parse.edgeids="free" parse.order="nodesfirst"> <node id="n0" parse.indegree="0" parse.outdegree="1"/> <node id="n1" parse.indegree="0" parse.outdegree="1"/> <node id="n2" parse.indegree="2" parse.outdegree="1"/> <node id="n3" parse.indegree="1" parse.outdegree="2"/> <node id="n4" parse.indegree="1" parse.outdegree="1"/> <node id="n5" parse.indegree="2" parse.outdegree="1"/> <node id="n6" parse.indegree="1" parse.outdegree="2"/> <node id="n7" parse.indegree="2" parse.outdegree="0"/> <node id="n8" parse.indegree="1" parse.outdegree="3"/> <node id="n9" parse.indegree="1" parse.outdegree="0"/> <node id="n10" parse.indegree="1" parse.outdegree="0"/> <edge id="edge0001" source="n0" target="n2"/> <edge id="edge0002" source="n1" target="n2"/> <edge id="edge0003" source="n2" target="n3"/> <edge id="edge0004" source="n3" target="n5"/> <edge id="edge0005" source="n3" target="n4"/> <edge id="edge0006" source="n4" target="n6"/> <edge id="edge0007" source="n6" target="n5"/> <edge id="edge0008" source="n5" target="n7"/> <edge id="edge0009" source="n6" target="n8"/> <edge id="edge0010" source="n8" target="n7"/> <edge id="edge0011" source="n8" target="n9"/> <edge id="edge0012" source="n8" target="n10"/> </graph> </graphml>



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