XSLT con escenario de libros
Sumario
Enunciado
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="prueba.xsl" ?>
<biblioteca>
<libro>
<titulo>Don Quijote de la Mancha</titulo>
<autor nacimiento="1547">Miguel de Cervantes</autor>
<publicacion fecha="1605"/>
</libro>
<libro>
<titulo>La colmena</titulo>
<autor nacimiento="1916">Camilo José Cela</autor>
<publicacion fecha="1951"/>
</libro>
<libro>
<titulo>El lazarillo de Tormes<
<autor>Anónimo</autor>
<publicacion fecha="1554"/>
</libro>
</biblioteca>
Introdución
Primer exemplo
Si no hay plantillas, el procesador simplemente recorre todos los nodos y extrae el texto contenido por cada nodo.
En el ejemplo siguiente, el resultado incluye el contenido de los nodos que no hay ninguna plantilla.
Segundo exemplo
El resultado incluye el contenido de los nodos ya que no hay regla para ellos, pero los de <autor> se pierden porque la plantilla es vacía
Terceiro exemplo
Se a plantilla baleira é aplicada ao nodo raíz o procesador non xenera ningún resultado no documento final nin recorre ningún nodo fillo
<xsl:value-of>
A instrucción <xsl:value-of> extrae o contido do nodo seleccionado.
Exemplo 1 - autores
No exemplo seguinte, o documento final conten os autores dos libros porque a plantilla os xenera coa instrucción <xsl:value-of>. Como se aplicou unha plantilla o nodo <libro> e logo se selecciona <autor>, o resto de fillos (<titulo> e <publicacion>) non se recorren.
XSLT:
Resultado:
TAREFA. Modifica o código anterior e amosa os títulos dos libros coa instrucción <xsl:value-of>
Exemplo 2 - título e autor
Obtén o título e autor dos libros (un a continuación do outro).
Exemplo 3 - titulo, autor e data de publicación
Para extraer os atributos é preciso utilizar outra expresión (tamén XPath) co carácter “@”.
As datas de publicación obteñense grazas á regra que extraen o valor do atributo e os títulos e autores obteñense porque ao non haber regras para ese nodo extráese o contido.
XSLT:
Resultado:
TAREFA. Utilizando o código anterior realiza o seguiente cambio na plantilla: <xsl:template match="//libro"> <xsl:value-of select="publicacion/@fecha"/> </xsl:template> Entendes as expresións XPath match="//libro" e publicacion/@fecha? E o resultado obtido? Sabes por qué neste caso so se obteñen os atributos?
Exemplo 4 - qué se amosará
Para finalizar observa o seguiente código. Trata de intuir qué mostrará y cómo. Hai diferenza co resultado anterior?
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="//libro">
<xsl:value-of select="titulo"/>
<xsl:value-of select="autor"/>
<xsl:value-of select="publicacion/@fecha"/>
</xsl:template>
</xsl:stylesheet>
Referencias
- Recurso educativo. Autor Jose A. Cortijo Leno.