Foros del Web » Programación para mayores de 30 ;) » Programación General »

consulta schema

Estas en el tema de consulta schema en el foro de Programación General en Foros del Web. Este es el problema.... Tengo lo siguiente en el xml: - Código PHP: < pelicula tipo = "comedia"   duracion = "102"  idioma = "ingles"  apta = ...
  #1 (permalink)  
Antiguo 01/03/2004, 18:10
 
Fecha de Ingreso: marzo-2004
Ubicación: Córdoba
Mensajes: 239
Antigüedad: 20 años, 2 meses
Puntos: 0
consulta schema

Este es el problema....

Tengo lo siguiente en el xml:

-
Código PHP:
<pelicula tipo="comedia"  duracion="102" idioma="ingles" apta="todo publico">
  <
titulo>"Al Diablo con el Diablo"</titulo
  <
escritor nombrea="Lynne Littman" /> 
  <
productor nombreb="John Byrum" /> 
  <
director nombrec="Harold Ramis" /> 
 </
pelicula
al declarar el elemento complejo PELÍCULA realizo una secuencia enumerando sus elementos hijos (titulo,escritor,productor y director) para que vayan apareciendo en orden:

Código PHP:
<xsd:element name=”película”>

    <
xsd:complextype>
         <
xsd:séquence>
                            <
xsd:element name =”titulo” type=”string”>
                             <
xsd:element name =”escrcitor”>
                                 <
xsd:element name =”productor”>
                                  <
xsd:element name =”director” >
            </
xsd:séquence>
</
xsd:complextype
ahora mi pregunta es la siguiente: COMO HAGO PARA DECLARAR LOS ATRIBUTOS DE LOS ELEMENTOS HIJOS QUE CONTIENE LA SECUENCIA DE PELICULA???

Lo hago dentro de cada una de las declaraciones de los respectivos elementos hijos?!...

Ejemplo:

Código PHP:
<xsd:complextype>
         <
xsd:séquence>
                            <
xsd:element name =”titulo” type=”string”>
                             <
xsd:element name =”escrcitor”>
                                        <
xsd:attribute name=”nombrea” type=”string”>
                                 <
xsd:element name =”productor”>
                                    <
xsd:attribute name=”nombreb” type=”string”>
                                   <
xsd:element name =”director” >
                                  <
xsd:attribute name=”nombrec” type=”string”>
          </
xsd:séquence>
</
xsd:complextype
o los puedo declarar afuera y luego hacerles una referencia a cada elemento??

Espero ser claro, cualquier cosa decirme, que no se entendio.
Saludos genios!!

Última edición por juanchilo; 01/03/2004 a las 18:12
  #2 (permalink)  
Antiguo 02/03/2004, 04:10
Avatar de 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
  #3 (permalink)  
Antiguo 02/03/2004, 10:12
 
Fecha de Ingreso: marzo-2004
Ubicación: Córdoba
Mensajes: 239
Antigüedad: 20 años, 2 meses
Puntos: 0
gracias genia

SIMPLEMENTE HELBIRA ES FANTASTICA
MUCHAS GRACIAS!!
  #4 (permalink)  
Antiguo 02/03/2004, 19:25
 
Fecha de Ingreso: marzo-2004
Ubicación: Córdoba
Mensajes: 239
Antigüedad: 20 años, 2 meses
Puntos: 0
para validar un xml con schema, se puede utilizar el validador del DREAMWEABER MX??
O es mejor el xmlspy ???
  #5 (permalink)  
Antiguo 03/03/2004, 02:30
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 6 meses
Puntos: 5
El de Dreamweaver MX no lo he usado nunca..... Es más, ni siquiera sabía que tenía uno al menos en la versión MX. Sí había visto en la página de Macromedia que la últimisima versión de Dreamweaver sí había incluido servicios nuevos para XML, entre ellos la validación. Pero ya te digo que no lo he visto. A ver si me pongo luego y le hecho un vistazo.

La del XML Spy está la caña. Es la que uso actualmente.

Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:31.