gpt4 book ai didi

xml - 基于nodeName的xpath选择

转载 作者:行者123 更新时间:2023-12-03 16:43:24 26 4
gpt4 key购买 nike

我有一个像下面这样的XML,我想在xslt中使用xpath筛选仅选择元素“ b”和“ c”的“ a”子元素

<a>
<b>data_1</b>
<c>data_1</c>
<d>data_1</d>
<e>data_1</d>
</a>
<a>
<b>data_2</b>
<c>data_2</c>
<d>data_2</d>
<e>data_2</d>
</a>
<a>
<b>data_3</b>
<c>data_3</c>
<d>data_3</d>
<e>data_3</d>
</a>


有什么建议吗?

最佳答案

首先,请注意您没有提供格式良好的XML文档。根据定义,格式正确的XML文档必须具有单个top元素。

我假设在这个答案中,所有a元素都是该单个top元素的子元素,未在问题中显示。



用:

/*/a/*[self::b or self::c]


这将选择任何 bc元素,并且该元素是XML文档顶部元素的任何 a元素的子元素。

请注意,当前接受的答案不正确:

/a/*[self::a or self::b or self::c]


它不仅假定只有一个 a顶部元素(而且没有),而且给定了一个特定的XML文档,除了所需元素之外,它还将选择作为以下元素的子元素的任何 a元素。顶部元素 a

我上面推荐的XPath表达式:

/*/a/*[self::b or self::c]


比其他答案之一中提出的另一个正确的XPath表达式更有效:

/a/b | /a/c


这需要分别评估 /a/b//a/c,然后执行两次评估结果的集合。

我推荐的XPath表达式只需要对文档进行一次扫描,不需要合并,甚至可以在无限制大小的巨大XML文档的流模式下使用。

关于xml - 基于nodeName的xpath选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11961364/

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