使用node-set param过滤xml [英] Filter xml with node-set param
问题描述
大家好,
我试图从.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屋!