大家好,我有一个xml,就像下面这样。
<NewDataSet>
<Table>
<CTD_REC_TYPE_ID>5</CTD_REC_TYPE_ID>
<CTD_BEN_INS_ID>0048201515</CTD_BEN_INS_ID>
<CTD_CURR_CODE>2</CTD_CURR_CODE>
<CTD_ORD_CUST_ACT>CACC</CTD_ORD_CUST_ACT>
<CTD_CTD_PKG_ID>6</CTD_CTD_PKG_ID>
</Table>
<Table>
<CTD_REC_TYPE_ID>5</CTD_REC_TYPE_ID>
<CTD_BEN_INS_ID>004820101</CTD_BEN_INS_ID>
<CTD_CURR_CODE>2</CTD_CURR_CODE>
<CTD_ORD_CUST_ACT>CACC</CTD_ORD_CUST_ACT>
<CTD_CTD_PKG_ID>6</CTD_CTD_PKG_ID>
</Table>
<Table>
<CTD_REC_TYPE_ID>5</CTD_REC_TYPE_ID>
<CTD_BEN_INS_ID>004820101</CTD_BEN_INS_ID>
<CTD_CURR_CODE>2</CTD_CURR_CODE>
<CTD_ORD_CUST_ACT>CACC</CTD_ORD_CUST_ACT>
<CTD_CTD_PKG_ID>3</CTD_CTD_PKG_ID>
</Table>
</NewDataSet>在上面xml中,每个表都必须集中<CTD_CTD_PKG_ID>3</CTD_CTD_PKG_ID> (包id ),就像上面的例子一样,我们在xml中有三个表,当谈到pkg id 6,6,3时,6重复了两次,因为我已经连接了两个相似的表,并将其作为一个csv文件,其余的pkg id为3。我们已经准备了单独的csv文件,所以我们需要编写xslt,有人能帮我写....asap吗
发布于 2011-03-07 20:12:45
如果您需要过滤不同的输出文件,您将需要运行您的转换n次数,每次使用所需的<CTD_CTD_PKG_ID>值作为过滤器参数。
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" indent="no" omit-xml-declaration="yes" />
<!-- sample value hardcoded here for demonstration -->
<xsl:param name="filterid" select="3" />
<!--
for implementation just declare param
<xsl:param name="filterid" />
-->
<xsl:template match="/">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="NewDataSet">
<xsl:for-each select="Table[CTD_CTD_PKG_ID = $filterid]">
<xsl:text/><xsl:value-of select="./CTD_REC_TYPE_ID"/>;<xsl:text/>
<xsl:text/><xsl:value-of select="./CTD_BEN_INS_ID"/>;<xsl:text/>
<xsl:text/><xsl:value-of select="./CTD_CURR_CODE"/>;<xsl:text/>
<xsl:text/><xsl:value-of select="./CTD_ORD_CUST_ACT"/>;<xsl:text/>
<xsl:text/><xsl:value-of select="./CTD_CTD_PKG_ID"/><xsl:text/>
<xsl:text> </xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>如何传递filterid的参数值取决于所使用的转换引擎。
如果对示例Xml数据使用此Xslt,您将收到
5;004820101;2;CACC;3作为你的结果。
如果您设置了<xsl:param name="filterid" select="6" />,您将收到
5;0048201515;2;CACC;6
5;004820101;2;CACC;6有关如何使用.NET框架向XslCompiledTransform.Transform with XsltArgumentList提交参数的参考信息,请参阅Xslt。
https://stackoverflow.com/questions/5219206
复制相似问题