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

duda sobre xml schema

Estas en el tema de duda sobre xml schema en el foro de Programación General en Foros del Web. Hola a tod@s: tengo un esquema que es el siguiente. root:window hijos(window): id, title, box, button, label hijos (box): box, button, label el problema esta ...
  #1 (permalink)  
Antiguo 10/02/2004, 10:29
 
Fecha de Ingreso: julio-2003
Mensajes: 17
Antigüedad: 21 años, 4 meses
Puntos: 0
Pregunta duda sobre xml schema

Hola a tod@s:

tengo un esquema que es el siguiente.

root:window
hijos(window): id, title, box, button, label
hijos (box): box, button, label

el problema esta que no se como hacer esa especie de recursion, pq a su vez querria que el box(hijo) tuviera otro box hijo y asi todo el tiempo, es decir como si fuerra una estructura que se puediera utilizar donde se quisiera.n
no se si se puede hacer esto, espero me podais ayudar. muchas gracias.
si teneis alguna duda, o no entendeis lo que he querido explicaros solo decidmelo.
gracias.
Saludos.
  #2 (permalink)  
Antiguo 10/02/2004, 11:12
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 23 años, 1 mes
Puntos: 5
Creo que sería así:

Código PHP:
<xs:element name="box">
      <
xs:complexType>
         <
xs:sequence>
            <
xs:element ref="box" />
            <
xs:element ref="button" />
            <
xs:element ref="label" />
         </
xs:sequence>
      </
xs:complexType>
</
xs:element
  #3 (permalink)  
Antiguo 11/02/2004, 07:05
 
Fecha de Ingreso: julio-2003
Mensajes: 17
Antigüedad: 21 años, 4 meses
Puntos: 0
gracias

Lo primero darte las gracias por contestar. Voy a porbar lo que me has dicho, se parece bastante a lo que habia pensado. mi duda era a la hora de hacer el xml si se pueden poner con el ejemplo que me has dado por ejemplo.
<box>
<box>
<button>ok<button>
<box>
<button>cancel<button>
<box>
<button>nada<button>
</box>
</box>
</box>
</box>

gracias.

me sale sin formato, ya lo siento.

Última edición por mani14; 11/02/2004 a las 07:11
  #4 (permalink)  
Antiguo 11/02/2004, 07:08
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 23 años, 1 mes
Puntos: 5
Claro que podrías. Supongo que tu duda viene a si puedes repetir nombres de etiquetas... pues sí, por supuesto!

En tu caso se diferenciarían en el XPath que las referenciaría para obtener sus valores.

Me vas contando como te va
__________________
BUSCO TELETRABAJO
Experiencia de mas de 4 años como desarrolladora web en PHP, ASP, XML, XSL, JavaScript, MySQL, PostGres, SQLServer, ...
  #5 (permalink)  
Antiguo 11/02/2004, 07:12
 
Fecha de Ingreso: julio-2003
Mensajes: 17
Antigüedad: 21 años, 4 meses
Puntos: 0
De acuerdo

muchisimas gracias, Que rapida!!!!!!! . lo pruebo en casa y te comento.
esto es una maravilla .
saludos.
  #6 (permalink)  
Antiguo 19/02/2004, 06:44
 
Fecha de Ingreso: enero-2004
Mensajes: 11
Antigüedad: 20 años, 10 meses
Puntos: 0
yo tengo otra duda y es ke me han mandao hacer un schema ke valide un xml en el cual hay identificadores de atributos. entonces tengo ke hacer ke dixos identificadores no se repitan. se ke se puede usar el unique, el problema es ke no se como usarlo para un atributo. Me podeis exar un cable?
gracias

Salu2
  #7 (permalink)  
Antiguo 19/02/2004, 07:19
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 23 años, 1 mes
Puntos: 5
Lo tienes que definir en un DTD eso que quieres hacer. En cualquier manualillo de XML te explica la sintaxis exacta para los atributos identificadores ID. Te pongo un ejemplo:

archivo.xml

Código PHP:
<?xml version="1.0"?>
<capitulo ref="cap-1">
Introduccion a DTD
</capitulo>
<capitulo ref="cap-2">
Tipos de datos de un DTD
</capitulo>

archivo.dtd

Código PHP:
<!ELEMENT (capitulo)*>
<!
ATTLIST capitulo ref ID #IMPLIED> 
Creo que sería así.

Un beso

Oye!,... olvida lo que te acabo de decir.. no me habia dado cuenta que hablabas de schema... Perate que te lo busco.

Última edición por Helbira; 19/02/2004 a las 07:21
  #8 (permalink)  
Antiguo 19/02/2004, 08:09
Avatar de 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!
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 23:01.