Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml xslt问题_Xml_Vb.net_Xslt - Fatal编程技术网

Xml xslt问题

Xml xslt问题,xml,vb.net,xslt,Xml,Vb.net,Xslt,大家好,我有一个像bellow这样的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> <CT

大家好,我有一个像bellow这样的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>

5.
0048201515
2.
中国民航局
6.
5.
004820101
2.
中国民航局
6.
5.
004820101
2.
中国民航局
3.

在上面的xml中,每个表都必须集中
3
(包id)就像上面的例子一样,当谈到pkg id 6,6,3时,我们在xml中有三个表,6重复了两次,因为我将两个相似的表连接起来,作为一个csv文件,其余的pkg id为3,我们准备了单独的csv文件,所以我们需要编写xslt。如果需要,任何人都可以帮助我…尽快
n
需要运行转换的不同输出文件
n
次,每次使用所需的
值作为筛选参数

<?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>&#13;</xsl:text>
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>
作为你的结果

如果您设置
,您将收到

5;004820101;2;CACC;3
5;0048201515;2;CACC;6
5;004820101;2;CACC;6

有关如何使用.NET framework向Xslt提交参数的参考信息,请参阅。

如果您可以将预期输出添加到问题中,这将有所帮助。您最近问了很多Xslt问题,但这些问题的表述仍然很糟糕。请投入一些努力。输出如:50048201515,2,cacc,6 5004820101,2,cacc,6这些记录应生成为一个csv文件,一个记录的其余部分5004820101,2,cacc,3在另一个csv文件中,对于多个输出,您需要XSLT 2.0或XSLT处理器的一些扩展。否则你可以像@Filburt answer那样多次运行转换。。。我的目标是向xsl样式表发送一个参数值,它只不过是包idthen@filburt…我没有得到这个xslt的输出,你能解释一下吗briefly@praveen如果您没有得到任何输出,那么您的Xml与您在文章中提供的示例不同。请参阅我关于如何向xslt样式表提交参数值的更新答案。@filburt thnx获得了很多精确的结果。。但我正在努力解决如何在vb.net窗口中将变量传递给xslt的问题form@praveen您在我链接的MSDN引用上试用过VB.Net代码示例吗?@filburt…我试过了,但在xslt中,它说不能使用儿童评估。。!!!这是我们动态地将参数传递到xsl中的一个例子,如果我们进行热编码,但输入一个值意味着ex:select='6'意味着输出ws