Compartir a través de


Ejemplo 1 de <xsl:apply-imports>

Este ejemplo utiliza <xsl:apply-imports> para aprovechar el código de manera más efectiva. El ejemplo utiliza cuatro archivos principales:

  • El archivo XML de origen, ops.xml. Este archivo de datos define tres operaciones: add (+), sub (-) y mul (*).

  • La hoja de estilos XSLT principal, ops.xsl. Este archivo contiene las reglas de plantilla para las operaciones, incluidos dos elementos <xsl:import>. Las hojas de estilos importadas realizan operaciones aritméticas y de cadena en una fuente de datos determinada.

  • Una hoja de estilos importada, arith.xsl. Este archivo XSLT realiza operaciones aritméticas en cada elemento <op>.

  • Otra hoja de estilos importada, str.xsl. Este archivo XSLT realiza operaciones de cadena personalizadas. Aquí add (+) se trata como una sucesión de cadenas; por ejemplo, 1+2 se convierte en 12. Similarmente, mul (*) se trata como una concatenación inversa; 1*2 se convierte en 21. Tenga en cuenta que sub (-) es una operación de cadena sin definir.

Archivo XML (ops.xml)

Archivo XSLT principal (ops.xsl)

Archivo XSLT importado (arith.xsl)

Archivo XSLT importado (str.xsl)

Resultados

Obtendrá los siguientes resultados:

Some binary operations

1+2 = 12 (from str.xsl)

1-2 = -1 (from arith.xsl)

1*2 = 21 (from str.xsl)

Notas

La última hoja de estilos importada tiene la prioridad de importación más alta. En este ejemplo, str.xsl se importa en último lugar y, por tanto, tiene una mayor prioridad de importación que arith.xsl. Las dos hojas de estilos importadas tienen plantillas para las operaciones add y mul. Solo se llamarán las de str.xsl. La operación sub definida en arith.xsl se utiliza, sin embargo, porque no se define ninguna operación secundaria en str.xsl. Supongamos que se invierte el orden de los elementos <xsl:import> del archivo XSLT principal, de la siguiente forma:

<xsl:import href="str.xsl"/>

<xsl:import href="arith.xsl"/>

En este caso, el resultado sería el siguiente:

Some binary operations

1+2 = 3 (from arith.xsl)

1-2 = -1 (from arith.xsl)

1*2 = 2 (from arith.xsl)

Además, si la instrucción <xsl:apply-imports/> no está definida en la regla de la plantilla de invalidación para <op> en el archivo XSLT principal (ops.xsl), el resultado será el siguiente:

Some binary operations

1+2 =

1-2 =

1*2 =

Es decir, la regla de plantilla de la hoja de estilos que se está importando invalida las reglas de plantilla relacionadas de las hojas de estilos importadas. La instrucción <xsl:apply-imports/> le permite volver a activar estas reglas de plantilla invalidadas de un modo diferente.