Validar XML con Schematron en PHP 5

Tengo un problema con la validación de XML con schematron .

En mi código, cargo XML y XSL como objetos DOMDocument e bash transformar:

$domSche = new DOMDocument(); $domSche->loadXML($message); $domXSLSche = new DOMDocument(); $domXSLSche->load("CI-SIS_StructurationCommuneCDAr2.xsl"); $xsltsche = new XSLTProcessor(); $xsltsche->importStylesheet($domXSLSche); $XSLValid = $xsltsche->transformToXml($domSche); 

Pero la función devuelve este error:

XSLTProcessor :: transformToXml (): sin hoja de estilos asociada a este objeto

No entiendo, técnicamente, que importStylesheet asocie mi XSL al XML, ¿no?

Si alguien quiere ver más fonts, los archivos están en:

  • $ mensaje
  • CI-SIS_StructurationCommuneCDAr2.xsl

La versión de Schematron que utiliza no requiere XSL 2.0, sin embargo, el archivo que tiene hace uso de las características de XSL 2.0.

XSLTProcessor en PHP solo es compatible con XSL 1.0. Algunas de las características utilizadas en ese archivo, por lo tanto, no están disponibles y hacen que la importación falle.

Como la hoja de estilo no se pudo importar, la transformación no se puede ejecutar.


El mensaje de error

Advertencia: XSLTProcessor :: transformToXml (): ninguna hoja de estilo asociada a este objeto

significa que falta la hoja de estilo. No en el disco o en la memoria, sino para la transformación.

Eso es porque tiene errores y finalmente no pudo comstackr.

En su caso, el archivo XSL que tiene es de la versión 2.0, pero PHP solo es compatible con las características 1.0. También hace uso de variables que no están establecidas (definidas). Cuando cargo sus datos de ejemplo, obtengo los siguientes errores:

Advertencia: XSLTProcessor :: importStylesheet (): error de comstackción: archivo CI-SIS_StructurationCommuneCDAr2.xsl línea 13 elemento hoja de estilos

Cual es:

  version="2.0"> 

y explicado por la siguiente advertencia:

Advertencia: XSLTProcessor :: importStylesheet (): xsl: version: solo se admiten las características 1.0

La siguiente es una variable indefinida:

Advertencia: XSLTProcessor :: importStylesheet (): variable no definida

Advertencia: XSLTProcessor :: importStylesheet (): error de comstackción: archivo CI-SIS_StructurationCommuneCDAr2.xsl línea 4974 plantilla de elemento

cual es

    

que es la variable $templateObservationMedia y lleva a

Advertencia: XSLTProcessor :: importStylesheet (): Error al comstackr el predicado

Para que esto funcione, al menos deberías solucionar estos problemas. Como el uso de la variable dentro del patrón de coincidencia no es XSLT 1.0, debe trabajar al menos eso. Consulte Múltiples advertencias de PHP en XSLTProcessor :: importStylesheet () para una discusión extendida del problema de variable / coincidencia.