gpt4 book ai didi

xslt - 测试节点中的第一个子节点

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

XML:

    <mode>
<submode>1</submode>
<submode>2</submode>
<submode>3</submode>
<submode>4</submode>
<submode>5</submode>
<submode>6</submode>
<submode>7</submode>
</mode>
<mode>
<submode>7</submode>
<submode>8</submode>
<submode>9</submode>
<submode>10</submode>
<submode>11</submode>
<submode>12</submode>
<submode>13</submode>
</mode>
<mode>
<submode>14</submode>
<submode>15</submode>
<submode>16</submode>
<submode>17</submode>
<submode>18</submode>
<submode>19</submode>
20</submode>
</mode>

如何先测试<submode>来自每个<mode> (我需要获取数字:1, 7, 14)在这样的构造中:

<xsl:template match="submode">
<xsl:if test="(parent::mode) and (...what?...)">
...
</xsl:if>
...
</xsl:template>

我不明白如何在这里使用position()。

最佳答案

这通常不属实

position() = 1

评估为true()如果当前节点有父模式并且当前节点是第一个submode其父级的子级。

position()指定当前节点列表的位置,这是以不同的方式定义的,具体取决于 select 的方式。 <xsl:apply-templates> 的属性已指定。

例如(假设提供的 XML 具有一个 top 元素,它是 mode 元素的父元素),如果在处理以下内容时选择了模板:

<xsl:apply-templates select="/*/mode/submode[. = 3]"/>

然后

position() = 1

仅适用于第三个submode第一个 child mode元素。

一个正确答案:

parent::mode and not(preceding-sibling::submode)

或者,推荐:

有一个单独的模板:

<xsl:template match="mode/submode[1]">

在这种情况下,模板中不需要任何代码来检查当前节点是否是第一个 submode child ——这已经是众所周知的了。

关于xslt - 测试节点中的第一个子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2698455/

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