xml - tesis - XSLT: ¿Cómo representar O en un atributo de "coincidencia"?
tesis implementacion de una biblioteca virtual pdf (5)
Quiero realizar una serie de operaciones en elementos que coincidan con el nombre "A" o "B". Estoy pensando en algo como esto a continuación, pero no funciona.
<xsl:template match= " ''A'' or ''B''" >
<!-- whatever I want to do here -->
</xsl:template>
No se pudo encontrar la referencia de idioma XSLT apropiada para ello. ¡Por favor ayuda! ¡¡Gracias!!
<xsl:template match= " ''A'' or ''B''" >
Hay algunos problemas con este patrón de coincidencia :
Una plantilla coincide con los nodos , no con las cadenas. Por lo tanto, los nombres de los elementos que se emparejarán no se deben especificar como cadenas entre comillas.
El operador XPath "o" actúa sobre dos valores booleanos, no sobre nodos. Lo que es necesario aquí es otro operador XPath: el operador sindical "|" .
Teniendo en cuenta lo anterior, uno especificará correctamente la regla de la plantilla como:
<xsl:template match= "A | B" >
<!-- whatever I want to do here -->
</xsl:template>
Creo que es más conveniente usar este XPath
/red/(yellow | orange)/blue/green/gold
más bien que
/red/*[name() = ''yellow'' or name()=''orange'']/blue/green/gold
Generalmente A | B
A | B
es la forma correcta de hacer esto. Pero el personaje de la tubería es básicamente una unión de dos expresiones XPath completas. Puede ser molesto usarlo en un caso como este:
/red/yellow/blue/green/gold | red/orange/blue/green/gold
ya que estás repitiendo la totalidad de la expresión a excepción de que una pequeña parte de eso está cambiando.
En casos como este, a menudo tiene sentido usar un predicado y la función name()
lugar:
/red/*[name() = ''yellow'' or name()=''orange'']/blue/green/gold
Esta técnica le da acceso a un rango mucho más amplio de operaciones lógicas. También es (concebiblemente) más rápido, ya que el navegador XPath solo tiene que atravesar los nodos que está probando una vez.
La siguiente información fue obtenida de: http://www.cafeconleche.org/books/bible2/chapters/ch17.html#d1e2090
Parafrasearé, busque el texto "Usar el operador o |" en ese documento.
La sintaxis es:
<xsl:template match="A|B">
<!-- Do your stuff> -->
</xsl:template>