Digamos que tengo un documento html completo como entrada XML.
¿Cómo se vería el archivo XSLT si solo quisiera mostrar la primera (o cualquiera) imagen del html?XSLT Obtiene la primera aparición de una etiqueta específica
Respuesta
expresión Uno XPath que selecciona el primer <img>
elemento de un documento es:
(//img)[1]
hacer la nota que un error frecuente - como se hizo por @Oded
en su respuesta es sugieren la siguiente expresión XPath: en general, puede seleccionar más de un elemento:
//img[1]
(: INCORRECTO !!! :)
Esto selecciona todos los <img>
elementos en el documento, cada uno de los cuales es el primer hijo <img>
de su elemento primario.
Aquí está la explicación exacta de este error frecuente - en el W3C XPath 1.0 Recommendation:
NOTA: La ruta de ubicación //para[1]
no significa lo mismo que la ruta de ubicación /descendant::para[1]
. Este último selecciona el primer elemento descendente para
; el primero selecciona todos los descendientes para
elementos que son los primeros para hijos de sus padres.
Existe otro problema si el documento ha definido un espacio de nombres predeterminado, que debe ser el caso con XHTML. XPath trata cualquier nombre sin prefijo como pertenecientes a no espacio de nombres y la expresión (//img)[1]
selecciona ningún nodo, ya que no existe ningún elemento en el documento que pertenece a no espacio de nombres y tiene nombre img
.
En este caso hay dos formas de especificar la expresión deseada XPath:
(//x:img)[1]
- donde se asocia el prefijox
(por el lenguaje de hosting) con el namespcae predeterminado específico (en este caso esta es el espacio de nombres XHTML ).(//*[name()='img'])[1]
La expresión XPath recuperará la primera imagen de una página HTML: (//img)[1]
.
Consulte la respuesta en @Dimitre Novatchev
para obtener más información sobre problemas con ella.
Consulte mi respuesta para obtener una explicación del problema con su respuesta. Lea la especificación XPath: la definición de la abreviatura '//' y busque este error frecuente.Si el problema aún no está claro, haga una pregunta por separado y muchas personas estarán encantadas de explicarlo. :) –
** Esta respuesta es W R O N G ** !!!!! Ver mi respuesta para una explicación. –
Definitivamente no quiero leer las especificaciones de XPath. Pero veo lo que dice Dimitre. El '// img [1]' seleccionará la primera etiqueta img de * any * parent en lugar de la primera del documento. –
- 1. División en la primera aparición
- 2. ¿Cómo insertar una etiqueta HTML alrededor de la primera letra de una etiqueta específica con JQuery?
- 3. XSLT: Seleccione siguiente hermano hasta alcanzar una etiqueta específica
- 4. ¿Obtiene el índice de la enésima aparición de una cadena?
- 5. ¿Se elimina la primera aparición de palabra de una cadena?
- 6. Regex a primera aparición solamente?
- 7. SQL: devolver sólo la primera aparición
- 8. ¿Reemplazar la primera aparición solamente de una cadena?
- 9. Cómo encontrar la primera aparición con LINQ
- 10. encontrar la primera aparición de la clase en div
- 11. Reemplazar la primera aparición de cadena en Python
- 12. ¿Cómo obtener la primera aparición de un caracter en Subcadena
- 13. Cómo reemplazar la primera aparición de cadena en Java
- 14. Regex: coincidiendo con la primera aparición de un personaje
- 15. ¿Cómo puedo encontrar la primera aparición de una subcadena en una cadena de Python?
- 16. Devuelve la parte de una cadena antes de la primera aparición de un carácter en php
- 17. C# - La manera más sencilla de eliminar la primera aparición de una subcadena de otra cadena
- 18. GIT extracción/recuperación de la etiqueta específica
- 19. ¿Cómo tomar una subcadena de una cadena dada hasta la primera aparición del carácter especificado?
- 20. Conseguir una subcadena después de la última aparición de un caracter en XSLT
- 21. UNIX: ¿Usando egrep o sed para encontrar la línea con la primera aparición de una cadena?
- 22. Encontrar una etiqueta específica con BeautifulSoup
- 23. Conseguir índice de la primera aparición de un valor en cada columna de una matriz
- 24. Usa la expresión regular para encontrar una cadena específica que no está en la etiqueta html
- 25. Encontrar la primera aparición de una cadena de un vector <string>
- 26. Regex para que coincida con la primera aparición de una cadena
- 27. Ruby - sustituir la primera aparición de una subcadena por otra cadena
- 28. ¿Cómo reemplazar la primera aparición de una expresión regular en Python?
- 29. ¿Cómo puedo dividir una cadena en la primera aparición de algo?
- 30. XSLT Seleccionar todos los nodos que contienen una subcadena específica
¿Qué ha conseguido hasta ahora? ¿Qué no está funcionando? – Oded
Buena pregunta (+1). Ver mi respuesta para la única solución correcta hasta ahora. :) –