【发布时间】:2017-11-26 19:08:14
【问题描述】:
我需要通过删除或处理一个块来将这个 XMl 转换为另一个,同时按照所需的输出格式化这个块,我一直不知道如何进行这种格式化
<?xml version="1.0" encoding="ISO-8859-1" ?>
<output>
<cars>
<car>
<id>1</id>
<brand>Audi</brand>
<type>A3</type>
<license>B-01-TST</license>
</car>
<car>
<id>2</id>
<brand>Volkwagen</brand>
<type>Golf</type>
<license>IF-02-TST</license>
</car>
</cars>
<distances>
<distance>
<id_car>1</id_car>
<date>20110901</date>
<distance>111</distance>
</distance>
<distance>
<id_car>1</id_car>
<date>20110902</date>
<distance>23</distance>
</distance>
<id_car>2</id_car>
<date>20110901</date>
<distance>92</distance>
</distance>
<distance>
<id_car>2</id_car>
<date>20110902</date>
<distance>87</distance>
</distance>
</distances>
</output>
进入这个输出:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<output>
<cars>
<car>
<id>1</id>
<brand>Audi</brand>
<type>A3</type>
<license>B-01-TST</license>
<distances>
<distance day="20110901">111</distance>
<distance day="20110902">23</distance>
</distances>
</car>
<car>
<id>2</id>
<brand>Volkwagen</brand>
<type>Golf</type>
<license>IF-02-TST</license>
<distances>
<distance day="20110901">92</distance>
<distance day="20110902">87</distance>
</distances>
</car>
</cars>
</output>
到目前为止,我只能删除距离块并将其添加到正确的位置,但是如何获取按 car/id 组织的距离并将日期标签作为属性日添加到距离中? 这是我到目前为止所做的:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@* |node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="distances" />
<xsl:template match="license">
<xsl:copy-of select="."/>
<distances></distances>
</xsl:template>
</xsl:stylesheet>
【问题讨论】:
标签: xslt xslt-1.0 xslt-2.0 xsl-fo