基本的な使用法

以下の例では、XML データアクセスサービスを使用して、 下のスキーマおよびインスタンスをもとに作成した SDO の使用を想定しています。

以下で説明しているインスタンスドキュメントは、 'MegaCorp' という会社を扱っています。この会社には 'Advanced Technologies' という名前の部署がひとつあります。 Advanced Technologies 部門には 3 人の従業員がいます。 この会社の employeeOfTheMonth (今月の従業員) は、 2 人目の従業員である 'Jane Doe' を指しています。

<?xml version="1.0" encoding="UTF-8" ?> 
<company xmlns="companyNS" name="MegaCorp" 
  employeeOfTheMonth="E0003">
  <departments name="Advanced Technologies" location="NY" number="123">
    <employees name="John Jones" SN="E0001"/>
    <employees name="Jane Doe" SN="E0003"/>
    <employees name="Al Smith" SN="E0004" manager="true"/>
  </departments>
</company>

このスキーマのルート要素は company です。company は departments を含んでおり、個々の department は employees を含んでいます。 各要素はいくつかの属性を保持しており、ここに名前やシリアル番号などを保存します。 最後に、company は IDREF 属性を保持しており、 特定の従業員を 'employeeOfTheMonth' として参照しています。

<xsd:schema  
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:sdo="commonj.sdo"
  xmlns:sdoxml="commonj.sdo/xml"
  xmlns:company="companyNS"
  targetNamespace="companyNS">
  <xsd:element name="company" type="company:CompanyType"/>
  <xsd:complexType name="CompanyType">
    <xsd:sequence>
      <xsd:element name="departments" type="company:DepartmentType" 
        maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="name" type="xsd:string"/>
    <xsd:attribute name="employeeOfTheMonth" type="xsd:IDREF" 
      sdoxml:propertyType="company:EmployeeType"/> 
  </xsd:complexType>
  <xsd:complexType name="DepartmentType">
    <xsd:sequence>
      <xsd:element name="employees" type="company:EmployeeType"  
        maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="name" type="xsd:string"/>
    <xsd:attribute name="location" type="xsd:string"/>
    <xsd:attribute name="number" type="xsd:int"/>
  </xsd:complexType>
  <xsd:complexType name="EmployeeType">
    <xsd:attribute name="name" type="xsd:string"/>
    <xsd:attribute name="SN" type="xsd:ID"/>
    <xsd:attribute name="manager" type="xsd:boolean"/>
  </xsd:complexType>
</xsd:schema>

XML データアクセスサービスは、スキーマを SDO に関連付けます。 "name" のような属性はプリミティブプロパティに、 一連の employees は複数の値をとる包含関係に、といったようになります。 包含関係は、複合型の中に別の複合型を含めることで表され、 非包含関係は ID や IDREF に特別な属性 sdoxml:propertyType を指定して表されることに注意しましょう。