JViews Diagrammer の XML ファイルによるアプリケーション・データ

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 要素 (childlink またはcouplelin) で、その属性 isLinktrue に設定され、ノードを参照する属性 from および to は同じファイル内で定義されます。
  • 他の最上位レベル XML 要素はすべて、ノード (person および couple) として扱われます。
  • プロパティーは、ノードまたはリンク要素の子として定義されます。各プロパティーにはそれぞれ値があります。
  • sdm:x および sdm:y プロパティーは、ノードの場所を指定する X および Y 座標です。

XML によるダイアグラム形式

ダイアグラム形式 (XML) のルート要素には、タグ diagram があります。
ダイアグラム形式には、暗黙的なデータ・モデルがあります。データが XML ファイルから読み込まれると、ルート要素 (各最上位レベル要素) の子である各 XML 要素は、データ・モデル、具体的にはユーザー定義タイプのオブジェクトと見なされます。
最上位レベル要素は、リンク (属性 isLinktrue)) またはノード (属性 isLinkfalse) です。ノードおよびリンクは、異なる XML 要素名で区別する必要があります。いずれも同じファイルから読み込まれます。
リンク (isLink 属性 = false) ではない最上位レベル XML 要素は、ダイアグラム内のノードで表されます。一方、リンク (isLink 属性 = true) である要素は、ダイアグラム内のリンクで表されます。
XML 要素の名前 (最初の "<" の後にあるストリング) が、そのモデル・オブジェクトの tag プロパティーの値になります。
次に示す属性を XML 要素に定義できます。
  • XML の属性 id は、そのオブジェクト固有 ID (ID) を示します。
  • XML の属性 isLinktrue に設定されている場合、そのモデル・オブジェクトはリンクです。
  • リンクの XML 属性 fromto は、起点と宛先を指定します。これら属性の値は、リンク元ノードおよびリンク先ノードの 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 です。