【发布时间】:2017-01-29 02:04:08
【问题描述】:
我有一个输入 xml 文件,其中包含一个元素,该元素又包含 xml 文本。我想读取元素文本,然后将其放入节点集,以便我可以使用 xpath 搜索内容。这是一块:
<TEMPLATE_STRUCTURE_XML><![CDATA[<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<TRANSACTION>
<VERSION>1.3</VERSION>
<SCREEN>something123</SCREEN>
</TRANSACTION>
]]></TEMPLATE_STRUCTURE_XML>
在这种情况下,我想获得值 something123。
问题是,如果我将(硬编码)内部 xml 文件的部分放在 xsl 中,xalan:nodeset() 工作正常,但当我使用 时它不起作用xsl:value-of。 oXygen XMLeditor 向我显示 value-of 的结果已成为纯文本,而不是节点。
以下作品:
<xsl:variable name="statementSummaryData">
<ss_Set>
<TRANSACTION>
<VERSION>1.3</VERSION>
<SCREEN>something123
</SCREEN>
</TRANSACTION>
</ss_Set>
</xsl:variable>
<xsl:variable xmlns:xalan="http://xml.apache.org/xalan" name="ssTemplatesNodeSet" select="xalan:nodeset($statementSummaryData)"/>
<xsl:value-of select="substring-before($ssTemplatesNodeSet//SCREEN,' ')"/>
以下不起作用。
<xsl:variable name="statementSummaryWithHeader">
<xsl:value-of select="TEMPLATE_STRUCTURE_XML" disable-output-escaping="yes"/>
</xsl:variable>
<xsl:variable name="statementSummaryWithNoHeader">
<xsl:value-of select="substring-after($statementSummaryWithHeader,'?>')" disable-output-escaping="yes"/>
</xsl:variable>
<xsl:variable name="statementSummaryData">
<ss_Set>
<xsl:value-of select="$statementSummaryWithNoHeader" disable-output-escaping="yes"/>
</ss_Set>
</xsl:variable>
<xsl:variable xmlns:xalan="http://xml.apache.org/xalan" name="ssTemplatesNodeSet" select="xalan:nodeset($statementSummaryData)"/>
<xsl:value-of select="substring-before($ssTemplatesNodeSet//SCREEN,' ')"/>
以下也不起作用:
<xsl:variable name="statementSummaryWithHeader">
<xsl:value-of select="TEMPLATE_STRUCTURE_XML" disable-output-escaping="yes"/>
</xsl:variable>
<xsl:variable name="statementSummaryWithNoHeader">
<xsl:value-of select="substring-after($statementSummaryWithHeader,'?>')" disable-output-escaping="yes"/>
</xsl:variable>
<xsl:variable name="statementSummaryData">
<ss_Set>
<xsl:value-of xmlns:xalan="http://xml.apache.org/xalan" select="xalan:nodeset($statementSummaryWithNoHeader)"/>
</ss_Set>
</xsl:variable>
<xsl:variable xmlns:xalan="http://xml.apache.org/xalan" name="ssTemplatesNodeSet" select="xalan:nodeset($statementSummaryData)"/>
<xsl:value-of select="substring-before($ssTemplatesNodeSet//SCREEN,' ')"/>
【问题讨论】: