XMLBuilderDiagram XML スキーマ定義
XML ビルダは XML ファイルから処理を行います。ここでは、これらの XML ファイルを XML ビルダで適切にデコードできるように構築する方法を説明します。
XML ファイルと XSD ファイルについて
XML(Extensible Markup Language)は、HTML(Hypertext Markup Language)に似ています。HTML ファイルには、データとその表示情報が両方とも記述されています。XML ファイルには、データのみが格納されています。
XML データは、意味を持つタグとタグとの間に記述されます。たとえば、<price>24</price >という記述は、数値「24」が価格(price)であることを宣言します。XML 用語では、この「price」のことを「エレメント」と言います。製品名、数量、総数などがエレメントになることもあります。ユーザはこの XML タグを見て、「24」が価格であることを知ります。さらに重要なのは、ソフトウェアがこのファイルから「price」エレメントを抽出できることです。このような処理は、HTML ファイルでは不可能です。
XML ファイルは、XSD(XML スキーマ定義)に基づいています。XSD ファイルには構文が記述され、XML ドキュメントでエレメントと属性を表す方法が定義されています。表示されるエレメントと属性、それらの相関関係、それらに含まれるデータのタイプなどの制約に関して、XML ドキュメントのタイプが定義されます。
XMLBuilderDiagram XSD ファイルの詳細
XMLBuilderDiagram XML スキーマ定義は、ArcGIS Schematics の XML ビルダによってデコードできる XML ファイルの構文を提供する XML スキーマです。この 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 ファイルには、複数のダイアグラムを保存できます。各ダイアグラムの定義は 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 である場合、[スケマティック ダイアグラムの新規作成] ダイアログ ボックスでダイアグラム テンプレート名とダイアグラム名を再定義する必要があります。
続いて、ダイアグラムごとに次のセクションが使用されます。
- ダイアグラムで使用可能な最初のタグは PropertySet です。このタグでは、ダイアグラムに関連するプロパティ値を定義できます。このセクションはオプションです。
<PropertySet> タグ内のエレメント
<Diagram EnforceDiagramTemplateName="false" EnforceDiagramName="false"> <PropertySet> <PropertyArray> ... </PropertyArray> </PropertySet> ... </Diagram>
<PropertySetProperty> タグ内のエレメント
<PropertySet> <PropertyArray> <PropertySetProperty> <Key>Country</Key> <Value>CALIFORNIA</Value> </PropertySetProperty> <PropertySetProperty> ... </PropertySetProperty> </PropertyArray> </PropertySet>
- ダイアグラムで使用可能な 2 つ目のタグは Datasources です。このタグでは、ダイアグラムとそのコンテンツに関連する可能性があるすべてのデータ ソースを記述します。
<Datasources> タグ内のエレメント
<Diagram EnforceDiagramTemplateName="false" EnforceDiagramName="false"> ... <Datasources> ... </Datasources> ... </Diagram>
Datasource の定義はそれぞれ、2 つの必須アイテムに基づいています。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 です。ここでは、ダイアグラムに含まれるすべてのスケマティック フィーチャを記述します。
スケマティック ダイアグラムでは 4 種類のスケマティック フィーチャ(ノード、リンク、ノード オン リンク、サブリンク)を表示できるので、このセクションでは 4 種類のタグを定義することができます。つまり、NodeFeature、LinkFeature、NodeOnLinkFeature、SubLinkFeature です。
<Features> タグ内のエレメント
<Diagram EnforceDiagramTemplateName="false" EnforceDiagramName="false"> ... <Features> <NodeFeature> ... </NodeFeature> ... <LinkFeature> ... </LinkFeature> ... <NodeOnLinkFeature> ... </NodeOnLinkFeature> ... <SubLinkFeature> ... </SubLinkFeature> ... </Features> </Diagram>
- フィーチャ エレメントには、そのタイプに関係なく 2 つの特殊な属性が必要です。スケマティック ダイアグラム内のそのスケマティック フィーチャを実装するスケマティック フィーチャクラスの名前を参照する FeatureClassName と、スケマティック フィーチャ識別子に対応する ExternalUniqueID です。
- その後、フィーチャ エレメントに指定できるオプション パラメータがいくつかあります。たとえば、DatasourceName、UCID、UOID、および USID(GIS フィーチャ/オブジェクトがスケマティック フィーチャに関連している場合、DatasourceName データベース内の関連する GIS フィーチャ/オブジェクトの ClassID、ObjectID、およびサブタイプ ID)、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 識別子を指定します。InitialPosition では、関連するリンク上のノード オン リンクの絶対位置または相対位置を指定します。
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 識別子を指定します。FromNode および ToNode は、サブリンクの原点ノードと端点ノードに関連する NodeFeature 識別子を参照します。
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 のデータ モデル
次の図は、XMLBuilderDiagram ファイルの XML スキーマ定義を示しています。
XMLBuilderDiagram XSD ファイルに基づいた XML ファイルのサンプル
次の図は、基本的な XML ファイルのサンプルです。このサンプルには、1 つのノード スケマティック フィーチャを含む 1 つのダイアグラムが記述されています。
次の図は、XML ファイルのサンプルの抜粋です。このサンプルには、1 つのリンク スケマティック フィーチャを含む 1 つのダイアグラムが記述されています。
XMLBuilderDiagram XML スキーマ定義ファイルに基づいた詳細な XML ファイルについては、チュートリアルのセットアップに含まれている SampleNetworkData.xml ファイルをご参照ください。このファイルは C:\ArcGIS\ArcTutor\Schematics\Schematics_Configuration\XML_Data にあります。