所以这是最近几天一直困扰我的问题。这应该相当容易,但是 XSLT 调试起来实在是太痛苦了。我们在 java 1.6 上使用 Xalan 1.0
输入 XML
<?xml version="1.0" encoding="UTF-8"?>
<rfb2>
<rfb2_item>
<VALDATE>2011-10-23</VALDATE>
<FUND_ID>300</FUND_ID>
<SEC_ID>34567</SEC_ID>
</rfb2_item>
<rfb2_item>
<VALDATE>2011-1-09</VALDATE>
<FUND_ID>700</FUND_ID>
<SEC_ID>13587</SEC_ID>
</rfb2_item>
<rfb2_item>
<VALDATE>2011-3-09</VALDATE>
<FUND_ID>200</FUND_ID>
<SEC_ID>999334</SEC_ID>
</rfb2_item>
<rfb2>
我们需要将 XML 转换为每个 rfb2_item 的逗号分隔值列表,因此样式表总是迭代 rfb2_item 节点。我们在样式表中使用一个参数来控制 rfb2_item (valdate,fund_id,sec_id) 的哪些元素将被输出,以及以什么顺序输出,例如
<xsl:param name="$outputElements" select="'VALDATE,FUND_ID'"/>
..outputs...
2011-10-23,300
2011-1-09,700
2011-3-09,200
<xsl:param name="$outputElements" select="'SEC_ID'"/>
..outputs...
34567
13587
999334
特殊情况,如果 $outputElements 为 '*',只需按照元素在输入 xml 中出现的顺序输出元素
<xsl:param name="$outputElements" select="'*'"/>
..outputs...
2011-10-23,300,34567
2011-1-09,700,13587
2011-3-09,200,999334
所以,我的问题是我们如何编写一个模板来根据 $outputElements 参数创建所需的输出?一个工作的例子会很棒......