【问题标题】:XSLT 2.0 skip all elements except oneXSLT 2.0 跳过除一个之外的所有元素
【发布时间】:2016-11-17 12:21:44
【问题描述】:

我有一些元素的请求,其结构如下:

<Request>
      <Other>
      ...
      </Other>
      <Qualifiers>
         <Options>
            <Segment Number="1"/>
         </Options> 
         <Offer>
            <Column ColumnNumber="2.1"/>
            <Record Number="2"/>
         </Offer>
         <Offer>
            <Column ColumnNumber="1.1"/>
            <Column EndColumnNumber="4.1" ColumnNumber="3.1"/>
            <Record Number="1"/>
         </Offer>
         <Offer>
            <Column ColumnNumber="5.1"/>
            <Record Number="3"/>
         </Offer>
         <Fare>
            <Basis>ABCDE</Basis>
         </Fare>
      </Qualifiers>
      <Other>
      ...
      </Other>
</Request>

从这个有效负载中,我需要在每次调用中使用单个 Offer 元素执行 3 个单独的请求。请求的其余部分应该被复制而不做任何更改,所以对于第一个 Offer,我的请求应该如下所示:

<Request>
      <Other>
      ...
      </Other>
      <Qualifiers>
         <Options>
            <Segment Number="1"/>
         </Options>
         <Offer>
            <Column ColumnNumber="2.1"/>
            <Record Number="2"/>
         </Offer>
         <Fare>
            <Basis>ABCDE</Basis>
         </Fare>
      </Qualifiers>
      <Other>
      ...
      </Other>
</Request>

第二个和第三个类比与第二个和第三个提议元素。

我使用 Camel,所以我尝试将其循环提供给 XSLT 参数,该参数是应该留下的元素的索引。所以,我尝试了:

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

<xsl:template match="/Request/Qualifiers/Offer[not($MY_IDX)]"/>

其中$MY_IDX 提供索引。经过一番搜索,我意识到它不起作用,因为not() 函数只接受并返回布尔值。 还有其他方法可以归档我的目标吗?

【问题讨论】:

    标签: xml xslt


    【解决方案1】:

    代替

    <xsl:template match="/Request/Qualifiers/Offer[not($MY_IDX)]"/>
    

    使用

    <xsl:template match="/Request/Qualifiers/Offer[position() != $MY_IDX]" />
    

    这会抑制除Offer 之外的所有位置,其位置由$MY_IDX 给出。

    【讨论】:

    • 谢谢!完美运行
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-05
    • 1970-01-01
    • 1970-01-01
    • 2010-09-15
    • 2017-11-20
    相关资源
    最近更新 更多