html - regulares - Prueba de nodos text() frente a valores de cadena en XPath
xpath expresiones regulares (1)
XPath
text() =
es diferente de XPath
. =
. =
(Los nodos de texto coincidentes son diferentes a los valores de cadena coincidentes)
Los siguientes XPaths no son lo mismo ...
-
//span[text() = ''Office Hours'']
Dice :
Seleccione los elementos de
span
que tienen un nodo de texto secundario inmediato igual a ''Horario de oficina''. -
//span[. = ''Office Hours'']
Dice :
Seleccione los elementos de
span
cuyo valor de cadena es igual a ''Horario de oficina'' .
En resumen, para los nodos de elementos :
El valor de cadena de un nodo de elemento es la concatenación de los valores de cadena de todos los descendants de nodo de texto del nodo de elemento en orden de documento.
Ejemplos
Los siguientes elementos
span
solo el n. ° 1
:
-
<span class="portal-text-medium">Office Hours<br/>8:00-10:00</span>
-
<span class="portal-text-medium">My<br/>Office Hours</span>
Los siguientes elementos
span
solo coincidirían con el n. ° 2
:
-
<span class="portal-text-medium"><b>Office</b> Hours</span>
-
<span class="portal-text-medium"><b><i>Office Hours</i></b></span>
El siguiente elemento
span
coincidiría con el n. ° 1 y el n. ° 2
:
-
<span class="portal-text-medium">Office Hours</span>
Tengo un nodo de la siguiente manera:
<span class="portal-text-medium">Office Hours</span>
Para el XPath yo uso
//span[text()=''Office Hours'']
que debería funcionar, pero nunca funciona.
Puedo usar
*contains(text(),''Office Hours'')]*
pero eso no encontrará una coincidencia exacta y tengo que verificar que no haya "*".
Esta no es la única vez que no me ha funcionado.
Lo he visto funcionar antes, así que no sé qué está mal.
¿Alguna idea?
Sí, puedo, y uso,
starts-with
pero no es lo mismo.