我没有创建xslt转换器的经验。请有人可以帮助我转换波纹管xml吗?
<Top>
<cod>a<cod>
<types>
<type>
<start>2018-05-24</start>
<end>2019-01-24</end>
<empl>Ext</empl>
<type>
<type>
<start>2019-01-25</start>
<end>9999-12-31</end>
<empl>Int</empl>
<type>
</types>
<lent>10</lent>
<tree>asd</tree>
</Top>
我需要对其进行转换以仅获取最新的empl类型;
<Top>
<cod>a<cod>
<empl>Int</empl>
<lent>10</lent>
<tree>asd</tree>
</Top>
答案 0 :(得分:0)
首先,请确保您的XML是格式正确的,如下所示:
<Top>
<cod>a</cod>
<types>
<type>
<start>2018-05-24</start>
<end>2019-01-24</end>
<empl>Ext</empl>
</type>
<type>
<start>2019-01-25</start>
<end>9999-12-31</end>
<empl>Int</empl>
</type>
</types>
<lent>10</lent>
<tree>asd</tree>
</Top>
然后将 identity模板与copy-of
模板简单组合:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/>
<!-- Remove unnecessary space -->
<xsl:strip-space elements="*" />
<!-- identity template - copies all nodes -->
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*" />
</xsl:copy>
</xsl:template>
<!-- Remove 'types' element and its children except for one 'empl' node -->
<xsl:template match="types">
<xsl:copy-of select="type[2]/empl" />
</xsl:template>
</xsl:stylesheet>
如果要复制两个<empl>
元素,请从表达式中删除[2]
。
其输出为:
<Top>
<cod>a</cod>
<empl>Int</empl>
<lent>10</lent>
<tree>asd</tree>
</Top>