gpt4 book ai didi

xslt - 是否可以选择仅包含子节点子集的节点?

转载 作者:行者123 更新时间:2023-12-03 16:07:11 28 4
gpt4 key购买 nike

我有一些XPath:

//tbody/tr[2]/td/div/table/tbody/tr[2]/td[position() > 1]


除了第一个子节点,这给了我一切。但是,结果使我得到了td注释的节点列表。我想选择父级tr节点,但要删除第一个子级td节点。

是否可以仅使用xpath?

最佳答案

XPath是XML文档的查询语言。因此,它不能修改源XML文档的结构或创建新的XML文档。

创建新的,经过修改的文档的任务不能仅使用XPath完成。

使用XSLT可以轻松实现:

<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>

<xsl:template match="tr[2]/td[1]"/>
</xsl:stylesheet>


在以下XML文档上应用此转换时:

<table>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
</table>


所需的正确结果(除第二个 <td>的第一个 <tr>子代之外的所有节点都被复制):

<table>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
</table>

关于xslt - 是否可以选择仅包含子节点子集的节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5134936/

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