If statement XSLT/Xpath:如何找出某物是或不是´;t在钥匙上(带if)?

If statement XSLT/Xpath:如何找出某物是或不是´;t在钥匙上(带if)?,if-statement,xslt,xpath,xslt-2.0,xpath-2.0,If Statement,Xslt,Xpath,Xslt 2.0,Xpath 2.0,我在XSLT和if中的代码有问题。我正在使用键函数,在那里我会找出键中是否有东西 <xsl:key name="hlp" match="help" use="@id" /> ... <xsl:if test="key('hlp', @some_id) !=''"> ... </xsl:if> ... ... 这是正确的,它给了我我想要的,但我如何才能使@some_id不在关键hlp中的相反条件。。。我的意思是:

我在XSLT和if中的代码有问题。我正在使用键函数,在那里我会找出键中是否有东西

    <xsl:key name="hlp" match="help" use="@id" />
    ...
    <xsl:if test="key('hlp', @some_id) !=''">
    ...
    </xsl:if>

...
...
这是正确的,它给了我我想要的,但我如何才能使@some_id不在关键hlp中的相反条件。。。我的意思是:

    <xsl:if test="key('hlp', @some_id) <!--is equal--> ''">
    ...
    </xsl:if>
    <xsl:if test="key('hlp', @some_id) <!--is equal--> ''">
    ...
    </xsl:if> ```

Is there something like that in XSLT/XPath?
调用
键('x','y')
时,结果是一组节点,其中键等于
'y'
。可以使用empty()函数(在XSLT 2.0中)或XSLT 1.0中的not()函数测试节点集是否为空:

<xsl:if test="not(key('x', 'y'))" version="1.0">...</xsl:if>
<xsl:if test="empty(key('x', 'y'))" version="2.0">...</xsl:if>
。。。
...
或者对于反向测试(测试是否发现了某些东西):

。。。
...
通过将结果与字符串进行比较进行测试是错误的。测试
键('x','y')='
键('x','y')!=''key()
函数的结果为空节点集,则code>将返回false;相反,如果
key()
函数选择两个节点,一个有内容,另一个没有内容,则两个测试都将返回true

但我如何才能做出相反的条件,即@some_id不在键中 hlp。。。我的意思是:

    <xsl:if test="key('hlp', @some_id) <!--is equal--> ''">
    ...
    </xsl:if>
    <xsl:if test="key('hlp', @some_id) <!--is equal--> ''">
    ...
    </xsl:if> ```

Is there something like that in XSLT/XPath?

什么是“钥匙里有东西还是钥匙里没有东西”呢?处于关键或不关键是一个音乐术语,而不是XSLT术语。请提供一个更好的解释你的问题,最好与你的条件是真实和错误的例子。与已知条件相反的是
而不是($condition)
。注意
x!=y
非(x=y)
    <xsl:if test="key('hlp', @some_id) <!--is equal--> ''">
    ...
    </xsl:if> ```

Is there something like that in XSLT/XPath?
<xsl:apply-templates select="/*[not(key('hlp', @some_id))]" mode="not-found"/>