95 votes

XPath pour trouver les éléments qui n'ont pas d'id ou de classe

Comment puis-je obtenir tous les éléments tr sans attribut id ?

<tr id="name">...</tr>
<tr>...</tr>
<tr>...</tr>

Merci

158voto

Welbog Points 32952

C'est assez simple :

//tr[not(@id) and not(@class)]

Cela vous donnera tout tr les éléments manquant à la fois id y class attributs. Si vous voulez que tous les tr en l'absence de l'un des deux éléments, utilisez or au lieu de and :

//tr[not(@id) or not(@class)]

Lorsque des attributs et des éléments sont utilisés de cette manière, si l'attribut ou l'élément a une valeur, elle est traitée comme si elle était vraie. S'il n'en a pas, il est traité comme s'il était faux.

26voto

miphe Points 206

Si vous cherchez un élément qui a classe a mais n'a pas avoir des cours b vous pouvez faire ce qui suit.

//*[contains(@class, 'a') and not(contains(@class, 'b'))]

Ou si vous voulez être sûr de ne pas avoir de correspondance partielle.

//*[contains(concat(' ', normalize-space(@class), ' '), ' some-class ') and 
not(contains(concat(' ', normalize-space(@class), ' '), ' another-class '))]

10voto

vtd-xml-author Points 891

Pouvez-vous essayer //tr[not(@id)]?

-4voto

Om Prakash Points 404
if (elm.hasAttribute('id')) { 
//if id - implement here
    } else if (elm.hasAttribute('class')) { 
        //if class - implement here
    } else { 
        for (i = 1, sib = elm.previousSibling; sib; sib = sib.previousSibling) { 
            if (sib.localName == elm.localName)
                i++;
        }; 
        segs.unshift(elm.localName.toLowerCase() + '[' + i + ']'); 
    }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X