¿Es posible incluir / excluir la instrucción de procesamiento XML en función de su presencia en el documento de origen?

StackOverflow https://stackoverflow.com/questions/1372086

  •  21-09-2019
  •  | 
  •  

Pregunta

tengo que pasar de nuevo la información de una fuente diferente y puede tener una transformación en el medio, pero dependiendo de si el documento de origen tiene la instrucción de procesamiento XML, tengo que pasarlo y si no funciona, no debo pasarlo .

Input
<?xml version="1.0" encoding="UTF-8"?>
<Source/>

Output    
<?xml version="1.0" encoding="UTF-8"?>
<Source/>

Si es imposible tener la instrucción de procesamiento, no debo incluirlo en la salida, sobre todo para apoyar algunos otros programas heredados que no entienden ellos (la!)

Me puede cambiar dinámicamente hojas de estilo y uso la omitir-xml-declaración basada en si la entrada tenía la instrucción, pero ¿hay una manera de hacerlo de una sola hoja de estilo?

EDIT:. No puedo quito la transformación que está presente antes de devolver los datos

EDIT: Acabo de leer que a pesar de que se ve como una instrucción de procesamiento, el <?xml version.. ?>, de hecho no lo es, así que no sé si es posible hacer coincidir en él, alguna sugerencia

?
¿Fue útil?

Solución

La declaración XML se parece a una instrucción de procesamiento, pero no lo es.

Existe para informar al analizador XML sobre el documento que se va a leer (versión XML, la codificación de caracteres).

No existe en el DOM / conjunto de información resultante y por lo tanto no puede ser igualada en XSLT.

Además, no se puede modificar dinámicamente la directiva <xsl:output>, algo así como diferentes elementos de salida en un <xsl:if> o <xsl:choose> construcción no va a funcionar.

Mi sugerencia es: Si una parte de las aplicaciones posteriores no entienden declaraciones XML (que es un WTF hecho de que realmente me hace rascarme la cabeza), luego dejarlos fuera todo el tiempo usando:

<xsl:output omit-xml-declaration="yes" />
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top