XSLT con escenario de libros

De MediaWiki
Revisión del 10:22 14 feb 2023 de Joselv (discusión | contribuciones) (Página creada con « = Enunciado = <div class="toccolours mw-collapsible" style="width:700px; overflow:auto;"> <syntaxhighlight lang="xml"> <?xml version="1.0" encoding="UTF-8"?> <?xml-styles…»)
(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Ir a la navegación Ir a la búsqueda

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