Xml 我怎样才能得到第一个更高级别的字符串?

Xml 我怎样才能得到第一个更高级别的字符串?,xml,xslt,tags,value-of,Xml,Xslt,Tags,Value Of,我有一个XML文件(token of),我只想打印其中的“print this”字符串,忽略以下内容: <tag1> Print this <tag2> Do not print this </tag2> </tag1> 谢谢大家! 元素的值将为您提供其文本节点及其子体的值。如果只需要元素的立即text()节点,请使用以下命令: <xsl:value-of select="tag1/text()"/>

我有一个XML文件(token of),我只想打印其中的“print this”字符串,忽略以下内容:

<tag1>
   Print this
   <tag2>
      Do not print this
   </tag2>
</tag1>

谢谢大家!

元素的值将为您提供其文本节点及其子体的值。如果只需要元素的立即
text()
节点,请使用以下命令:

<xsl:value-of select="tag1/text()"/>

将选择
标记1下的所有文本节点

在我的XSL文件中,使用此命令 获取tag1的内容和 tag2打印的内容:

<xsl:value-of select="tag1"/> 
只有指定
[1]
才能选择第一个文本节点子节点,否则可能会选择两个文本节点(这是XSLT 2.0中的一个问题,XSLT 2.0中的
生成
选择属性中指定的所有节点的字符串值)

此外,上面的表达式选择整个文本节点,其字符串值不是“打印此”

字符串值实际上是:

"
   Print this
   "
如果你把
括在引号里,这就是输出

要精确生成所需字符串
“打印此”
请使用

/tag1/text()[1]
"<xsl:value-of select="normalize-space(/tag1/text()[1])"/>"
“”

正确问题的精确副本,+1。请参阅我的答案,以获得解释,以及比当前接受的答案更正确、更精确的解决方案。
"<xsl:value-of select="normalize-space(/tag1/text()[1])"/>"