Ver Mensaje Individual
  #8 (permalink)  
Antiguo 19/02/2004, 08:09
Avatar de Helbira
Helbira
 
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 23 años, 1 mes
Puntos: 5
Saqué el siguiente ejemplo de http://elvex.ugr.es/decsai/csharp/pdf/5_xml.pdf

(Le quité algunas cosas )

archivo.xml

Código PHP:
<?xml version="1.0" encoding="iso-8859-1"?>
<informe xmlns="http://elvex.ugr.es/informe" fecha="2002-12-31">
   <proveedores>
      <proveedor id="95819">
         <suministro sku="872-AA" cantidad="1"/>
         <suministro sku="926-AA" cantidad="1"/>
         <suministro sku="833-AA" cantidad="1"/>
         <suministro sku="455-BX" cantidad="1"/>
      </proveedor>
      <proveedor id="63143">
         <suministro sku="455-BX" cantidad="4"/>
      </proveedor>
   </proveedores>
</informe>
archivo.xsd

Código PHP:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="http://elvex.ugr.es/informe" xmlns="http://elvex.ugr.es/informe" xmlns:xsd="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="qualified">
   <xsd:annotation>
      <xsd:documentation xml:lang="es">
Informe de proveedores y piezas
</xsd:documentation>
   </xsd:annotation>
   <xsd:element name="informe">
      <xsd:complexType>
         <xsd:sequence>
            <xsd:element name="proveedores" type="Proveedores">
            </xsd:element>
         </xsd:sequence>
         <xsd:attribute name="fecha" type="xsd:date"/>
      </xsd:complexType>
      <xsd:unique name="uniqProveedor">
         <xsd:selector xpath="proveedores/proveedor"/>
         <xsd:field xpath="@id"/>
      </xsd:unique>
   </xsd:element>
   <xsd:complexType name="Proveedores">
      <xsd:sequence>
         <xsd:element name="proveedor" maxOccurs="unbounded">
            <xsd:complexType>
               <xsd:sequence>
                  <xsd:element name="suministro" maxOccurs="unbounded">
                     <xsd:complexType>
                        <xsd:complexContent>
                           <xsd:restriction base="xsd:anyType">
                              <xsd:attribute name="sku" type="SKU"/>
                              <xsd:attribute name="cantidad" type="xsd:positiveInteger"/>
                           </xsd:restriction>
                        </xsd:complexContent>
                     </xsd:complexType>
                  </xsd:element>
               </xsd:sequence>
               <xsd:attribute name="id" type="xsd:positiveInteger"/>
            </xsd:complexType>
         </xsd:element>
      </xsd:sequence>
   </xsd:complexType>
   <xsd:simpleType name="SKU">
      <xsd:restriction base="xsd:string">
         <xsd:pattern value="\d{3}-[A-Z]{2}"/>
      </xsd:restriction>
   </xsd:simpleType>
</xsd:schema>
El trozo de código que en realidad te interesa es

<xsd:element name="informe">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="proveedores" type="Proveedores">
</xsd:element>
</xsd:sequence>
<xsd:attribute name="fecha" type="xsd:date"/>
</xsd:complexType>
<xsd:unique name="uniqProveedor">
<xsd:selector xpath="proveedores/proveedor"/>
<xsd:field xpath="@id"/>
</xsd:unique>

</xsd:element>

Espero que eso te ayude. La verdad es que me costó trabajo encontrar un ejemplo que lo dejara bastante clarito.

Suerte!