utiliza - xmlnamespacemanager
¿Cómo obtener el namespace-uri de un nodo en xslt sin saber el nombre del elemento? (1)
La siguiente hoja de estilo:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="UTF-8"/>
<xsl:template match="/">
<xsl:value-of select="namespace-uri(*/*[1])"/>
</xsl:template>
</xsl:stylesheet>
devolverá el espacio de nombres del primer elemento secundario del elemento raíz.
En su ejemplo, el elemento raíz es message
y su primer hijo es Header
, por lo que el resultado aquí será:
http://schemas.org/Message
Estoy usando WSO2 BPS 3.2.0 y quiero asignar espacio de nombres-uri de elemento a cadena. El problema es que no sé el nombre del elemento en el momento del diseño.
Tengo datos XML
<message>
<Header xmlns="http://schemas.org/Message"/>
<Body xmlns="http://schemas.org/Message">
<Container xmlns="http://schemas.org/Container/1.0">
<Object>
<document xmlns="http://schemas.org/doc/1.1">dfjgf...ash</document>
</Object>
<Object>
<picture xmlns="http://schemas.org/pic/jpeg/2.0">we54uiytas...h</document >
</Object>
</Container>
</Body>
</message>
Intento usar la transformación XSLT para obtener espacio de nombres
bpel:doXslTransform("getNamespace.xsl", $Var.message/tns1:Body/tns2:Container/tns2:Object[1])
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fn="http://www.w3.org/2005/xpath-functions">
<xsl:output method="xml"/>
<xsl:template match="child::node[position()=1]">
<xsl:value-of select="namespace-uri(.)"/>
</xsl:template>
no devuelve nada
Si utilizo el texto del método de salida, devuelve todos los textos contenidos en los datos xml. ¿Dónde me equivoco?