Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/03/2004, 04:10
Avatar de Helbira
Helbira
 
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 6 meses
Puntos: 5
Se pueden definir los atributos tanto dentro de la etiqueta element después de <sequence> como fuera.

Yo te recomiendo que lo definas fuera para que quede más claro el código. En concreto te recomiendo que cada vez que crees un XSD lo hagas en el siguiente orden:

1. Definición de elementos simples (sin subelementos ni atributos)
2. Definición de los atributos
3. Definición de los atributos del Root Element
4. Definición de elementos complejos (elementos con subelementos y/o atributos
5. Definición del Root Element

En concreto, para tu XML el schema quedaría de la siguiente forma:

Código PHP:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

   <!-- Elementos simples -->
   <xs:element name="titulo" type="xs:string"/>
   
   <!-- Atributos -->
   <xs:attribute name="nombrea" type="xs:string"/>
   <xs:attribute name="nombreb" type="xs:string"/>
   <xs:attribute name="nombrec" type="xs:string"/>

   <!-- Atributos del Root Element -->
   <xs:attribute name="tipo" type="xs:string"/>
   <xs:attribute name="duracion" type="xs:string"/>
   <xs:attribute name="idioma" type="xs:string"/>
   <xs:attribute name="apta" type="xs:string"/>
   
   <!-- Elementos complejos (con subelementos y/o atributos) -->
   <xs:element name="escritor">
      <xs:complexType>
         <xs:attribute ref="nombrea"/>
      </xs:complexType>
   </xs:element>
   
   <xs:element name="productor">
      <xs:complexType>
         <xs:attribute ref="nombreb"/>
      </xs:complexType>
   </xs:element>
   
   <xs:element name="director">
      <xs:complexType>
         <xs:attribute ref="nombrec"/>
      </xs:complexType>
   </xs:element>
   
   <!-- Root Element con todo lo anterior. Usamos 'ref' en vez de 'name' en la secuencia -->
   <xs:element name="pelicula">
      <xs:complexType>
         <xs:sequence>
            <xs:element ref="titulo"/>
            <xs:element ref="escritor"/>
            <xs:element ref="productor"/>
            <xs:element ref="director"/>
         </xs:sequence>
         <xs:attribute ref="tipo"/>
         <xs:attribute ref="duracion"/>
         <xs:attribute ref="idioma"/>
         <xs:attribute ref="apta"/>
      </xs:complexType>
   </xs:element>
   
</xs:schema>
Fíjate en el uso del atributo ref .


Te recomiendo el siguiente tutorial de XSD


Última edición por Helbira; 02/03/2004 a las 04:13