XML 要素がダイアグラム形式に準拠する場合、アプリケーション・データを XML ファイルからインポートできます。
次のコード例は、「スタートアップ」で読み込んだ系統ツリーの初期 XML データ・ファイルを示します。
簡単な系統ツリー・データおよびモデル (XML)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE diagram> <diagram metadata="true" xmlns:sdm="http://www.ilog.com/JViews/SDM/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <person id="person_1"> <property name="sex">male</property> <property name="sdm:y">264.91016</property> <property name="firstname">John</property> <property name="profession">teacher</property> <property name="deathdate">1960</property> <property name="sdm:x">35.429688</property> <property name="name">Smith</property> <property name="birthdate">1900</property> </person> <person id="person_2"> <property name="sex">female</property> <property name="sdm:y">165.28516</property> <property name="firstname">Janet</property> <property name="deathdate">1970</property> <property name="sdm:x">35.429688</property> <property name="name">Whoop</property> <property name="birthdate">1903</property> </person> <couple id="couple_1"> <property name="startdate">1920</property> <property name="sdm:y">215.09766</property> <property name="sdm:x">123.75</property> <property name="status">married</property> </couple> <couplelink islink="true" id="couple_11" from="person_1" to="couple_1" /> <couplelink islink="true" id="couple_21" from="person_2" to="couple_1" /> <person id="person_3"> <property name="sex">male</property> <property name="sdm:y">310.3828</property> <property name="firstname">Andrew</property> <property name="profession">engineer</property> <property name="deathdate">1995</property> <property name="sdm:x">214.79688</property> <property name="name">Smith</property> <property name="birthdate">1922</property> </person> <childlink islink="true" id="child_1_3" from="couple_1" to="person_3" /> <person id="person_4"> <property name="sex">female</property> <property name="sdm:y">119.8125</property> <property name="firstname">Mary</property> <property name="profession">Advocat</property> <property name="sdm:x">214.79688</property> <property name="name">Smith</property> <property name="birthdate">1924</property> </person>
<childlink islink="true" id="child_1_4" from="couple_1" to="person_4" /> <person id="person_5"> <property name="sex">male</property> <property name="sdm:y">212.97656</property> <property name="firstname">Richard</property> <property name="profession">Writer</property> <property name="deathdate">1995</property> <property name="sdm:x">214.79688</property> <property name="name">Bilbot</property> <property name="birthdate">1920</property> </person> <couple id="couple_2"> <property name="startdate">1942</property> <property name="sdm:y">166.39453</property> <property name="enddate">1960</property> <property name="sdm:x">305.84375</property> <property name="status">divorced</property> </couple> <couplelink islink="true" id="couple_42" from="person_4" to="couple_2" /> <couplelink islink="true" id="couple_52" from="person_5" to="couple_2" /> <person id="person_6"> <property name="sex">male</property> <property name="sdm:y">166.39453</property> <property name="firstname">Henry</property> <property name="profession">Driver</property> <property name="sdm:x">391.375</property> <property name="name">Bilbot</property> <property name="birthdate">1945</property> </person> <childlink islink="true" id="child_2_6" from="couple_2" to="person_6" /> <person id="person_7"> <property name="sex">male</property> <property name="sdm:y">26.648438</property> <property name="firstname">Jack</property> <property name="profession">Technician</property> <property name="deathdate">1997</property> <property name="sdm:x">214.79688</property> <property name="name">Johnson</property> <property name="birthdate">1925</property> </person> <couple id="couple_3"> <property name="startdate">1960</property> <property name="sdm:y">73.23047</property> <property name="sdm:x">305.84375</property> <property name="status">married</property> </couple> <couplelink islink="true" id="couple_43" from="person_4" to="couple_3" /> <couplelink islink="true" id="couple_73" from="person_7" to="couple_3" /> </diagram>
この XML ファイルの内容を以下に示します。
XML によるダイアグラム形式
ダイアグラム形式 (XML) のルート要素には、タグ
diagram
があります。ダイアグラム形式には、暗黙的なデータ・モデルがあります。データが XML ファイルから読み込まれると、ルート要素 (各最上位レベル要素) の子である各 XML 要素は、データ・モデル、具体的にはユーザー定義タイプのオブジェクトと見なされます。
最上位レベル要素は、リンク (属性
isLink
は true)
) またはノード (属性 isLink
は false
) です。ノードおよびリンクは、異なる XML 要素名で区別する必要があります。いずれも同じファイルから読み込まれます。リンク (
isLink
属性 = false
) ではない最上位レベル XML 要素は、ダイアグラム内のノードで表されます。一方、リンク (isLink
属性 = true
) である要素は、ダイアグラム内のリンクで表されます。XML 要素の名前 (最初の "<" の後にあるストリング) が、そのモデル・オブジェクトの
tag
プロパティーの値になります。次に示す属性を XML 要素に定義できます。
- XML の属性
id
は、そのオブジェクト固有 ID (ID) を示します。 - XML の属性
isLink
がtrue
に設定されている場合、そのモデル・オブジェクトはリンクです。 - リンクの XML 属性
from
とto
は、起点と宛先を指定します。これら属性の値は、リンク元ノードおよびリンク先ノードの ID になります。
オブジェクトのデータ・プロパティーは、XML ファイルでは、名前 (tag)
property
を持つ最上位レベル要素の子要素として表示されます。プロパティーの名前は、
name
属性の値です。プロパティーの値は、要素のテキストです。例えば、次の行はプロパティー
speed
およびその値 148.0
を示します。<property name="speed">148.0</property>
XML データ・ファイルのメタデータ
XML データ・ファイルにメタデータを含めることで、一般的なデータおよび特定オブジェクトに関する情報を格納できます。
ルート
diagram
要素には、メタデータの処理を指示するブール型属性 metadata
があります。デフォルト値は true
です。<diagram metadata="true"/>
メタデータは、特定の SDM 名前空間を示す
sdm:
接頭部がある要素で表されます。メタデータには、次の 2 種類あります。
- オブジェクト関連
- 一般
オブジェクト関連メタデータ
オブジェクト関連メタデータは、プロパティーと同様な形式に含めることができます。次の例は、メタデータ項目 x の値を示します。
<property name="sdm:x">23</property>
一般的なメタデータ
一般的なメタデータは、専用 RDF セクションに含めることができます。
XML データ・ファイルの一般的なメタデータ・セクション
<diagram metadata="true" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://dublincore.org/" xmlns:sdm="http://www.ilog.com/JViews/SDM/" /> <rdf:RDF> <rdf:Description about="."> <dc:Creator> <sdm:Pseudo>PhK</sdm:Pseudo> <sdm:Office>S023</sdm:Office> </dc:Creator> </rdf:Description> </rdf:RDF> ... (the remainder of the document represents the SDM model) </diagram>
XML ファイルに、名前が
rdf
の要素が含まれる場合、diagram
要素の metadata
属性は必ず true
です。