我有一个要转换的xml。
XML
<Process xmlns="http://tempuri.org/">
<Result>-1</Result>
<Id>qwer1234</Id>
<xml>
<![CDATA[<hello type="PROCESS"><process urn="hello"><object></object><object></object></process></hello>]]>
</xml>
</Process>
我想从标记中检索内部xml。
XSLT
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ns="http://tempuri.org/">
<xsl:template match="/Process">
<xsl:value-of select="xml" disable-output-escaping="yes" />
</xsl:template>
</xsl:stylesheet>
使用上述xslt,如果输入xml中没有名称空间(xmlns =“ http://tempuri.org/”),则可以得到所需的输出。但是使用命名空间,我无法获得所需的输出。
所需的输出
<hello type="PROCESS">
<process urn="hello">
<object></object>
<object></object>
</process>
</hello>
我是XSLT的新手。我会帮助我产生所需的输出。
答案 0 :(得分:1)
您已经声明了前缀,但是您没有使用它。试试:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ns="http://tempuri.org/">
<xsl:output method="text"/>
<xsl:template match="/ns:Process">
<xsl:value-of select="normalize-space(ns:xml)" disable-output-escaping="yes" />
</xsl:template>
</xsl:stylesheet>