Xml 反向结构位置XSLT
我想要一些技巧来完成反向结构:Xml 反向结构位置XSLT,xml,xslt,xml-parsing,Xml,Xslt,Xml Parsing,我想要一些技巧来完成反向结构: XML已编辑,太大,无法在此处发布 如下所示的输入有标题和正文,正文有事件列表,对象事件和聚合事件 输入XML: <Document> <Header /> <Body> <EventList> --> <ObjectEvent> --> <eventTime>2018-09-06T08:51:24Z</eventTime&
XML
已编辑,太大,无法在此处发布
如下所示的输入有标题
和正文
,正文
有事件列表
,对象事件
和聚合事件
输入XML:
<Document>
<Header />
<Body>
<EventList>
--> <ObjectEvent>
--> <eventTime>2018-09-06T08:51:24Z</eventTime>
--> </ObjectEvent>
<AggregationEvent>
<eventTime>2018-09-06T08:51:24Z</eventTime>
</AggregationEvent>
<AggregationEvent>
<eventTime>2018-09-06T08:51:24Z</eventTime>
</AggregationEvent>
<AggregationEvent>
<eventTime>2018-09-06T08:51:24Z</eventTime>
</AggregationEvent>
</EventList>
</Body>
</Document>
起始点XSLT
无需逻辑:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*" />
<xsl:apply-templates />
</xsl:copy>
</xsl:template>
<xsl:template match="//AggregationEvent">
<xsl:copy>
<xsl:apply-templates />
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
谢谢你的投入
请注意,您使用标识模板以正确的方式开始。不过,您应该在另一个模板上执行的操作是在父级
事件列表上进行匹配,然后按照您喜欢的顺序选择子节点
试试这个XSLT
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" />
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*" />
<xsl:apply-templates />
</xsl:copy>
</xsl:template>
<xsl:template match="EventList">
<xsl:copy>
<xsl:apply-templates select="AggregationEvent" />
<xsl:apply-templates select="ObjectEvent" />
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
如果您使用的是XSLT 3.0,您可以用以下内容替换标识模板
<xsl:mode on-no-match="shallow-copy"/>
…您当然也有一些XSLT要展示吗?我没有。我刚刚开始我在上面发布的东西。再次感谢蒂姆!它可以根据需要工作。亲切的问候。
<xsl:apply-templates select="AggregationEvent, ObjectEvent" />
<xsl:mode on-no-match="shallow-copy"/>