我怎样才能获得第一个更高级别的字符串?
我有这个 XML 文件(的标记),我只想打印其中的“Print this”字符串,忽略以下内容:
<tag1>
Print this
<tag2>
Do not print this
</tag2>
</tag1>
在我的 XSL 文件中,使用此命令我可以获得 tag1
的内容和tag2
的内容打印出来:
<xsl:value-of select="tag1"/>
谢谢!
I have this (token of) XML file of which I want to print just the "Print this" string, ignoring what follows:
<tag1>
Print this
<tag2>
Do not print this
</tag2>
</tag1>
In my XSL file, with this command I get both the contents of tag1
and the contents of tag2
printed:
<xsl:value-of select="tag1"/>
Thank you!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您的代码生成
tag1
元素的字符串值,根据定义,该值是该元素的所有文本节点后代的串联。生产
您需要指定仅选择相应文本节点的 XPath 表达式:
只有指定
[1]
才能仅选择第一个文本节点子节点,否则可能会选择两个文本节点(这仅在 XSLT 2.0 中出现,其中
生成select
中指定的所有节点的字符串值代码 > 属性)。此外,上面的表达式选择整个文本节点,并且其字符串值不是
“Print this”
。字符串值实际上是:
如果将括在引号中,则会输出该值。
要准确生成所需的字符串
“打印此”
,请使用:Your code produces the string value of the
tag1
element, which by definition is the concatenation of all text-nodes-descendents of the element.To produce just
you need to specify an XPath expression that selects only the respective text node:
Specifying
[1]
is necessary to select only the first text-node child, otherwise two text-nodes may be selected (this is an issue only in XSLT 2.0 where<xsl:value-of>
produces the string values of all nodes specified in theselect
attribute).Further, the above expression selects the whole text node and its string value isn't
"Print this"
.The string value actually is:
and exactly this would be output if you surround the
<xsl:value-of>
in quotes.To produce exactly the wanted string
"Print this"
use:元素的
value-of
将为您提供其文本节点及其后代的值。如果您只想要元素的直接text()
节点,请使用以下命令:value-of
of an element will give you the value of it's text nodes and that of it's descendants. If you just want the immediatetext()
node of the element, use this:
将选择tag1
下的所有文本节点<xsl:value-of select="tag1/text()"/>
will select all text nodes undertag1