删除父节点依赖于使用xslt的子节点

时间:2015-06-15 07:50:08

标签: xml xslt

我正在寻找一个模板,根据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的新手,任何帮助都会受到高度赞赏。

提前感谢。

1 个答案:

答案 0 :(得分:0)

  

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

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

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>