如果前一个兄弟具有特定名称,则匹配该节点

时间:2017-05-26 08:17:51

标签: xml xpath xslt-1.0

当且仅当前一个节点具有特定名称时,我想选择一个节点。对于给定的xml我想与c节点匹配,如果它上面的节点名称为“a”

XML

    <root>
    <a name="ABC"\>
    <b\>
    <b name="ABC"\>
    <c\>        
    <root\>

XSLT

<xsl match ="c and preceding::sibling[a][1]">

它匹配具有名称'a'的前一个兄弟节点的节点'c'。我希望它只有在'c'上方的节点为'a'时才匹配。

我对XSLT很新,可能会以错误的方式感知事物。谢谢。

1 个答案:

答案 0 :(得分:1)

仅当c的前一个兄弟是a时才匹配match="c[name(preceding-sibling::*[1])='a']" ,您可以使用:

match="c[preceding-sibling::*[1][self::a]]"

或:

import threading

class beeper(threading.Thread):
    def run(self):
        self.keeprunning = True
        while self.keeprunning:
            winsound.Beep(freq, dur) // make a short dur to make sure it stops soon after printing ends
beep =  beeper()
beep.start()
printf(string)
beep.keeprunning = False