Supongamos que tiene un archivo XML de origen con ?xml-stylesheet PI, por lo que cuando lo cargue en un navegador se transformará a través de la hoja de estilo. Digamos que el archivo XML de origen se transformó a HTML y se muestra. Todo está bien.
Ahora el HTML contiene un elemento de script (javascript) para hacer cosas. ¿Hay alguna forma, estándar o secreta, por la cual uno pueda volver al XML fuente original del documento actual?
No encontré uno, así que tengo el XSLT de salida de la fuente en un elemento de encabezado/script con id="fuente" y tipo="texto/xml". Pero cuando cargo eso con
document.getElementById("source").firstChildObtengo texto, no el elemento real. Si hago DOMParser parseFromString, obtengo un error no declarado de prefijo de espacio de nombres, porque XSLT no generó los prefijos de espacio de nombres que ya se declararon en este nodo de origen.
Tal vez haya alguna forma con un elemento HTML diferente que realmente lea el contenido como nodos DOM, con todos los espacios de nombres, no como un mero nodo de texto.
He intentado usar otros elementos además del script, por ejemplo, hay una etiqueta llamada <xml> en HTML, que puede usar para incrustar XML. Y cuando uso esto, el
document.getElementById("source").firstChilden realidad me da un elemento, no solo un nodo de texto.
Sin embargo, ese elemento no tiene en cuenta el espacio de nombres, por lo que no sabe nada sobre la declaración xmlns que ya se hizo fuera y, por lo tanto, el XSLT no volvió a salir.
Idealmente, podría acceder al XML de origen sin tener que incrustarlo en el HTML. Pero si tengo que incrustarlo, ¿cómo puedo obligar a que todos los espacios de nombres se declaren nuevamente?