使用node-set param过滤xml [英] Filter xml with node-set param

查看:56
本文介绍了使用node-set param过滤xml的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,



我试图从.net应用程序中过滤xml文件以生成另一个xml文件,但收效甚微。下面的xml示例,不是正确的xml,但类似:



Hi all,

I am attempting to filter an xml file from a .net application to produce another xml file, with little success. Sample xml below, not the proper xml, but similar:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Row A1="1" A2="AMS">
    <Name>Ashley</Name>
    <Team>Team B</Team>
    <Date>3/25/2012</Date>
    <Value>511681.15</Value>
</Row>
<Row A1="2" A2="AMS">
    <Name>Kylie</Name>
    <Team>Team A</Team>
    <Date>9/28/2010</Date>
    <Value>408438.47</Value>
</Row>
<Row A1="3" A2="AMS">
    <Name>Gianna</Name>
    <Team>Team B</Team>
    <Date>40004</Date>
    <Value>109709.22</Value>
</Row>





XSLT:



The XSLT:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" extension-element-prefixes="exsl" xmlns:msxsl="urn:schemas-microsoft-com:xslt">
<xsl:output method="xml" indent="yes" encoding="UTF-8" />
<xsl:decimal-format name="NN" NaN="0" />
<xsl:param name="Filter"  />
<xsl:template match="/">
    <Root>
        <xsl:for-each select="exsl:node-set($Filter)">
            <Row>
                <xsl:attribute name="A1">
                    <xsl:value-of select="@A1" />
                </xsl:attribute>
                <xsl:attribute name="A2">
                    <xsl:value-of select="@A2" />
                </xsl:attribute>
                <Team>
                    <xsl:value-of select="Team"/>
                </Team>
            </Row>
        </xsl:for-each>
    </Root>
</xsl:template>





我传递给参数的过滤器可以使用xml元素的任意组合。我目前正在测试的过滤器是



//排[Team ='Team B']



但这只会产生一个用空标签生成的xml文件,如下所示。





The filter I pass to the parameter could be using any combination of the xml elements. The filter I am testing with at the moment is

//Row[Team='Team B']

But this just results in an xml file being produced with empty tags, as below.

<?xml version="1.0" encoding="utf-8"?>
<Root>
<Row A1="" A2="">
<Team></Team>
</Row>
</Root>





我知道我必须使用节点 - 设置功能,但我在正确的地方使用它吗?任何指针或建议都赞赏。



谢谢



I know i have to use the node-set function, but am i using it in the correct place? Any pointers or suggestions appreciated.

Thanks

推荐答案

过滤器) >
< >
< xsl:attribute name = A1 >
< xsl:value-of select = @ A1 / >
< / xsl:attribute >
< xsl:attribute 名称 = A2 >
< xsl:value-of 选择 = @ A2 / >
< / xsl:attribute >
< 团队 >
< xsl:value-of < span class =code-attribute> select = 团队 / >
< /团队 >
< < span class =code-leadattribute> / Row >
< / xsl:for-each >
< / Root >
< / xsl:template >
Filter)"> <Row> <xsl:attribute name="A1"> <xsl:value-of select="@A1" /> </xsl:attribute> <xsl:attribute name="A2"> <xsl:value-of select="@A2" /> </xsl:attribute> <Team> <xsl:value-of select="Team"/> </Team> </Row> </xsl:for-each> </Root> </xsl:template>





我传递给参数的过滤器可以使用任何组合xml元素。我目前正在测试的过滤器是



//排[Team ='Team B']



但这只会产生一个用空标签生成的xml文件,如下所示。





The filter I pass to the parameter could be using any combination of the xml elements. The filter I am testing with at the moment is

//Row[Team='Team B']

But this just results in an xml file being produced with empty tags, as below.

<?xml version="1.0" encoding="utf-8"?>
<Root>
<Row A1="" A2="">
<Team></Team>
</Row>
</Root>





我知道我必须使用节点 - 设置功能,但我在正确的地方使用它吗?任何指针或建议都赞赏。



谢谢



I know i have to use the node-set function, but am i using it in the correct place? Any pointers or suggestions appreciated.

Thanks


这篇关于使用node-set param过滤xml的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆