XSLT:如何在给定元素首次出现时进行匹配?

鲍比·杰克
<xsl:template match="//foo[1]">

匹配多个元素(所有<foo>没有先前<foo>同级的元素

<xsl:template match="(//foo)[1]">

是一个错误。

如何仅在文档中第一次出现元素时进行匹配?

这是输入文档的示例:

<test>
    <foo>1</foo>
    <another>
        <foo>2</foo>
    </another>
    <more>
        <bar>3</bar>
        <foo>4</foo>
    </more>
    <something>
        <foo>5</foo>
        <bar>6</bar>
        <foo>7</foo>
    </something>
    <final>
        <hum>8</hum>
        <foo>9</foo>
        <foo>10</foo>
    </final>
</test>

我的意图是使匹配foo文本,1不要匹配其他文本假定foo可以在文档中的任何地方发生

克休斯

为了仅匹配foo文档中的第一个匹配项,您必须检查既没有前面的foo元素又没有foo祖先:

<xsl:template match="foo[not(preceding::foo or ancestor::foo)]">

考虑以下样本输入XML:

<r>
  <a/>
  <foo>
    <b/>
    <foo/>
  </foo>
  <foo>
    <foo/>
  </foo>
  <c/>
</r>

这个XSLT,

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

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

  <xsl:template match="foo[not(preceding::foo or ancestor::foo)]">
    <FirstFoo>
      <xsl:apply-templates/>
    </FirstFoo>
  </xsl:template>

  <xsl:template match="foo">
    <LaterFoo>
      <xsl:apply-templates/>
    </LaterFoo>
  </xsl:template>

</xsl:stylesheet>

将输出此XML,

<?xml version="1.0" encoding="UTF-8"?>
<r>
  <a/>
  <FirstFoo>
      <b/>
      <LaterFoo/>
  </FirstFoo>
  <LaterFoo>
      <LaterFoo/>
  </LaterFoo>
  <c/>
</r>

但是,如果仅检查前一个轴,则将输出以下XML:

<?xml version="1.0" encoding="UTF-8"?>
<r>
  <a/>
  <FirstFoo>
      <b/>
      <FirstFoo/>
  </FirstFoo>
  <LaterFoo>
      <LaterFoo/>
  </LaterFoo>
  <c/>
</r>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在UICollectionView的首次出现时更改UICollectionViewCell元素的大小

如何使正则表达式模式变得懒惰,或者如何在首次出现时停止匹配?

如何在给定的 html 元素中使用 xpath 进行搜索?

如何在给定用户定义的顺序的 XSLT 中排序

如何在元素出现时触发 javascript 函数

如何在给定索引处覆盖数组中的元素?

如何在给定索引处修改List元素

ZGrep用于模式的首次出现*在给定的行之后

如果在给定序列中多次出现任何模式,如何使用正则表达式进行匹配

在给定字符的第n次出现时分割字符串

如何在给定特征的枚举的关联方法上匹配Self

如何在给定的字符串中找到多次出现的空格字符?

如何在给定的地方画圆圈?

如何在给定鼠标坐标的情况下检测重叠(旋转)的DOM元素?

如何在给定集中选择第n个元素

如何在给定 MongoDB 中的元素位置的情况下提取数组的切片?

如何在给定条件下选择两个数组的元素?

如何在给定的字符串中打印以下元素?

如何在给定组的适当位置对熊猫中的行进行排序?

如何在给定的不规则日期上对时间序列进行重新采样

如何在给定未知格式字符串的情况下对数组进行sprintf?

如何在给定查询中使用内部联接并对其进行优化?

R:如何在给定的误差容限下按实数值列进行汇总

如何在给定的data.frame中进行自定义数字格式转换?

如何在给定列值的情况下对列进行分组和排序

如何在给定间隔值的间隔内进行随机采样?

如何匹配直到首次出现图案?

在给定字符串首次出现之前/之后删除所有内容

php令牌仅在首次出现时