【问题标题】:removing a parent node dependig upon child node using xslt使用 xslt 删除依赖于子节点的父节点
【发布时间】:2015-06-15 07:50:07
【问题描述】:

我正在寻找一个模板,根据 chid 节点的值从 xml 中删除阳极,基本上我有一个类似的 xml:

<EventInfo>
    <AssignmentEvent>
        <CreateDateTime>2015-06-02T00:00:00+02:00</CreateDateTime>
    </AssignmentEvent>
    <EstimateEvent>
        <CreateDateTime>2015-06-02T07:38:28.0000000Z</CreateDateTime>
        <CommitDateTime>2015-06-04T14:29:38.0000000Z</CommitDateTime>
        <UploadDateTime>2015-06-04T14:29:39.7651796Z</UploadDateTime>
    </EstimateEvent>
    <OtherEvent>
        <OtherEventType>CalculatedDateTime</OtherEventType>
        <OtherEventDateTime>2015-06-04T14:29:12.0000000Z</OtherEventDateTime>
    </OtherEvent>
    <OtherEvent>
        <OtherEventType>RateDate</OtherEventType>
        <OtherEventDateTime>2015-06-01T00:00:00.0000000Z</OtherEventDateTime>
    </OtherEvent>
    <OtherEvent>
        <OtherEventType>OriginalCommitDateTime</OtherEventType>
        <OtherEventDateTime>2015-06-02T07:42:16.000Z</OtherEventDateTime>
    </OtherEvent>
</EventInfo>

我想要一个 xslt 模板,它可以删除其他事件节点以及其他事件类型值为 OriginalCommitDateTime 的子节点。

生成的 xml 会是这样的

<EventInfo>
    <AssignmentEvent>
        <CreateDateTime>2015-06-02T00:00:00+02:00</CreateDateTime>
    </AssignmentEvent>
    <EstimateEvent>
        <CreateDateTime>2015-06-02T07:38:28.0000000Z</CreateDateTime>
        <CommitDateTime>2015-06-04T14:29:38.0000000Z</CommitDateTime>
        <UploadDateTime>2015-06-04T14:29:39.7651796Z</UploadDateTime>
    </EstimateEvent>
    <OtherEvent>
        <OtherEventType>CalculatedDateTime</OtherEventType>
        <OtherEventDateTime>2015-06-04T14:29:12.0000000Z</OtherEventDateTime>
    </OtherEvent>
    <OtherEvent>
        <OtherEventType>RateDate</OtherEventType>
        <OtherEventDateTime>2015-06-01T00:00:00.0000000Z</OtherEventDateTime>
    </OtherEvent>
</EventInfo>

我是 xslt 的新手,任何帮助将不胜感激。

提前致谢。

【问题讨论】:

    标签: xml xslt


    【解决方案1】:

    我想要一个删除另一个事件节点的 xslt 模板 其他事件类型值为 OriginalCommitDateTime 的子节点。

    排除特定节点的标准方法是从identity transform模板开始复制所有节点作为规则,然后添加一个与要排除的节点匹配的空模板作为例外:

    XSLT 1.0

    <xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
    <xsl:strip-space elements="*"/>
    
    <!-- identity transform -->
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>
    
    <xsl:template match="OtherEvent[OtherEventType='OriginalCommitDateTime']"/>
    
    </xsl:stylesheet>
    

    【讨论】:

      猜你喜欢
      • 2022-09-23
      • 2017-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-04
      相关资源
      最近更新 更多