For-Each Select 子句 XSL 中的大于条件

用户1660680

我试图在价格大于 100 或小于 50 时设置它应该输出的条件,但是在以下条件下,我将输出所有结果。

<xsl:for-each select=".//G_1/Product[.//PRICE >'100' or .//PRICE <'50' ]"><?PRICE?></xsl:for-each>

XML

<?xml version="1.0" encoding="UTF-8" ?>
<DATA_DS>
    <G_1>
        <Product>
            <OBJECT_ACTION_ID>79071819</OBJECT_ACTION_ID>
            <Details>
                <ID>170057541</ID>
                <NAME>ITEM NAME</NAME>
            </Details>
            <Rec>
                <Rec1>
                    <Rec_Detail>
                        <C_Product_ID>300000155370949</C_Product_ID>
                        <PRICE>200</PRICE>
                    </Rec_Detail>
                </Rec1>
            </Rec>
        </Product>
        <Product>
            <OBJECT_ACTION_ID>79071820</OBJECT_ACTION_ID>
            <Details>
                <ID>170057542</ID>
                <NAME>ITEM NAME2</NAME>
            </Details>
            <Rec>
                <Rec1>
                    <Rec_Detail>
                        <C_Product_ID>300000155370950</C_Product_ID>
                        <PRICE>90</PRICE>
                    </Rec_Detail>
                </Rec1>
            </Rec>
        </Product>
    </G_1>
</DATA_DS>
zx485

是的。您的输出可能是正确的(如“您要求的”)。在您的表达式中,您使用.//轴作为所有条件的前缀。但是你最好只在谓词中使用它们。看看XPath 中 .// 和 //* 之间的区别是什么?.

因此,为了使您的 XSLT/XPath 可能工作,请将其更改为

<xsl:for-each select="//G_1/Product[.//PRICE > 100 or 50 > .//PRICE]">YOUR OUTPUT</xsl:for-each>

这将匹配-和迭代过所有比赛-如果任何PRICE任何的后代G_1/Product元件具有低于50或高于100我改变谓词(之间的条件的值[,并]以非显而易见的方式,以避免的使用)<字符,因为它在谓词表达式中无效。因此,我改变了PRICE < 5050 > PRICE-这一切,没有什么特别的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章