2011-02-17 14 views
5

Me pregunto si es posible escribir una coincidencia de plantilla con la función .XSLT 2.0 - Coincidencia de plantilla con Contiene()

Tengo un documento que tiene varios elementos que deben ser renombrados a un elemento común. Se debe cambiar el nombre de todos los siguientes a solo OP: OP1.2, OP7.3, OP2.4, OP5.6`, etc.

Respuesta

9

Sí, puede usar dentro de un filtro de predicado en los criterios de coincidencia para elementos

<xsl:template match="*[contains(local-name(),'OP')]> 
    <OP> 
    <xsl:apply-templates select="@*|node()"/> 
    </OP> 
</xsl:template> 

También es posible usar starts-with()

*[starts-with(local-name(),'OP')] 

Si está utilizando XSLT 2.0 se puede utilizar la función matches(), que apoya a los patrones de expresión regular para coincidir más complejo.

*[matches(local-name(),'^OP')] 
+0

+1 para una buena respuesta. –

+0

+1 Respuesta correcta. –

+0

¿Podemos proporcionar valores múltiples para que coincidan? like: match = "* [contains (local-name(), 'OP1 | OP2 | OP3')] –

Cuestiones relacionadas