我有这个(令牌)XML文件,我只想打印“打印此”字符串,忽略以下内容:
<tag1>
Print this
<tag2>
Do not print this
</tag2>
</tag1>
在我的XSL文件中,使用此命令,我同时获得了tag1
的内容和tag2
的内容:
<xsl:value-of select="tag1"/>
谢谢!
答案 0 :(得分:3)
value-of
元素将为您提供文本节点及其后代的值。如果您只想要元素的直接text()
节点,请使用:
<xsl:value-of select="tag1/text()"/>
答案 1 :(得分:3)
在我的XSL文件中,使用此命令我 获取tag1的内容和 打印的tag2的内容:
<xsl:value-of select="tag1"/>
我怎样才能获得第一个,更高的 等级,字符串?
您的代码生成tag1
元素的字符串值,根据定义,该元素是元素的所有text-nodes-descendents的串联。
仅制作
“打印此”字符串
您需要指定一个只选择相应文本节点的XPath表达式:
/tag1/text()[1]
指定[1]
是必要的,只选择第一个文本节点子节点,否则可能会选择两个文本节点(这只是在XSLT 2.0中的问题,其中<xsl:value-of>
生成所有字符串值select
属性中指定的节点。
此外,上面的表达式选择整个文本节点,其字符串值不是"Print this"
。
字符串值实际上是:
"
Print this
"
如果您在引号中包围<xsl:value-of>
,则会输出完全相同的内容。
准确生成所需字符串"Print this"
使用:
"<xsl:value-of select="normalize-space(/tag1/text()[1])"/>"
答案 2 :(得分:2)
<xsl:value-of select="tag1/text()"/>
将选择tag1