使用XSL我试图改变这个XML:
<book><title>This is a <b>great</b> book</title></book>
Run Code Online (Sandbox Code Playgroud)
进入这个XML:
<book>This is a <bold>great</bold> book</book>
Run Code Online (Sandbox Code Playgroud)
使用这个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>
Run Code Online (Sandbox Code Playgroud)
但我的输出看起来像这样:
<book><bold>great</bold></bold>
Run Code Online (Sandbox Code Playgroud)
谁能解释为什么根文本<title>会丢失?我相信我的for-each select语句可能需要修改,但我无法弄清楚应该是什么.
请记住,<xsl:template match>由于样式表的复杂性,我无法使用.
谢谢!
这个XPath表达式:
book/title/*
Run Code Online (Sandbox Code Playgroud)
意思是"所有子元素的book/title".在您的情况下,book/title有3个子节点:
This is a<b>...</b>book如您所见,其中只有一个是元素,并被选中.如果要获取所有子节点(文本和元素),请使用以下命令:
book/title/node()
Run Code Online (Sandbox Code Playgroud)
如果要单独获取文本节点,请使用以下命令:
book/title/text()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
194 次 |
| 最近记录: |