Maison >développement back-end >tutoriel php >Comment puis-je sélectionner avec précision les classes CSS à l'aide de XPath ?

Comment puis-je sélectionner avec précision les classes CSS à l'aide de XPath ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-06 04:35:11751parcourir

How Can I Accurately Select CSS Classes Using XPath?

Sélection de classes CSS avec XPath : un guide complet

Le défi

La sélection de classes CSS avec XPath pose un défi unique car XPath n'a pas d'équivalent natif au sélecteur de classe CSS. Cet article explore les subtilités de ce problème et propose une solution efficace.

La mauvaise méthode : la classe égale à

Les sélecteurs XPath utilisant //*[@class="foo"] ne parviennent pas à sélectionner éléments avec plusieurs classes ou espaces autour du nom de la classe.

La mauvaise façon : la classe contient

Sélecteurs comme //*[contains (@class, "foo")] fait correspondre les éléments avec des classes telles que foobar, ce qui est incorrect.

La bonne façon : normaliser l'espace et contient

Pour sélectionner des éléments avec des classes spécifiques avec précision, XPath utilise le sélecteur suivant :

//*[contains(concat(" ", normalize-space(@class), " "), " foo ")]
  • normalize-space() supprime le début et la fin whitespace.
  • concat() ajoute un espace avant et après la valeur de l'attribut de classe.
  • contains() vérifie si la chaîne concaténée inclut la classe cible.

Équivalence et implications supplémentaires

Le sélecteur XPath fourni est équivalent au sélecteur CSS *[class~="foo"], qui fait correspondre les éléments avec les classes qui contiennent la classe cible. Comprendre ces nuances est crucial pour la maîtrise de XPath.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn