Ejemplos
PHP Manual

Uso básico

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

El documento de instancia 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 está referenciado por el 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 un 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 de XML referencia el esquema a 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.


Ejemplos
PHP Manual