Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.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
Xslt 按ID进行的每个排除的XSL_Xslt - Fatal编程技术网

Xslt 按ID进行的每个排除的XSL

Xslt 按ID进行的每个排除的XSL,xslt,Xslt,我有一个XSL问题。 使用以下代码,我排除了Box1 <xsl:for-each select="//box[@id!='box1']"> 但我还想排除第7框。 这有可能吗?我该怎么做呢?您可以将这些谓词放在一起: <xsl:for-each select="//box[@id!='box1'][@id!='box7']"> 使用: //box[not(@id='box1') and not(@id='box2')] 如果要排除多个ID,请使用(在本例中,我排

我有一个XSL问题。 使用以下代码,我排除了Box1

<xsl:for-each select="//box[@id!='box1']">

但我还想排除第7框。
这有可能吗?我该怎么做呢?

您可以将这些谓词放在一起:

<xsl:for-each select="//box[@id!='box1'][@id!='box7']">

使用

//box[not(@id='box1') and not(@id='box2')]
如果要排除多个ID,请使用(在本例中,我排除了“box1”-“box4”):


在本例中,相同的属性,我将使用
运算符。@Alejandro:我倾向于使用多个谓词,这看起来更清楚。如果有任何关于这方面的编码标准(以及一般的xsl),那就太好了:)好问题,+1。有关两个单行XPath解决方案,请参见我的答案,第二个显示如何轻松排除多个节点。:)@Dimitre:在这种情况下,如果选择的
@id
属性不能超过一个,则
属性将=运算符就足够了。当然,在其他情况下可能不是这样。@Alejandro:是的,我知道。是的,我不建议使用
=即使在这种情况下也不要使用
=(可能只有在特殊情况下,它可能会给你一些表达上的优势),因此永远不会有令人讨厌的问题。@Dimitre:你能进一步解释一下为什么你从不使用
=
?@Alejandro:嗯,直观的表达式(@id!=('box1','box7')肯定是错误的-如果@id是ne-box1或ne-box7,那么它总是正确的。@lwburk:如果你有一个变量
$nums
包含一个节点集:
123
,并且你比较
'1'!=$nums
,结果为
true()
。比较
'1'=$nums
的结果也是
true()。这是人们需要避免的反常现象。在调试代码时发现这一事实是非常尴尬的。
//box[not(contains('|box1|box2|box3|box4|', concat('|', @id, '|'))]