我对xslt感到沮丧,并且有一个问题,我似乎无法找到答案。我将转换应用于xml文件,然后使用fo将其输出到.pdf。输入文件(xml)来自计费系统,我们希望将其输出为可作为账单邮寄给客户的pdf。我正在使用xslt 1.0,而fop正在生成pdf。我无法将来自2个不同父母(CHARGES和OTHER_CHARGES)的类似命名的节点(TAX)分组。这里有一个例子:
(输入文件)对来自不同父母的XML节点进行分组
<BILL>
<CHARGES PARENT_ID="123456" CUSTOMER="MR. JONES">
<CHARGE NAME="CHARGE1" AMOUNT="10000">
<TAXES>
<TAX NAME="FEDERAL" AMOUNT="200"/>
<TAX NAME="STATE" AMOUNT="50">
</TAXES>
</CHARGE>
</CHARGES>
<OTHER_CHARGES PARENT_ID="123456" CUSTOMER="MR_JONES">
<OTHER_CHARGE NAME="OTHER_CHARGE1">
<TAXES>
<TAX NAME="FEDERAL" AMOUNT="150"/>
</TAXES>
</OTHER_CHARGE>
</OTHER_CHARGES>
</BILL>
我要为项目总税收结算,使PDF输出看起来像这样
税
联邦 - $ 350
州 - $ 50
虽然来自不同的节点,但总税款按名称和总计分组。我对键和分组的理解有限,但我似乎无法找到一个能够轻松转换我脑中的开关的神奇例子。
您可以发布您目前使用的xslt吗? TAX元素的NAME属性是否受限于一组较小的值? – Chris 2011-03-07 16:01:38
那么为什么分组?你只需要'sum(*/*/TAXES/TAX [@NAME ='FEDERAL']/@ AMOUNT)'和sum(*/*/TAXES/TAX [@NAME ='STATE']/@ AMOUNT)' 。什么应该分组? – Flack 2011-03-07 16:04:45
@Fack - 这个例子被简化了,所以可能不止FEDERAL或STATE。可能会有一些我们从未听说过的税收。这就是为什么我试图将所有名为tax的节点组合在一起。如果我知道所有可能适用的不同税种,那么我会乐意尝试不分组。 – theUncannyValley 2011-03-07 16:10:35