sdo-php-examples-basic-3

  • Examples
  • Basic usage

  • Basic usage
  • Basic usage

    Basic usage

    The examples below assume an SDO created with the
    schema and instance information shown below, using the XML Data
    Access Service.

    The instance document below describes a single
    company, called ‘MegaCorp’, which contains a single department,
    called ‘Advanced Technologies’. The Advanced Technologies
    department contains three employees. The company employeeOfTheMonth
    is referencing the second employee, ‘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>
    

    The root element of the schema is a company. The
    company contains departments, and each department contains
    employees. Each element has a number of attributes to store things
    like name, serial number, and so on. Finally, the company also has
    an IDREF attribute which identifies one of the employees as the
    ’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>
    

    The XML Data Access Service maps the schema to an
    SDO. Attributes such as “name” become primitive properties, the
    sequence of employees becomes a many-valued containment
    relationship, and so on. Note that the containment relationships
    are expressed as one complex type within another, whereas
    non-containment references are expressed in terms of ID and IDREF,
    with a special sdoxml:propertyType
    attribute specifying the type of the non-containment reference.