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

Validar xml + xsd mediante msxsl.exe

Estas en el tema de Validar xml + xsd mediante msxsl.exe en el foro de Programación General en Foros del Web. Hola, estoy en un pequeño bache. Tengo un fichero xml y su esquema correspondiente xsd. Tengo que validarlo mediante un fichero .bat en el que ...
  #1 (permalink)  
Antiguo 15/06/2004, 20:01
 
Fecha de Ingreso: junio-2004
Mensajes: 43
Antigüedad: 19 años, 10 meses
Puntos: 0
Validar xml + xsd mediante msxsl.exe

Hola, estoy en un pequeño bache. Tengo un fichero xml y su esquema correspondiente xsd. Tengo que validarlo mediante un fichero .bat en el que hago lo siguiente:

msxsl.exe fichero.xml esquema.xsd -v

(msxsl es Microsoft R xslt processor)
Las rutas son correctas pero no me funciona bien ya siempre me muestra el esquema (este bien el xml o mal). Aunque ponga errores en el xml a proposito siempre me muestra el esquema y se supone que si el fichero no es válido según el esquema debería mostrar un error.

¿Qué se me pasa por alto? Un saludo.
  #2 (permalink)  
Antiguo 17/06/2004, 03:14
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
por que no pones tú código?
tanto el del XML como el del XSD

:P
  #3 (permalink)  
Antiguo 22/06/2004, 12:49
 
Fecha de Ingreso: junio-2004
Mensajes: 43
Antigüedad: 19 años, 10 meses
Puntos: 0
Bueno, me voy a contestar a mí mismo con una teoría. No se si será cierta pero es a la que he llegado.

Para validar ficheros xml por línea de comandos he conocido 2 herramientas:
msxsl.exe fichero.xml esquema.xsd -V
oraxml1.bat fichero.xml (indicando el xsd en el .xml)

Podía detectar errores en las etiquetas pero si cambiaba el nombre de un atributo o lo ponía mal no lo detectaba.

Por lo tanto, creo que no permiten validar correctamente un fichero si posee atributos ya que no los analiza con lo que "la validacion" no es total. Lo curioso es que si lo valido a través de un programa (xmlspy) si que detecta cualquier cambio respecto al esquema.

Si alguien me saca de dudas o desmiente algo, aquí estoy para aprender cosas nuevas.
Un saludo.
  #4 (permalink)  
Antiguo 11/08/2004, 06:25
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
Sigo pensando que deberias poner el codigo de tu xsd
  #5 (permalink)  
Antiguo 12/08/2004, 04:19
 
Fecha de Ingreso: junio-2004
Mensajes: 43
Antigüedad: 19 años, 10 meses
Puntos: 0
Lo siento pero ya no tengo el xsd ya que cambié el esquema para almacenar todos los valores en etiquetas y evitar posibles fallos. De todas formas te pongo aquí un pequeño ejemplo de lo que debía hacer.

(Este era el fichero original)
digraph G {
size ="4,4";
main [shape=box]; /* this is a comment */
main -> parse [weight=8];
parse -> execute;
...... (más)


(El fichero xml que almacenaba esto era)
<?xml version="1.0"?>
<PROGRAMA xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="xdot.xsd">
<GRAFO>
<Strict>false</Strict>
<Tipografo>DIGRAPH</Tipografo>
<Nombregrafo>G</Nombregrafo>
</GRAFO>
<STMT_LIST>

<ID_STMT>
<Tipo>size</Tipo>
<Valorid>"4,4"</Valorid>
</ID_STMT>

<NODE_STMT>
<Nodo>main</Nodo>
<Valor>shape=box</Valor>
</NODE_STMT>

<EDGE_STMT>
<Origen>main</Origen>
<Destino>parse</Destino>
<Valor>weight=8</Valor>
</EDGE_STMT>
.... (más)


(El esquema que diseñé fue)
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSPY v2004 rel. 3 U (http://www.xmlspy.com) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="PROGRAMA">
<xs:annotation>
<xs:documentation>Elemento inicial del esquema</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="GRAFO"/>
<xs:element ref="STMT_LIST"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ATTR_STMT">
<xs:complexType>
<xs:sequence>
<xs:element ref="Tipo"/>
<xs:element ref="Valor"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Destino" type="xs:string"/>
<xs:element name="EDGE_STMT">
<xs:complexType>
<xs:sequence>
<xs:element ref="Origen"/>
<xs:element ref="Destino"/>
<xs:element ref="Valor" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="GRAFO">
<xs:complexType>
<xs:sequence>
<xs:element ref="Strict"/>
<xs:element ref="Tipografo"/>
<xs:element ref="Nombregrafo"/>
</xs:sequence>
</xs:complexType>
</xs:element>
.... (falta más)

Reconozco que hay mejores formas para almacenar la información pero ésta sirvió para lo que quería.

A un compañero le pasaba lo mismo con la validación así que por eso llegué a esa conclusión. De todas formas no te preocupes ya que "este problema" no era de gran importancia.

Gracias por toda la ayuda prestada.
Un saludo.
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 17:44.