2011-08-23 9 views
6

¿Hay algún equivalente xsl de sql como o búsqueda difusa?xsl me gusta o búsqueda difusa?

por ejemplo:

<xsl:for-each select="foo[foo_type like '%1%']"> 
+0

Buena pregunta, +1. Vea mi respuesta para la expresión XPath que necesita usar y para una serie de funciones estándar de XPath en cadenas que pueden ser útiles en casos similares a los suyos. :) –

Respuesta

3
No

exactamente, pero tiene una gran cantidad de funciones de cadena, como contains, starts-with, etc.Se puede ver la documentación de MS' en estas funciones aquí:

http://msdn.microsoft.com/en-us/library/ms256195.aspx

Su particular, seleccione sería algo así como:

<xsl:for-each select="*[contains(name(),'1')]"> 
+0

Todas las buenas respuestas, esto es lo que terminé usando sin embargo. ¡Gracias! –

+0

De nada. Me alegra oír que resolvió su problema! –

3

Uso (en el atributo select) la función XPath estándar contains() como en siguiente expresión de XPath:

foo[contains(foo_type, '1')] 

Dependiendo del caso concreto, otras funciones XPath estándar, como se enumeran a continuación, puede también ser útil:

hacer la nota que ends-with(), matches(), tokenize() y replace()están disponibles sólo en XPath 2.0.

Se puede usar la siguiente expresión XPath 1.0 para el mismo propósito que XPath 2.0 función ends-with():

substring($s, string-length($s) - string-length($target) +1) 
= 
    $target 

es equivalente a:

ends-with($s, $target) 
1

En XSLT 2.0, utilice

<xsl:for-each select="foo[matches(foo_type, '1')]"> 

diferencia de SQL, que tiene una sintaxis patrón bastante primitiva y poco ortodoxo, usos XSLT expresiones regulares que están muy cerca de la sintaxis usada en Perl y la mayoría de los otros dialectos de expresiones regulares modernas.

+0

Gracias por la edición, @Michael Kay. +1 para esta respuesta. –

Cuestiones relacionadas