Uso básico

En los ejemplos de abajo se asume un SDO creado con el esquema y la información de ejemplo mostrados abajo, usando el Servicio de Acceso a Datos de XML.

El documento de ejemplo de abajo describe una compañía única, llamada 'MegaCorp', la cual contiene un único departamento, llamado 'Tecnologías Avanzadas'. El departamento de Tecnologías Avanzadas contiene tres empleados. El empleadoDelMes de la compañía hace referencia al segundo empleado, 'Jane Doe'.

<?xml version="1.0" encoding="UTF-8" ?> 
<compañía xmlns="ENCompañía" nombre="MegaCorp" 
  empleadoDelMes="E0003">
  <departamentos nombre="Tecnologías Avanzadas" ubicación="NY" número="123">
    <empleados nombre="John Jones" NS="E0001"/>
    <empleados nombre="Jane Doe" NS="E0003"/>
    <empleados nombre="Al Smith" NS="E0004" director="true"/>
  </departamentos>
</compañía>

El elemento raíz del esquema es una compañía. La compañía contiene departamentos, y cada departamento contiene empleados. Cada elemento tiene varios atributos para almacenar cosas como el nombre, el número de serie, etc. Finalmente, la compañía también tiene el atributo IDREF que identifica uno de los empleados como el 'empleadoDelMes'.

<xsd:schema  
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:sdo="commonj.sdo"
  xmlns:sdoxml="commonj.sdo/xml"
  xmlns:compañía="ENCompañía"
  targetNamespace="ENCompañía">
  <xsd:element name="compañía" type="compañía:TipoCompañía"/>
  <xsd:complexType name="TipoCompañía">
    <xsd:sequence>
      <xsd:element name="departamentos" type="compañía:TipoDepartamento" 
        maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="nombre" type="xsd:string"/>
    <xsd:attribute name="empleadoDelMes" type="xsd:IDREF" 
      sdoxml:propertyType="compañía:TipoEmpleado"/> 
  </xsd:complexType>
  <xsd:complexType name="TipoDepartamento">
    <xsd:sequence>
      <xsd:element name="empleados" type="compañía:TipoEmpleado"  
        maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="nombre" type="xsd:string"/>
    <xsd:attribute name="ubicación" type="xsd:string"/>
    <xsd:attribute name="número" type="xsd:int"/>
  </xsd:complexType>
  <xsd:complexType name="TipoEmpleado">
    <xsd:attribute name="nombre" type="xsd:string"/>
    <xsd:attribute name="NS" type="xsd:ID"/>
    <xsd:attribute name="director" type="xsd:boolean"/>
  </xsd:complexType>
</xsd:schema>

El Servicio de Acceso a Datos XML hace que el esquema se corresponda con un SDO. Los atributos como "nombre" se convierten en propiedades primitivas, la secuencia de empleados se convierte en una relación de contención polievaluada, etc. Observe que las relaciones de contención están expresadas como un tipo complejo dentro de otro, mientras que las referencias de no contención están expresadas en términos de ID e IDREF, con un atributo especial, sdoxml:propertyType, que especifica el tipo de la referencia de no contención.