Disons que j'ai un document html complet en entrée XML.
A quoi ressemblerait le fichier XSLT si je voulais seulement sortir la première (ou toute) image du code HTML?XSLT Obtenir la première occurrence d'un tag spécifique
Répondre
Une expression XPath qui sélectionne le premier élément <img>
dans un document est:
(//img)[1]
Prenez note que une erreur fréquente - rendu par @Oded
dans sa réponse est à suggérer l'expression XPath suivante - en général, il peut sélectionner plus d'un élément:
//img[1]
(: MAUVAIS !!! :)
Ceci sélectionne tous les éléments <img>
dans le document, dont chacun est le premier <img>
enfant de son parent.
Voici l'explication exacte de cette erreur fréquente - dans le W3C XPath 1.0 Recommendation:
NOTE: Le chemin d'accès //para[1]
ne signifie pas la même chose que le chemin d'accès /descendant::para[1]
. Ce dernier sélectionne le premier élément descendant para
; le premier sélectionne tous les éléments descendants para
qui sont les premiers enfants para de leurs parents.
Un autre problème existe si le document a défini un espace de noms par défaut, ce qui doit être le cas avec XHTML. XPath traite n'importe quel nom non préfixé comme appartenant à aucun espace de noms et l'expression (//img)[1]
sélectionne aucun noeud, car aucun élément dans le document qui appartient à aucun espace de noms et a le nom img
.
Dans ce cas, il y a deux façons de spécifier la recherché l'expression XPath:
(//x:img)[1]
- où le préfixex
est associé (par la langue d'hébergement) avec le namespcae par défaut spécifique (dans ce cas, ce est l'espace de noms XHTML ).(//*[name()='img'])[1]
L'expression XPath récupérera la première image d'une page HTML: (//img)[1]
. Voir la réponse @Dimitre Novatchev
pour plus d'informations sur les problèmes avec elle.
Voir ma réponse pour une explication du problème avec votre réponse. Lisez la spécification XPath - la définition de l'abréviation '//' et recherchez cette erreur fréquente.Si le problème n'est toujours pas clair, posez une question distincte et beaucoup de gens seront heureux de vous expliquer. :) –
** Cette réponse est W R O N G ** !!!!! Voir ma réponse pour l'explication. –
Je ne veux définitivement pas lire la spécification XPath. Mais je vois ce que dit Dimitre. Le '// img [1]' sélectionnera le premier tag img de * any * parent plutôt que le premier du document. –
- 1. XSLT: supprimer tous, mais la première occurrence d'un noeud donné
- 2. php obtient seulement la première occurrence d'un mot d'un tableau
- 3. android Lier la première occurrence seulement
- 4. xslt retour de la colonne première occurance
- 5. strstr correspondant à la première occurrence de c
- 6. supprimer de la chaîne première occurrence de caractère donné
- 7. boost :: regex_replace() ne remplace que la première occurrence, pourquoi?
- 8. Si setMnemonic souligne un caractère autre que la première occurrence
- 9. Trouver tout sauf la première occurrence d'un caractère avec REGEX
- 10. XSLT obtenir dernier élément
- 11. Grouper par première occurrence de champ Comment puis-je obtenir le dernier?
- 12. C#: "Une exception de première occurrence de type 'System.InvalidOperationException'"
- 13. Y at-il une fonction .NET pour supprimer la première occurrence (et seulement la première) au début d'une chaîne?
- 14. Existe-t-il une façon plus simple d'obtenir la première occurrence de quelque chose?
- 15. mysql: sous-chaîne qui renvoie la première occurrence à partir de la droite? (subrstring?!)
- 16. Déterminer la position de la première occurrence de chaîne dans MySQL?
- 17. manière la plus appropriée pour sélectionner la première occurrence d'un élément enfant dans jQuery
- 18. preg_replace ne remplace que la première occurrence puis passe à la ligne suivante
- 19. Trouver la position de la première occurrence d'une sous-chaîne dans une chaîne
- 20. Trouver un tag spécifique avec BeautifulSoup
- 21. XSLT: élément spécifique Toujours ajouté à root?
- 22. Comment Regex rechercher/remplacer uniquement la première occurrence dans une chaîne dans .NET?
- 23. match tous les personnages du groupe, sauf pour la première et dernière occurrence
- 24. TSQL - Recherche de la première occurrence de valeur dans une chaîne
- 25. Trouver la première occurrence d'un tableau de chaînes dans une chaîne
- 26. Problème avec jQuery & Colorbox. Href dynamique ne reflète pas le changement après la première occurrence
- 27. Couper seulement la première et dernière occurrence d'un caractère dans une chaîne (PHP)
- 28. Comment puis-je trouver le nombre de colonnes avant la première occurrence de LIKE?
- 29. Comment faire une requête Django pour la première occurrence d'une clé étrangère dans une colonne?
- 30. Comment puis-je trouver la première occurrence d'une sous-chaîne dans une chaîne python?
Qu'avez-vous obtenu jusqu'à présent? Qu'est-ce qui ne fonctionne pas? – Oded
Bonne question (+1). Voir ma réponse pour la seule solution correcte jusqu'à présent. :) –