2011-05-18 18 views
5

Acabo de empezar a aprender XSL (T) y me pregunto cómo funciona apply-templates? No entiendo la parte recursivamente aplicada de plantillas como está escrita en mi libro.¿Cómo funciona apply-templates?

entiendo la XPath parte de XSL (T) y así sucesivamente, pero no lo apply-templates está haciendo y por qué escribo varias veces.

Respuesta

3

Si ha leído sobre aplicar-plantillas en un libro pero no lo ha entendido, no está claro que unas pocas palabras aquí ayuden. Tal vez necesites un libro diferente: diferentes estilos de tutoriales atraen a diferentes personas. O tal vez un tutorial en línea como http://vimeo.com/15234803 transmitirá las ideas.

La esencia del mecanismo de la plantilla es que hay dos partes involucradas. La instrucción xsl: apply-templates selecciona algunos nodos para el procesamiento, y las reglas de la plantilla (entre ellos) deciden cuál debe ser el procesamiento. Esto proporciona un acoplamiento muy flexible y una gran separación de preocupaciones; es más bien como un envío de mensaje/método orientado a objetos, pero mucho más flexible.

+0

Por favor, publique el enlace de otros video tutoriales XSLT. Los tutoriales anteriores dan la idea clara de aplicar plantillas y también necesito saber el propósito de usar mode = 'parent' ... –

+0

Permítanme recomendar mi libro: Referencia de programadores XSLT 2.0 de Wrox Press. Una vez que te interesan cosas como los modos con nombre, necesitas un libro de referencia decente. –

8

Utiliza <xsl:apply-templates> para invocar el <xsl:template>: s que ha definido.

<xsl:apply-templates> llama a una plantilla correspondiente para cada nodo en el conjunto.

Puede controlar el orden de procesamiento especificando un atributo select en apply-templates.

ver este ejemplo de w3schools:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

<xsl:template match="/"> 
    <html> 
    <body> 
    <h2>My CD Collection</h2> 
    <xsl:apply-templates/> 
    </body> 
    </html> 
</xsl:template> 

<xsl:template match="cd"> 
    <p> 
    <xsl:apply-templates select="title"/> 
    <xsl:apply-templates select="artist"/> 
    </p> 
</xsl:template> 

<xsl:template match="title"> 
    Title: <span style="color:#ff0000"> 
    <xsl:value-of select="."/></span> 
    <br /> 
</xsl:template> 

<xsl:template match="artist"> 
    Artist: <span style="color:#00ff00"> 
    <xsl:value-of select="."/></span> 
    <br /> 
</xsl:template> 

</xsl:stylesheet> 
  • La primera apply-templates llama a la plantilla cd cada vez que se encuentra un elemento llamado "cd".

  • La plantilla cd, a su vez, llama a los title y artist plantillas para procesar los elementos secundarios de <cd>.

  • title se procesa antes de artist. Tenga en cuenta que el orden de los elementos artist y title en el código fuente XML no hace diferencia.

Se podría pensar en apply-templates como análoga a una llamada de subrutina en lenguajes procedimentales.

1

Si comprende las reglas de la plantilla, ¡ya está! Incluso si no es tan fácil, siempre dan sorpresa. Read the specs.