我是 XSLT 的初学者并使用将 XML 转换为 XML。
我需要得到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>
预期输出:
<Lowest>
<Prices Total="15">
<Price type="adt" ticket="5"/>
<Price type="chd" ticket="5"/>
<Price type="inf" ticket="5"/>
<Prices>
</Lowest>
如上所示,输出也应该具有Prices
最低值的标签作为属性。
请帮忙。