2009-08-27 11 views
6

Tiene un documento xml de origen que usa un espacio de nombres que contiene prefijos y un espacio de nombres predeterminado. Cuando lo transformo utilizando un documento XSLT, el documento xml traducido resultante es incorrecto, es decir, faltan los datos del elemento del documento XML de origen.Problema con XSLT donde el documento fuente xml usa el espacio de nombres predeterminado

Cuando elimino el "espacio de nombre predeterminado" del documento xml de origen, la transformación funciona como se esperaba.

Pregunta: ¿hay alguna manera de resolver el problema sin la necesidad de editar el espacio de nombres predeterminado del documento xml de origen? Es decir, agregue la solución al documento XSLT.

documento XML:

<MyElement xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
      xmlns="http://www.zolldata.com/UDX"> 

donde el problema es por defecto espacio de nombres xmlns = "http://www.zolldata.com/UDX"

Respuesta

4

Especificar mismo espacio de nombres por defecto en el documento XSLT si sus selectores hacen no use prefijos, o use prefijos para todos los selectores en el XSLT, pero no olvide vincularlos al espacio de nombres predeterminado de su documento XML.

+1

Agregaría el espacio de nombre predeterminado, xmlns = "http://www.zolldata.com/UDX", a mi documento XSLT. ¿Cómo vincularía? ¿Qué estoy vinculando? – Larry

+0

Intenté su primera sugerencia y eso no funciona. Parece que el espacio de nombre predeterminado DEBE eliminarse del XML para que el XSLT funcione (o el prefijo correctamente). Como Larry, no sé a qué te refieres con "... no te olvides de vincularlos al espacio de nombres predeterminado". Supongo que esto significa en realidad prefijarlo con "xmlns: z = ...", que solo funciona si va a cambiar la respuesta xml en lugar de tener que lidiar con un sistema existente que utiliza de forma válida un espacio de nombres predeterminado. – Justin

Cuestiones relacionadas