gpt4 book ai didi

xml - 使用 xpath 获取第 n 个最近的后代

转载 作者:行者123 更新时间:2023-12-04 04:34:54 25 4
gpt4 key购买 nike

我有许多类似的文件如下所示。 random0的名字, random1 , 和 random2标签因文档而异。列表标签的数量不是固定的。我如何使用 xpath从内容标签中获取第 n 个最近的后代列表标签,即如果 n == 1返回 1,2,3,10,11, 12 ;如果 n == 2返回 4,5,6 ;等等。注意:最近的后代列表标签可能是一个 child 、孙子甚至更远的 child 。

<?xml version="1.0" encoding="UTF-8"?>
<content>
<random0>
<list>1</list>
<list>2</list>
<list>3</list>
<random1>
<list>4</list>
<list>5</list>
<list>6</list>
<random2>
<list>7</list>
<list>8</list>
<list>9</list>
</random2>
</random1>
<list>10</list>
<list>11</list>
<list>12</list>
</random0>
</content>

最佳答案

所以打破这个,你需要

  • 找出所有具有 list 的后代元素,不管它们的名字是什么 child
  • 选择其中的第 n 个
  • 提取其所有 list child

  • descendant::*[list][$number]/list

    或者可能

    descendant-or-self::*[list][$number]/list

    如果您想允许第一批列表直接位于上下文节点内(例如,如果您从 random0 而不是 content 开始)。

    XSLT 示例
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output indent="yes" />

    <xsl:template match="/">
    <result>
    <xsl:copy-of select="descendant-or-self::*[list][2]/list" />
    </result>
    </xsl:template>

    </xsl:stylesheet>

    输出
    <?xml version="1.0"?>
    <result>
    <list>4</list>
    <list>5</list>
    <list>6</list>
    </result>

    注意。这是 XPath 中暴露出 descendant:: 之间细微差异的极端情况之一。和 .// . .//*[list][$num]/list的明显简写不会做与 descendant::*[list][$num]/list 相同的事情,它会挑选出所有元素列表子元素,它们是它们各自的父元素中的第 n 个元素列表子元素,在您的示例中,如果 n=1,则表示所有元素,否则什么都没有。您必须添加括号以使其与 descendant:: 的行为相同版本 - (.//*[list])[$num]/list

    关于xml - 使用 xpath 获取第 n 个最近的后代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19890870/

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