XML компоновщик работает от XML-файлов. Задачей данного топика является описание, как должны быть построены XML-файлы, чтобы XML компоновщик мог их корректно декодировать.
О файлах XML и XSD
Расширяемый язык разметки (Extensible Markup Language - XML) похож на язык разметки гипертекста ( Hypertext Markup Language - HTML). Файл HTML содержит и данные, и информацию об их представлении. Файл XML содержит только данные.
Данные XML заключены в поясняющие значения теги. Например, <price>24</price> сообщает, что число "24" - это цена (price). В терминах XML, эта цена называется элементом. Другие элементы могут быть названиями продуктов, количеством или долями. Человек может посмотреть на тег XML и понять, что "24" - это цена; еще более важно, что программное обеспечение может извлечь элементы цены из этого файла; это невозможно сделать с файлом HTML.
В основе файла XML лежит определение схемы XML (XML Schema Definition - XSD). Файл XSD обеспечивает синтаксис и определяет способ, которым элементы и атрибуты могут быть представлены в XML-документе.
В деталях о файле XMLBuilderDiagram XSD
Определение XML-схемы XMLBuilderDiagram :это XML-схема, обеспечивающая синтаксис для XML-файлов, которая может быть раскодирована XML компоновщиком схем ArcGIS. Этот XSD-файл по умолчанию установлен в \ArcGIS\Schematics\XMLSchema.
Любой файл XML, совместимый с XML компоновщиком, начинается и заканчивается тегом Diagrams:
Элементы в пределах тегов <Diagrams>
<?xml version="1.0" encoding="utf-8"?>
<sch:Diagrams xmlns:sch = 'http://www.esri.com/schemas/ArcGIS/10/Schematics'
xmlns:xsi = 'http://www.w3.org/2001/XMLSchema-instance'
xsi:schemaLocation='http://www.esri.com/schemas/ArcGIS/10/Schematics XMLBuilderDiagram.xsd'>
...
</Diagrams>
В файле XML могут храниться несколько diagrams; определение каждого начинается с тега Diagram:
Элементы в тегах <Diagram>
<?xml version="1.0" encoding="utf-8"?>
<sch:Diagrams xmlns:sch = 'http://www.esri.com/schemas/ArcGIS/10/Schematics'
xmlns:xsi = 'http://www.w3.org/2001/XMLSchema-instance'
xsi:schemaLocation='http://www.esri.com/schemas/ArcGIS/10/Schematics XMLBuilderDiagram.xsd'>
<Diagram DiagramTemplateName="All" DiagramName="All" EnforceDiagramTemplateName="false" EnforceDiagramName="false">
...
</Diagram>
</Diagrams>
DiagramTemplateName и DiagramName являются опциональными параметрами. Когда параметры EnforceDiagramTemplateName или EnforceDiagramName являются False, имя шаблона схемы и имя схемы (diagram) должны быть переопределены в диалоговом окне Новое схематическое представление (New Schematic Diagram).
Следующие секции посвящены каждой схеме:
- Первым возможным тегом для схемы (diagram) является PropertySet, который может использоваться для определения значений свойств, относящихся к данной схеме. Этот раздел является факультативным:Каждое значение свойств, относящееся к PropertySet, начинается с тега PropertySetProperty, внутри которого взвешены элементы Key (ключ) и Value (значение). Может быть указано несколько элементов PropertySetProperty:
Элементы внутри тегов <PropertySet>
<Diagram EnforceDiagramTemplateName="false" EnforceDiagramName="false"> <PropertySet> <PropertyArray> ... </PropertyArray> </PropertySet> ... </Diagram>
Тег Key определяет имя свойства , тег Value является его значением.Элементы внутри тегов <PropertySetProperty>
<PropertySet> <PropertyArray> <PropertySetProperty> <Key>Country</Key> <Value>CALIFORNIA</Value> </PropertySetProperty> <PropertySetProperty> ... </PropertySetProperty> </PropertyArray> </PropertySet>
- Вторым возможным тегом для схемы (diagram) является тег Datasources,, который детализирует источники данных, которые могут иметь отношение к схеме (diagram) и ее содержимому.
Элементы внутри тегов <Datasources>
<Diagram EnforceDiagramTemplateName="false" EnforceDiagramName="false"> ... <Datasources> ... </Datasources> ... </Diagram>
Каждое определение Datasource основано на двух необходимых элементах: NameString и WorkSpaceInfo; где NameString является именем источника данных, а WorkSpaceInfo является параметрами, определяющими тип источника данных и свойства подключения (PathName, BrowseName, WorkspaceFactoryProgID, WorkspaceType, ConnectionProperties).
Элементы в тегах <Datasource>
<Datasources> ... <Datasource> <NameString>XMLDataSource</NameString> <WorkSpaceInfo> <WorkspaceFactoryProgID>esriDataSourcesGDB.AccessWorkspaceFactory</WorkspaceFactoryProgID> <PathName>C:\ArcGIS\ArcTutor\Schematics\DatasetEditor\XMLDataAssociatedFeatureClasses.mdb</PathName> </WorkSpaceInfo> </Datasource> ... </Datasources>
- И, наконец, последний тег - Features (объекты), который детализирует все объекты схемы, содержащиеся в схеме (diagram).
Поскольку в схематических представлениях может быть отображено четыре вида объектов схемы (узел (node), связь (link), узел-на-связи (node on link) и под-связь (sublink), то можно определить и четыре вида тегов: NodeFeature, LinkFeature, NodeOnLinkFeature и SubLinkFeature:
Элементы внутри тегов <Features>
<Diagram EnforceDiagramTemplateName="false" EnforceDiagramName="false"> ... <Features> <NodeFeature> ... </NodeFeature> ... <LinkFeature> ... </LinkFeature> ... <NodeOnLinkFeature> ... </NodeOnLinkFeature> ... <SubLinkFeature> ... </SubLinkFeature> ... </Features> </Diagram>
- Два специальных атрибута являются обязательными для элемента объекта, вне зависимости от его типа: FeatureClassName, который дает ссылку на имя класса объектов схемы, обеспечивающего реализацию этого объекта схемы в схематическом представлении, и ExternalUniqueID, который соответствует идентификатору объекта схемы.
- Далее, имеются несколько дополнительных параметров для элемента объекта, такие как: DatasourceName, UCID, UOID, и USID (the ClassID, ObjectID, и подтип ID связанного объекта ГИС в базе данных DatasourceName, когда объект ГИС связан с объектом схемы); RelatedContainerID (ID контейнера объекта схемы); и PropertySet (с информацией о значениях свойств, связанных с объектом схемы).
- Специальные атрибуты могут или должны быть определены для объектов схемы, в зависимости от их типа:
- Для типа NodeFeature, могут быть установлены дополнительные атрибуты InitialX и InitialY для указания x- и y-координат объекта схемы:
Ниже приводится образец элемента NodeFeature:
Элементы внутри тегов <NodeFeature>
<NodeFeature> <FeatureClassName>Stations</FeatureClassName> <ExternalUniqueID>Station-1</ExternalUniqueID> <DatasourceName>XMLDataSource</DatasourceName> <UCID>1</UCID> <UOID>1</UOID> <RelatedContainerID>Container-1</RelatedContainerID> <InitialX>-4462</InitialX> <InitialY>2828</InitialY> <PropertySet> <PropertyArray> <PropertySetProperty> <Key>Feeder</Key> <Value>1</Value> </PropertySetProperty> <PropertySetProperty> <Key>Name</Key> <Value>WABY</Value> </PropertySetProperty> <PropertySetProperty> <Key>Capacity</Key> <Value>1</Value> </PropertySetProperty> <PropertySetProperty> <Key>Type</Key> <Value>A</Value> </PropertySetProperty> </PropertyArray> </PropertySet> </NodeFeature>
- Для типа LinkFeature атрибуты FromNode и ToNode являются обязательными. Они должны иметь ссылку на идентификаторы NodeFeature, связанные с начальным и крайним узлами. Могут иметься теги Vertices (вершины) для обозначения вершин, которые могут отображаться вдоль связи, каждая вершина при этом будет иметь координаты x и y.
Ниже приводится образец элемента LinkFeature:
Элементы в тегах <LinkFeature>
<LinkFeature> <FeatureClassName>LV_Lines</FeatureClassName> <ExternalUniqueID>LVLine-52</ExternalUniqueID> <DatasourceName>XMLDataSource</DatasourceName> <UCID>5</UCID> <UOID>52</UOID> <FromNode>Station-33</FromNode> <ToNode>Station-45</ToNode> <PropertySet> <PropertyArray> <PropertySetProperty> <Key>Rate</Key> <Value>452456</Value> </PropertySetProperty> <PropertySetProperty> <Key>Category</Key> <Value>S</Value> </PropertySetProperty> </PropertyArray> </PropertySet> <Vertices> <Vertex> <X>-562.37451</X> <Y>-2935.90906</Y> </Vertex> <Vertex> <X>-192.067429999999</X> <Y>-3254.90854</Y> </Vertex> <Vertex> <X>509.88013</X> <Y>-3298.78026</Y> </Vertex> </Vertices> </LinkFeature>
- Для типа NodeOnLinkFeature атрибуты ReferenceLink и InitialPosition являются обязательными. ReferenceLink определяет взаимосвязь идентификатора LinkFeature с Узлом-на-Связи (node on link), и InitialPosition применяется для указания на связанной с ним ссылке абсолютной или относительной позиции Узла-на-Связи (node on link) .
Ниже приводится образец элемента NodeOnLinkFeature:
Элементы внутри тегов <NodeOnLinkFeature>
<NodeOnLinkFeature> <FeatureClassName>NOL</FeatureClassName> <ExternalUniqueID>N1</ExternalUniqueID> <DatasourceName>myDS</DatasourceName> <InitialPosition>0.5</InitialPosition> <ReferenceLink>L1</ReferenceLink> </NodeOnLinkFeature>
- для типа SubLinkFeature атрибуты ReferenceLink,FromNode, и ToNode являются обязательными. ReferenceLink определяет взаимосвязь идентификатора LinkFeature с Под-Связь (sublink), и FromNode и ToNode содержат ссылку на идентификаторы NodeFeature, которые связаны с начальным и крайним узлами Под-Связи (sublink).
Ниже приводится образец элемента SubLinkFeature:
Элементы внутри тегов <NodeOnLinkFeature>
<SubLinkFeature> <FeatureClassName>LOL</FeatureClassName> <ExternalUniqueID>S1</ExternalUniqueID> <DatasourceName>myDS</DatasourceName> <FromNode>N1</FromNode> <ToNode>R2</ToNode> <ReferenceLink>L1</ReferenceLink> </SubLinkFeature>
- Для типа NodeFeature, могут быть установлены дополнительные атрибуты InitialX и InitialY для указания x- и y-координат объекта схемы:
модель данных XMLBuilderDiagram
На следующем рисунке показано определение XML-схемы файла XMLBuilderDiagram:
Образцы XML-файла на основе XSD-файла XMLBuilderDiagram
На рисунке ниже показан образец базисного XML-файла, содержащего описание схемы (diagram), в которой имеется объект схемы с уникальным узлом:
На рисунке ниже показан пример извлечения XML-файла, включающего описание схемы (diagram), в которой содержится ссылка на объект схемы:
Более подробно об образце XML-файла на основе файла XMLBuilderDiagram XML Schema Description file, см. файл SampleNetworkData.xml, имеющийся в Учебнике. Он должен быть установлен в C:\ArcGIS\ArcTutor\Schematics\Schematics_Configuration\XML_Data.