# Validar XML con fichero XSD

**URL:** <https://foros.velneo.com/t/validar-xml-con-fichero-xsd/10949>\
**Category:** Velneo\
**Created:** [20 Enero, 2022 10:25 UTC](https://foros.velneo.com/t/validar-xml-con-fichero-xsd/10949 "2022-01-20T10:25:58Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![alvaro](https://avatars.discourse-cdn.com/v4/letter/a/839c29/32.png) [@alvaro](https://foros.velneo.com/u/alvaro)\
**Post date:** [20 Enero, 2022 10:25 UTC](https://foros.velneo.com/t/validar-xml-con-fichero-xsd/10949/1 "2022-01-20T10:25:58Z")

</div>

¿Alguien ha implementado algún proceso para validar un XML contra un fichero de esquema (XSD)?

Gracias.

---

<div class="post-metadata">

**Author:** ![pacosatu](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/pacosatu/32/5131_2.png) [@pacosatu](https://foros.velneo.com/u/pacosatu)\
**Post date:** [20 Enero, 2022 13:39 UTC](https://foros.velneo.com/t/validar-xml-con-fichero-xsd/10949/2 "2022-01-20T13:39:31Z")

</div>

Hola laukolan.

¿ Cómo validas actualmente el XML con el XSD ?

Saludos  
Paco Satué

---

<div class="post-metadata">

**Author:** ![alvaro](https://avatars.discourse-cdn.com/v4/letter/a/839c29/32.png) [@alvaro](https://foros.velneo.com/u/alvaro)\
**Post date:** [24 Enero, 2022 08:38 UTC](https://foros.velneo.com/t/validar-xml-con-fichero-xsd/10949/3 "2022-01-24T08:38:13Z")

</div>

Hay páginas web por ejemplo [Free Online XML Validator (XSD) (liquid-technologies.com)](https://www.liquid-technologies.com/online-xsd-validator).  
Donde dandole el fichero XML y el fichero XSD, te dice si tienes algún error.

Ademas hay por hay una librería en javascript para poder validar [GitHub - kripken/xml.js: Port of libxml to JavaScript using Emscripten](https://github.com/kripken/xml.js/)

Pero igual alguien había tenido la necesidad de hacer esto y lo ha realizado de alguna otra manera.

Gracias.

---

<div class="post-metadata">

**Author:** ![pacosatu](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/pacosatu/32/5131_2.png) [@pacosatu](https://foros.velneo.com/u/pacosatu)\
**Post date:** [24 Enero, 2022 12:53 UTC](https://foros.velneo.com/t/validar-xml-con-fichero-xsd/10949/4 "2022-01-24T12:53:01Z")

</div>

Hola laukolan.

No es un proceso sencillo eso de **validar un XML** , de hecho la [librería xmllint.js](https://github.com/kripken/xml.js) ocupa nada más y nada menos que 4Mb.

Desde luego con Velneo que yo sepa no hay nada.

Tienes un ejemplo de uso de la [librería xmllint.js](https://github.com/kripken/xml.js) en la aplicación **Test de código** de Ejercicios con Velneo.  
En la pestaña de HTML y la rama XML ( Validar con XSD).

 ![imagen](https://canada1.discourse-cdn.com/flex035/uploads/velneo/original/2X/b/b8a42644d7941bce002a571d51c890c90ef78fb9.png)

Un saludo  
Paco Satué

---

<div class="post-metadata">

**Author:** ![alvaro](https://avatars.discourse-cdn.com/v4/letter/a/839c29/32.png) [@alvaro](https://foros.velneo.com/u/alvaro)\
**Post date:** [26 Enero, 2022 07:14 UTC](https://foros.velneo.com/t/validar-xml-con-fichero-xsd/10949/5 "2022-01-26T07:14:10Z")

</div>

Buenos días Paco, antes de nada muchas gracias por tu tiempo.  
En el ejemplo cuado le doy a validar no muestra ningún resultado.

Cuando importo el archivo xmllint.js al proyecto de Velneo me da errores en el script.

 ![Imagen](https://canada1.discourse-cdn.com/flex035/uploads/velneo/original/2X/f/f113bdd1d2f6f2563233037f274ab9fdaa3fa767.png)

---

<div class="post-metadata">

**Author:** ![pacosatu](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/pacosatu/32/5131_2.png) [@pacosatu](https://foros.velneo.com/u/pacosatu)\
**Post date:** [26 Enero, 2022 10:10 UTC](https://foros.velneo.com/t/validar-xml-con-fichero-xsd/10949/6 "2022-01-26T10:10:59Z")

</div>

Hola laukolan.

Creo que esta librería solo funcionan en los entornos Browser o Node.

El motor de **javascript** de Velneo es un entorno en el que no disponemos del **DOM** del explorador necesario en muchas librerías.

Por lo tanto, necesitarás el [Visor HTML](https://doc.velneo.com/velneo-vdevelop/proyectos-objetos-y-editores/proyecto-de-aplicacion/formulario/controles-de-visualizacion/visor-html) de Velneo para ejecutar esta librería tal como hago en la aplicación **Test de código**.

Saludos  
Paco Satué

---

<div class="post-metadata">

**Author:** ![alvaro](https://avatars.discourse-cdn.com/v4/letter/a/839c29/32.png) [@alvaro](https://foros.velneo.com/u/alvaro)\
**Post date:** [27 Enero, 2022 07:29 UTC](https://foros.velneo.com/t/validar-xml-con-fichero-xsd/10949/7 "2022-01-27T07:29:57Z")

</div>

Muchas gracias Paco.  
También he visto que igual se puede hacer en Windows mediante un script vb con la función MSXML2.  
Si consigo hacerlo, lo dejare por aquí.

He encontrado unas instrucciones:

```auto
'Create a schema cache and add books.xsd to it.
  'Dim xmlschema 'As MSXML2.XMLSchemaCache50
  Set xmlschema =CreateObject("MSXML2.XMLSchemaCache.3.0")
  xmlschema.Add "urn:ticketbai:emision", "C:\Users\alvaro\Desktop\validador\ticketBai.xsd"

  'Create an XML DOMDocument object.
  'Dim xmldom 'As MSXML2.DOMDocument50
  Set xmldom = CreateObject("MSXML2.DOMDocument.3.0")

  'Assign the schema cache to the DOM document.
  'schemas collection.
  Set xmldom.schemas = xmlschema

  'Load books.xml as the DOM document.
  xmldom.async = False
  xmldom.Load App.Path & "C:\Users\alvaro\Desktop\validador\FacturaFirmada.xml"

  'Return validation results in message to the user.
  If xmldom.parseError.errorCode <> 0 Then
     MsgBox xmldom.parseError.errorCode & " " & _
     xmldom.parseError.reason
  Else
     MsgBox "No Error"
  End If

```

Gracias.

---

<div class="post-metadata">

**Author:** ![pacosatu](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/pacosatu/32/5131_2.png) [@pacosatu](https://foros.velneo.com/u/pacosatu)\
**Post date:** [27 Enero, 2022 08:00 UTC](https://foros.velneo.com/t/validar-xml-con-fichero-xsd/10949/8 "2022-01-27T08:00:43Z")

</div>

Hola laukolan.

Usar las librerías XML DOM del sistema operativo es lo ideal y atiende a la demanda de muchos programadores de no estar constantemente reinventando la rueda.

Pero lamentablemente eso choca frontalmente con Velneo y la multiplataforma.

Para el sistema operativo Windows yo recurro muchísimo a la solución de scripts externos y en este caso uso la versatil herramienta [AutoIt](https://www.autoitscript.com/site/). Es una forma de encapsular el código VBS y además generar ejecutables sin dependencias.

Échale un vistazo a la siguiente [librería AutoIt de XML](http://domoticx.com/autoit3-library-xmldomwrapper-xml-handelingen/#). Tiene todo lo que hubiéramos soñado tener en Velneo desde hace años.

Saludos  
Paco Satué

---

<div class="post-metadata">

**Author:** ![alvaro](https://avatars.discourse-cdn.com/v4/letter/a/839c29/32.png) [@alvaro](https://foros.velneo.com/u/alvaro)\
**Post date:** [27 Enero, 2022 11:52 UTC](https://foros.velneo.com/t/validar-xml-con-fichero-xsd/10949/9 "2022-01-27T11:52:43Z")

</div>

Muchas gracias Paco.  
Estoy realizando una aplicación para gestionar la nueva facturación electrónica en el País vasco (TBAI).  
Lo que hay que hacer es generar un XML de la factura, firmarlo y luego enviarlo a hacienda cada vez que se expide una nueva factura. Cada factura contendrá la huella de la factura anterior con lo que sí hay una modificación en una factura se puede detectar.  
Al final la firma y el envío los tengo que hacer con scripts vb externos a Velneo con la líbreria Chilkat.  
Firmar no se puede con Velneo y el envío tampoco se puede hacer porque la clase velneo xmlhttprequest tiene un error que será corregido en futuras versiones de velneo.

> Cita  
> El caso está en manos del departamento de desarrollo, según me han adelantado ellos, existe algún problema o tema con las librerías SSL del proveedor QT, pero de momento son apreciaciones, porque también han escalado el caso al proveedor y están conciliando con él para determinar el motivo. Tenemos unas sospechas que va de la mano con algún cambio ocurrido entre las ssl 1.1 y la 1.2, pero no hay algo confirmado porque depende también de la revisión del proveedor.Lo que me hubiera gustado es que este proceso se hiciera en tercer plano en el servidor cada vez que se genere una factura.

> Cita  
> Para mantenerte actualizado, hemos estado en constante diálogo con el proveedor de las librerías, en este caso QT, y ya nos confirmaron que es un error por parte de ellos que implica la recopilación de QT, se está trabajando en encontrar una solución que no requiera tanto cambio y pueda ser funcional, cuando tenga mas avances del tema te seguire informando al respecto.

Mi intención y lo bonito es que se manejara todo desde Velneo, asi podía haber sido multiplataforma y poder haber lanzado estos procesos desde un trigger por ejemplo.

Pero es lo que hay.  
Gracias de todas maneras.
