gpt4 book ai didi

xml - 使用 xsl 方法 for-each 的问题

转载 作者:数据小太阳 更新时间:2023-10-29 02:20:10 26 4
gpt4 key购买 nike

我正在尝试使用 XSL 转换此 XML:

<book><title>This is a <b>great</b> book</title></book>

进入这个 XML:

<book>This is a <bold>great</bold> book</book>

使用这个 xsl:

<xsl:for-each select="book/title/*">
<xsl:choose>
<xsl:when test="name() = 'b'">
<bold>
<xsl:value-of select="text()"/>
</bold>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="text()"/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>

但我的输出看起来像这样:

<book><bold>great</bold></bold>

谁能解释为什么 <title> 的根文本迷路了吗?我认为我的 for-each select 语句可能需要修改,但我不知道应该修改什么。

请记住,我不能使用 <xsl:template match>因为我的样式表很复杂。

谢谢!

最佳答案

这个 XPath 表达式:

book/title/*

表示“book/title 的所有子元素”。在你的情况下,book/title有 3 个子节点:

  • 文本节点:This is a
  • 元素节点:<b>...</b>
  • 文本节点:book

如您所见,只有其中一个是元素,并被选中。如果要获取所有子节点,包括文本和元素,请使用:

book/title/node()

如果你想单独获取文本节点,使用这个:

book/title/text()

关于xml - 使用 xsl 方法 for-each 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1821109/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com