Siempre he encontrado que la validación frente a un esquema es una protección invaluable contra thinkos y me gustaría incorporar comprobaciones de validación como parte de un proyecto donde frecuentemente necesito escribir manualmente archivos XML. cien líneas de longitud. Mi editor de texto tiene una función de integración de CLI bastante buena, así que estoy buscando un validador de línea de comandos.Validador de línea de comandos XML para Windows
Cuando no he encontrado ninguna claros ganadores a través de Google, Asomé por aquí y halló una similar question, pero ninguno de los instrumentos sugeridos no encaja en mis necesidades:
- libxml (a través de cygwin) - hace no informa los números de línea; No tengo ni idea donde mis errores son!
- msxml - no se puede ejecutar desde la línea de comandos?
- xerces-c - parece requerir una copia de Visual C?
- xerces2-j - no se puede ejecutar desde la línea de comandos?
- xmlstarlet - apoyo insuficiente XSD *
(* El esquema que estoy validando contra utiliza grupos de sustitución - inapropiadamente, pero es externo al proyecto, por lo que no se puede cambiar - lo que provoca xmlstarlet
a ahogarse incluso en archivos válidos.)
Normalmente, este es el punto en la solución de un problema en el que me daría por vencido en buscar una solución existente y alcanzar el Python-hammer, pero el soporte XML de Python es notoriamente ... bueno ... en realidad, simplemente dejémoslo en "notorio".
Así que he vuelto a buscar una herramienta preexistente. Mis requisitos son bastante simples:
- se ejecuta en Win32 (Windows XP SP3, específicamente)
- de línea de comandos; mi editor puede trabajar con casi cualquier combinación de entrada estándar de entrada/salida/ERR, los argumentos, los archivos temporales, etc.
- apoyo XSD razonablemente completo (en especial espacios de nombres y grupos de sustitución)
- informa del número de línea donde se produjo el error !
¿Existe una herramienta de este tipo? Preferiría no tener que instalar Visual Studio y mis amigos (demasiado hinchado, IMO), pero ya tengo instalados Cygwin y Python.
¡Interesante! La versión que estoy usando es 20703, que produce "Elemento 'c': este elemento no se espera. Se espera (b) .'" (casi idéntico, pero carece de número de línea). Tendré que ver si puedo desenterrar y una versión anterior. –
Parece un paso atrás ... Me pregunto si agregaron una opción, si los números de línea están incluidos o no. Puede valer la pena consultar los documentos (tal vez --verbose). O ... ¿tal vez tiene que ver con lo que se ha compilado? No incluí eso, pero lo agregaré (también estoy ejecutando en Linux, lo que no debería hacer ninguna diferencia): está compilado con: Threads Tree Output Push Reader Patterns Writer SAXv1 FTP HTTP DTDValid HTML Legacy C14N Catalog XPath XPointer XInclude Iconv ISO8859X Unicode Regexps Automata Expr Schemas Schematron Modules Debug Zlib – 13ren
Parece que la versión de 'libxml' en Cygwin se compila con las mismas opciones, y no parece haber ninguna opción' --verbose'. Terminé agarrando los binarios de Win32 para 2.6.27 del sitio oficial y funciona muy bien. Un paso hacia atrás, de hecho. :-) –