需要XSLT来复制内部xml是来自节点的字符串

时间:2019-03-03 17:02:33

标签: xml xslt

我有一个要转换的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的新手。我会帮助我产生所需的输出。

1 个答案:

答案 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>