2009-07-29 27 views
32

Estoy escribiendo un esquema XML (un XSD) para describir el formato en el que nuestros socios deben enviarnos los datos.¿Validar un esquema XSD?

Y estoy teniendo dificultades para encontrar una herramienta que pueda validar el archivo de esquema XSD que tengo escrito.

La mejor manera que he encontrado hasta ahora es escribir primero un archivo XML de entrada de ejemplo y luego tratar de validar que con el XSD. Pero eso no se siente como una maniobra de mejores prácticas.

Entonces, ¿cómo debo validar un esquema XML?

+2

Buena pregunta. Tal vez "validar" no sea el mejor verbo aquí, ya que "valida" un xml contra un xsd, que no es lo que está preguntando. Pero he pasado por el mismo proceso, utilicé la entrada de ejemplo para verificar el xsd, y me encontré luego teniendo que cambiar el xsd debido a casos de esquina que no fueron probados. –

+2

@Daniel, no del todo. Existen algunas herramientas para validar los esquemas en sí mismos, incluidas las herramientas comerciales; también puedes construir uno basado en las libs de Apache Xerces. – lavinio

+1

Debido a que algunos editores comerciales ya se mencionan, mientras tanto también hay otras herramientas disponibles a un precio más razonable. Por ejemplo [XML ValidatorBuddy] (http://www.xml-tools.com) También admite la validación de lotes XML. – lichtfusion

Respuesta

10

Si esto es algo a corto plazo, puede usar una copia de evaluación de una herramienta como .

Si se trata de mantenimiento a largo plazo, es posible que desee considerar la compra de un editor de esquemas XML como Stylus, o Oxygen o Altova.

No especificó el idioma de origen, pero son solo unas pocas líneas de código para escribir un validador de esquema en Java o .Net.

+1

Y si está al inicio de los proyectos que producirán esquemas que se refieren entre sí, o WSDL a WSDL a Schema, entonces también vea Altova SchemaAgent, que puede no solo visualice y valide dichas referencias, sino que también pueda mostrar un conjunto de esquemas a su organización o a Internet. –

+6

Una herramienta de código abierto que encontré es xmllint, que uso así: xmllint --noout --schema http://www.w3.org/2001/XMLSchema.xsd mySchema.xsd –

+0

@ AlexanderKjäll deberías hacer esto una (la) respuesta. – HankCa

7

Java SDK viene con una herramienta estándar llamada xjc. Esta herramienta genera las clases que analizan su esquema. Puede usar este código para validar la entrada de sus socios.

Ver también: http://www.java2s.com/Tutorial/Java/0440__XML/ThexjcTool.htm

+2

Esto era mucho más fácil que buscar una herramienta para descargar o usar formularios en línea. –

+1

Documentación oficial de Java 8 para [xjc] (https://docs.oracle.com/javase/8/docs/technotes/tools/unix/xjc.html) – ktulinho

13

El W3C tiene un validador en línea para los esquemas XML en http://www.w3.org/2001/03/webdata/xsv. Dado que W3C es la fuente de la especificación del esquema XML, su validador debe ser confiable.

+1

(18 meses después ...) Compruebe su enlace, parece estar roto. ¿Alguna idea de dónde está el nuevo sitio? – chharvey

+0

Al menos en Chrome, de todos modos. Funciona perfectamente en Safari y Firefox. – chharvey

+0

@ TestSubject528491 Ejecutar Chrome aquí, funciona bien. –

1

Entonces, ¿cómo debo validar un esquema XML (XSD)?

La pregunta que hace es buena. Solo "volarlo" es probable que te meta en problemas. Del artículo de Wikipedia XML Schema Editor(el énfasis es mío):

El estándar [W3C del esquema XML] es versátil, permitiendo la programación en conceptos tales como la herencia y el tipo de creación, pero es compleja. El estándar en sí es altamente técnico y publicado en 3 partes diferentes, por lo que es difícil de entender sin cometiendo grandes cantidades de tiempo.

Por lo tanto, dada la complejidad del estándar W3C XML Schema, ¿cómo se asegura que un esquema que crea cumple con ese estándar? Desde el mismo artículo de Wikipedia:

Los problemas que enfrentan los usuarios cuando se trabaja con el estándar XSD se pueden mitigado con el uso de herramientas de edición gráfica. Aunque cualquier editor de texto se puede usar para editar un Esquema XML, un editor gráfico ofrece ventajas; permitiendo que la estructura del documento sea vista gráficamente y editada con soporte de validación, ayudantes de entrada y otras características útiles.

En la parte inferior de ese artículo de Wikipedia encontrará una lista de editores de esquemas XML, algunos de los cuales tienen licencia como "software libre".

0
cd /the/dir/with/your/schema 
curl -O https://www.w3.org/2012/04/XMLSchema.xsd 
xmllint.exe --noout --schema XMLSchema.xsd <your schema> 

En * nix (incluyendo git-bash o similares en Windows), si el esquema es válida, entonces $? == 0 demás $? == 1. Estoy seguro de que hay algunos equivalentes de powershell ...

Esto vino de un comentario de @ AlexanderKjäll a una respuesta de @lavinio en otro lugar aquí. Agregué mi propio comentario para decir @ AlexanderKjäll debería agregar esto como una respuesta. Sin embargo (para mí al menos), no era del todo correcto, ya que no funcionaría con el URI del archivo remoto. Y así mi respuesta. Si votas a favor esto, puedes votar por favor su comentario.

Cuestiones relacionadas