我试图在价格大于 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>
是的。您的输出可能是正确的(如“您要求的”)。在您的表达式中,您使用.//
轴作为所有条件的前缀。但是你最好只在谓词中使用它们。看看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 < 50
对50 > PRICE
-这一切,没有什么特别的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句