xslt tutorial xslt transformations elements with examples
Este tutorial explica qué es XSLT, sus transformaciones, elementos y uso con un ejemplo. También cubre la importancia de XPath para desarrollar código de conversión XSLT:
El término 'XSLT' se genera mediante la combinación de dos palabras, es decir, 'XSL' y 'T', 'XSL' es la forma corta de 'Lenguaje de hoja de estilo extensible' y 'T' es una forma corta de 'Transformación'.
Entonces, básicamente, XSLT es un lenguaje de transformación que se usa para transformar / convertir documentos XML de origen a documentos XML u otros formatos como HTML, PDF usando XSL-FO (Objetos de formato), etc.
Lo que vas a aprender:
Introducción a XSLT
La transformación ocurre con la ayuda del procesador XSLT (como Saxon, Xalan). Este procesador XSLT toma uno o más documentos XML como fuente con un archivo XSLT que contiene código XSLT escrito en él y los documentos de resultado / salida se generarán más tarde como se muestra en el siguiente diagrama.
El procesador XSLT analiza los documentos XML de origen utilizando X-Path para navegar por los diferentes elementos de origen desde el elemento raíz hasta el final de los documentos.
Lectura recomendada => Todo lo que necesitas saber sobre X-Path
Transformación XSLT
Para iniciar la transformación, necesitamos un documento XML en el que se ejecutará el código XSLT, el archivo de código XSLT en sí y la herramienta o software que tenga un procesador XSLT (puede usar cualquier versión gratuita o versión de prueba del software con fines de aprendizaje).
# 1) Código XML
A continuación se muestra el código XML fuente en el que se ejecutará el código XSLT.
Nombre del archivo: Books.xml
|_+_|# 2) Código XSLT
A continuación se muestra el código XSLT basado en el que se ejecutará en el documento XML anterior.
Nombre del archivo: Books.xsl
|_+_|# 3) Código de resultado / salida
El siguiente código se generará después de usar el código XSLT en el documento XML anterior.
|_+_|# 4) Ver resultado / salida en el navegador web
Libros:
ID del libro | Nombre del libro | Nombre del autor | Editor | Precio | Edición |
---|---|---|---|---|---|
5350192956 | Referencia del programador XSLT | Michael Kay | Wrox | Cuarto | |
3741122298 | Head First Java | Kathy Sierra | O'reilly | Primero | |
9987436700 | SQL la referencia completa | James R. Groff | McGraw-Hill | Tercero |
Elementos XSLT
Para comprender el código XSLT anterior y está funcionando, primero debemos comprender los diferentes elementos XSLT y sus atributos.
# 1) O
Cada código XSLT debe comenzar con el elemento raíz o bien
Atributos:
- @xmlns: xsl: Conecta el documento XSLT con el estándar XSLT.
- @versión: Define la versión del código XSLT para el analizador.
#2)
Esta declaración define un conjunto de reglas aplicadas para procesar o transformar el elemento de entrada seleccionado del documento de origen a las reglas de elemento de destino definidas de los documentos de salida.
Básicamente, hay dos tipos de plantillas disponibles según sus atributos:
(i) Plantilla con nombre: Cuando el elemento xsl: template contiene el atributo @name, se llama Plantilla con nombre.
Las plantillas con nombre son llamadas por xsl: elemento call-template.
(ii) Plantilla de partido: El elemento xsl: template contiene el atributo @match que contiene un patrón coincidente o XPath aplicado en los nodos de entrada.
Las plantillas de coincidencia son llamadas por el elemento xsl: apply-template.
xsl: el elemento de plantilla debe tener el atributo @ match o el atributo @name o ambos. Un elemento xsl: template que no tenga un atributo de coincidencia no debe tener un atributo de modo ni un atributo de prioridad.
Reescribamos el XSLT anterior (
a) Código XSLT basado en Match Template with. Vea a continuación el código modificado resaltado en amarillo y gris, producirá el mismo resultado de salida anterior.
|_+_|Consulte la captura de pantalla para ver el área resaltada:
b) Código XSLT basado en la plantilla con nombre con. Vea a continuación el código modificado resaltado en amarillo y gris, producirá el mismo resultado de salida anterior.
|_+_|Consulte la captura de pantalla para ver el área resaltada:
top 5 descargador de mp3 para android
#3)
El procesador buscará y aplicará todas las plantillas que tengan XPath definido en el atributo @select.
El atributo @mode también se usa si queremos dar más de una forma de salida con el mismo contenido de entrada.
#4)
El procesador realizará una llamada a las plantillas que tengan valor dentro del atributo @name (obligatorio).
El elemento se utiliza para pasar parámetros a la plantilla.
#5)
Proporcione el valor de cadena / texto con respecto a la expresión XPath definida en el atributo @select, como se define en el código anterior.
Esto le dará el valor del nombre del libro.
# 6): repetición
Esto procesará las instrucciones para cada conjunto de nodos (xpath definido en el atributo @select (obligatorio)) en la secuencia ordenada.
El código anterior significa para cada conjunto de nodos de tienda / libro significa:
cambiador de voz que funciona con discordia
/ tienda / libro (1)
/ tienda / libro (2)
/ tienda / libro (3)
también se puede utilizar como hijo de xsl: for-each para definir el orden de clasificación.
# 7): procesamiento condicional
El xsl: si las instrucciones solo se procesarán si el valor booleano del atributo @test será verdadero; de lo contrario, la instrucción no se evaluará y se devolverá la secuencia vacía.
|_+_|Resultado: Condición verdadera: la cantidad de libros es más de dos.
Aquí, count () es la función predefinida.
# 8): procesamiento de condiciones alternativas
xsl: elija tener varios casos para diferentes condiciones que se prueban dentro del atributo @test de los elementos xsl: when, la condición de prueba que se cumple primero entre todos los xsl: when, que se procesará primero y hay un xls opcional: de lo contrario de modo que si ninguna de las pruebas de condición se cumple, se considerará este xsl: de lo contrario.
|_+_|Resultado: Condición Verdadero: la cuenta del libro es tres.
#9)
xsl: copy funciona en el elemento de contexto, es decir, si ese es un nodo, entonces copiará el nodo de contexto en el nodo recién generado y esto no copiará a los hijos del nodo de contexto. Por este motivo, esto se denomina copia superficial. A diferencia del elemento xsl: copy-of, xsl: copy no tiene el atributo @ select.
En el siguiente código, los elementos de contexto se copian en la salida y todos los elementos secundarios son llamados y copiados por xsl: apply-template de forma recursiva.
nodo () | @ * Representa todos los nodos y todos sus atributos de forma recursiva.
Resultado: Esto copiará todos los nodos y atributos del documento de origen de forma recursiva al documento de salida, es decir, creará una copia exacta del documento de origen.
#10)
xsl: copy-of copiará la secuencia de nodos con todos sus hijos y atributos de forma recursiva por defecto, debido a esta naturaleza, esto también se denomina copia profunda. El atributo @select es necesario para la evaluación de XPath.
Resultado: Esto copiará todos los nodos y atributos del documento de origen de forma recursiva al documento de salida, es decir, creará una copia exacta del documento de origen.
Representa una copia del nodo actual y el atributo actual.
#11)
Este elemento se utiliza para escribir un comentario en el resultado de destino, cualquier contenido de texto que esté al lado de esta etiqueta se imprimirá como salida comentada.
Esto se imprimirá para generar un nodo de comentario.
Resultado:
#12)
Esto generará un nodo de texto para el documento de resultado, el valor dentro de xsl: text se imprimirá como una cadena para la salida.
Esto es un
línea de texto.
Producción:
Esto es un
línea de texto.
#13)
Esto generará un elemento en el documento de resultado con el nombre mencionado en su atributo @name. El atributo de nombre es el atributo obligatorio.
Resultado: 5350192956
#14)
Esto generará un atributo para su elemento padre en el documento de resultados. El nombre del atributo se define mediante el atributo de nombre y el valor del atributo se calcula mediante el XPath mencionado en el atributo de selección como se indica en el código siguiente. El atributo de nombre es el atributo obligatorio.
Resultado:
#15)
Este elemento ordenará el nodo seleccionado de una manera secuencial en consecuencia en dirección ascendente o descendente. El nodo o XPath se proporciona a través del atributo @select y la dirección de clasificación se define mediante el atributo @order.
En el siguiente código obtendremos la lista de todos los libros según el nombre del libro en orden alfabético.
|_+_|Consulte esta captura de pantalla para el área resaltada:
Resultado: La siguiente lista contiene los nombres de los libros en orden alfabético, es decir, en orden ascendente.
Libros:
ID del libro | Nombre del libro | Nombre del autor | Editor | Precio | Edición |
---|---|---|---|---|---|
3741122298 | Head First Java | Kathy Sierra | O'reilly | Primero | |
9987436700 | SQL la referencia completa | James R. Groff | McGraw-Hill | Tercero | |
5350192956 | Referencia del programador XSLT | Michael Kay | Wrox | Cuarto |
#16)
Este elemento declara una variable que contiene un valor. Una variable podría ser una variable global o una variable local. El nombre de la variable se define mediante el atributo @name y el valor que tendrá esta variable se define mediante el atributo @select.
El acceso de la variable global es global, es decir, las variables se pueden llamar dentro de cualquier elemento y permanecer accesibles dentro de la hoja de estilo.
Para definir una variable global, solo tenemos que declarar que junto al elemento raíz de la hoja de estilo como se muestra en el código de abajo en amarillo resaltado, la variable 'SecondBook' es la variable global y contiene el nombre del segundo libro.
El acceso de la variable local es local al elemento en el que está definida, es decir, esa variable no sería accesible fuera del elemento en el que está definida como se muestra en el código de abajo que está resaltado en gris, la variable 'primer libro' es un variable local y contiene el nombre del primer libro.
Para hacer una llamada a la variable global a la variable local, se usa el símbolo de dólar ($) antes del nombre de la variable, como se muestra a continuación en amarillo resaltado $ .
|_+_|Consulte la captura de pantalla para el área resaltada:
Resultado:
Nombre del primer libro: Referencia del programador XSLT
Nombre del segundo libro: Head First Java
#17)
Este elemento se utiliza para declarar claves, para los valores de patrón coincidentes con esa clave en particular.
Name es un proveedor de esa clave mediante el atributo @name (' get-publisher “), Que luego se usa dentro de la función key (). El atributo @match se proporciona al nodo de entrada de índice mediante expresiones XPath (' libro “), Como en el siguiente, @match resaltado en amarillo se usa para indexar todos los libros disponibles en la tienda.
En relación con el atributo @match, se utiliza el atributo @use, que declara el nodo para obtener el valor de esa clave a través de la expresión XPath ('editor').
Ahora, suponga que si necesitamos los detalles del libro que es publicado solo por el editor 'Wrox', entonces podemos obtener ese valor fácilmente a través del elemento xsl: key haciendo un par clave-valor.
clave ('get-publisher', 'Wrox') Key () toma dos parámetros, primero es el nombre de la clave, que en este caso es 'get-publisher', segundo es el valor de cadena que necesita buscar, que en nuestro caso es 'Wrox'.
|_+_|Consulte la captura de pantalla para el área resaltada:
Resultado:
|_+_|Resultado / Vista HTML:
Libros:
ID del libro | Nombre del libro | Nombre del autor | Editor | Precio | Edición |
---|---|---|---|---|---|
5350192956 | Referencia del programador XSLT | Michael Kay | Wrox | Cuarto |
#18)
Este elemento se utiliza con fines de depuración en el desarrollo XSLT. El elemento da su salida a la pantalla de salida estándar de la aplicación.
El atributo @terminate se usa con dos valores, ya sea 'sí' o 'no', si el valor se establece en 'sí', el analizador termina inmediatamente tan pronto como se cumple la condición de prueba para que se ejecute el mensaje.
Para entender esto, supongamos que si en nuestro documento de entrada el elemento de precio se vacía accidentalmente como en el siguiente código, entonces el procesamiento debería detenerse inmediatamente tan pronto como el procesador encuentre el elemento de precio vacío que se puede lograr fácilmente usando xsl: mensaje dentro de la condición de prueba if como en el siguiente código XSLT.
La alerta del depurador se muestra en la pantalla estándar de la aplicación: Procesamiento terminado por xsl: mensaje en la línea 21.
Ingrese el código XML:
|_+_|Consulte la captura de pantalla para el área resaltada:
cómo reproducir un archivo mkv en Windows
Código XSLT:
|_+_|Consulte la captura de pantalla para el área resaltada:
Resultado: Tenga en cuenta que tan pronto el analizador encuentra la etiqueta de precio vacía, inmediatamente termina el procesamiento debido a que las etiquetas de cierre dey no vendría al final del archivo.
|_+_|Consulte la captura de pantalla para el área resaltada:
#19) &
elemento define el parámetro a la plantilla si se define dentro. Puede definirse dentro como parámetro global o dentro como parámetro local para esa plantilla.
El valor de se pasa / proporciona cuando la plantilla es llamada por o.
pasa el valor del parámetro definido dentro de la plantilla. Un atributo como @name contiene el nombre del parámetro que debe coincidir con el atributo @name del elemento. El atributo @Select se utiliza para establecer un valor para ese parámetro.
Para obtener el valor del parámetro, se usa el mismo signo de dólar variable ($).
Código XML fuente:
|_+_|Código XSLT:
|_+_|Consulte la captura de pantalla para el área resaltada:
Salida de resultado:
|_+_|#20)
se utiliza para importar otro módulo de hoja de estilo dentro de nuestra hoja de estilo actual. Esto ayuda a lograr un enfoque de desarrollo modular XSLT.
Después de importar, todas las plantillas estarán disponibles para su uso. La prioridad de las plantillas definidas en la hoja de estilo principal (que está importando otra hoja de estilo) es mayor que la hoja de estilo importada (que es importada por la hoja de estilo principal).
Si otra hoja de estilo también tiene la misma plantilla de nombre que la definida dentro de la plantilla que se está importando, las plantillas externas se anulan con su propia plantilla.
El atributo @href se usa como el URI de la hoja de estilo que desea importar.
#21)
Igual que el xsl: import anterior, también ayuda a lograr un enfoque de desarrollo modular XSLT. Todas las plantillas incluidas por tienen la misma prioridad / precedencia que la hoja de estilo de llamada. Es como si copiaras todas las plantillas de otra hoja de estilo a tu propia hoja de estilo.
El atributo @href se usa como el URI de la hoja de estilo que desea importar.
#22)
Este elemento se utiliza para especificar el árbol de resultados en el archivo de salida. Contiene atributos como @method que pueden tener valores como 'XML', 'HTML', 'XHTML' y 'texto' de forma predeterminada es 'XML'.
@encoding especifica la codificación de caracteres que viene en el archivo de salida como se muestra en el siguiente ejemplo. encoding = ”UTF-16 ″, los valores predeterminados para XML o XHTML pueden ser UTF-8 o UTF-16. @indent especifica la sangría del código de salida XML o HTML, para XML el valor predeterminado es 'no' y para HTML y XHTML el valor predeterminado es sí.
#23)
Este elemento se usa para eliminar (eliminar) los espacios en blanco no significativos para el elemento fuente listado dentro del atributo @element y si queremos eliminar los espacios en blanco de todo el elemento, entonces podemos usar '*' dentro del atributo @elements.
#24)
Este elemento se usa para preservar los espacios en blanco para el elemento fuente listado dentro del atributo @element y si queremos preservar los espacios en blanco de todos los elementos, entonces podemos usar '*' dentro del atributo @elements.
Conclusión
Por lo tanto, en este artículo, hemos aprendido sobre XSLT, elementos XSLT de uso frecuente, su uso con código fuente y objetivo / resultado de ejemplo, conversión o transformación del elemento fuente en elemento objetivo.
También discutimos la importancia de XPath para desarrollar código de conversión XSLT. Hemos visto la declaración de la plantilla XSL y los parámetros de llamada y paso de la plantilla. Aprendimos a declarar variables globales y locales, su uso en el código XSLT y cómo llamarlas.
Aprendimos sobre diferentes elementos XSLT de ramificación o condicionales como xsl: if, xsl: for-each, xsl: choose. Entendimos la diferencia entre copia superficial y copia profunda, clasificación de nodos, depuración de código XSLT usando xsl: message, la diferencia entre plantilla con nombre y plantillas de coincidencia, y formato de salida usando xsl: output.
Sobre el Autor : Himanshu P. es un profesional experimentado en el campo de las tecnologías de la información. Ha trabajado con ITC MNC en dominios de negocios cruzados y múltiples tecnologías. El pasatiempo favorito de Himanshu es leer revistas y escribir blogs.
Lectura recomendada
- Tutorial de Python DateTime con ejemplos
- Verifique la visibilidad de los elementos web usando varios tipos de comandos de WebDriver - Tutorial de Selenium n. ° 14
- Cómo localizar elementos en los navegadores Chrome e IE para crear scripts de Selenium - Tutorial de Selenium n. ° 7
- Tutorial de cadenas de C #: métodos de cadena con ejemplos de código
- Cómo usar el selector CSS para identificar elementos web para scripts de Selenium - Tutorial de Selenium n. ° 6
- Cómo trabajar con el diccionario Python - Tutorial con ejemplos de código
- Tutorial de longitud de matriz de Java con ejemplos de código
- Depuración de scripts de Selenium con registros (Tutorial de Log4j) - Tutorial de Selenium n. ° 26