我是XSLT的初学者,用于将XML转换为XML。XSLT找到最低价格
我需要得到Prices
标签,它的总和最低。
源XML:
<Result>
<Fares>
<Fare>
<Prices>
<Price type="adt" ticket="15"/>
<Price type="chd" ticket="10"/>
<Price type="inf" ticket="10"/>
<Prices>
</Fare>
<Fare>
<Prices>
<Price type="adt" ticket="10"/>
<Price type="chd" ticket="10"/>
<Price type="inf" ticket="10"/>
<Prices>
</Fare>
<Fare>
<Prices>
<Price type="adt" ticket="5"/>
<Price type="chd" ticket="5"/>
<Price type="inf" ticket="5"/>
<Prices>
</Fare>
<Fare>
<Prices>
<Price type="adt" ticket="10"/>
<Price type="chd" ticket="5"/>
<Price type="inf" ticket="5"/>
<Prices>
</Fare>
</Fares>
</Result>
XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes" />
<xsl:template match="Result">
<xsl:element name="Lowest">
<xsl:variable name="lowest" select="Fares/Fare/Prices[not(sum(Price/@ticket) > //Fares/Fare/Prices[sum(Price/@ticket)])]"/>
<xsl:copy-of select="$lowest"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
输出:
<Lowest>
<Prices>
<Price type="adt" ticket="15"/>
<Price type="chd" ticket="10"/>
<Price type="inf" ticket="10"/>
<Prices/>
</Prices>
</Lowest>
例pected输出:
<Lowest>
<Prices Total="15">
<Price type="adt" ticket="5"/>
<Price type="chd" ticket="5"/>
<Price type="inf" ticket="5"/>
<Prices>
</Lowest>
如上所示输出应具有Prices
标签具有最低值作为属性也。
请帮忙。
嗨,你可以分享你的XSLT代码..?你有什么尝试? –
您确定您所展示的XSLT实际上给出了您所说的输出吗?对我来说,使用撒克逊6.5.5,它会给出不同的输出:它输出所有四个元素及其后代。 – LarsH
@LarsH - 我使用java将XML转换为XML,并且引擎是JAXP(默认值为1)。 –