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

发布于 2024-10-04 14:25:26 字数 332 浏览 3 评论 0原文

我有这个 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

相思碎 2024-10-11 14:25:28

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

 

我怎样才能获得第一,更高的
级别,字符串?

您的代码生成 tag1 元素的字符串值,根据定义,该值是该元素的所有文本节点后代的串联。

生产

“打印此”字符串

您需要指定仅选择相应文本节点的 XPath 表达式

/tag1/text()[1]

只有指定 [1] 才能仅选择第一个文本节点子节点,否则可能会选择两个文本节点(这仅在 XSLT 2.0 中出现,其中 生成 select 中指定的所有节点的字符串值代码 > 属性)。

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

字符串值实际上是:

"
   Print this
   "

如果将 括在引号中,则会输出该值。

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

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

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"/> 

How can I get just the first, higher
level, string?

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

the "Print this" string

you need to specify an XPath expression that selects only the respective text node:

/tag1/text()[1]

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 the select attribute).

Further, the above expression selects the whole text node and its string value isn't "Print this".

The string value actually is:

"
   Print this
   "

and exactly this would be output if you surround the <xsl:value-of> in quotes.

To produce exactly the wanted string "Print this" use:

"<xsl:value-of select="normalize-space(/tag1/text()[1])"/>"
梦巷 2024-10-11 14:25:28

元素的 value-of 将为您提供其文本节点及其后代的值。如果您只想要元素的直接 text() 节点,请使用以下命令:

<xsl:value-of select="tag1/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 immediate text() node of the element, use this:

<xsl:value-of select="tag1/text()"/>
缪败 2024-10-11 14:25:28

将选择 tag1 下的所有文本节点

<xsl:value-of select="tag1/text()"/> will select all text nodes under tag1

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文