Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/10/2014, 08:07
DvNe
 
Fecha de Ingreso: octubre-2012
Mensajes: 37
Antigüedad: 12 años, 6 meses
Puntos: 0
Ordenar XML con XSLT

Buenas, tengo un XML que es el siguiente:

Código XML:
Ver original
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!DOCTYPE recursos SYSTEM "recursos.dtd">
  3. <recursos>
  4.     <recurso>
  5.         <descripcion>Consorcio W3C</descripcion>
  6.         <tipo>
  7.             <externo url="http://www.w3c.es/"/>
  8.         </tipo>
  9.         <idioma>Inglés</idioma>
  10.         <contenido>
  11.             <General/>
  12.         </contenido>
  13.         <unidad>2</unidad>
  14.     </recurso>
  15.     <recurso>
  16.         <descripcion>Especificación HTML</descripcion>
  17.         <tipo>
  18.             <externo url="http://html.conclase.net/w3c/html401-es/cover.html"/>
  19.         </tipo>
  20.         <idioma>Castellano</idioma>
  21.         <contenido>
  22.             <HTML />
  23.         </contenido>
  24.         <version>4.01</version>
  25.         <unidad>2</unidad>
  26.     </recurso>
  27.     <recurso>
  28.         <descripcion>Enunciado práctica 3</descripcion>
  29.         <tipo>
  30.             <interno fichero="./locales/Practica3_200708.pdf"/>
  31.         </tipo>
  32.         <idioma>Castellano</idioma>
  33.         <contenido>
  34.             <PHP/>
  35.         </contenido>
  36.         <unidad>4</unidad>
  37.     </recurso>
  38.     <recurso>
  39.         <descripcion>W3C DOM</descripcion>
  40.         <tipo>
  41.             <externo url="http://www.w3.org/DOM/"/>
  42.         </tipo>
  43.         <idioma>Inglés</idioma>
  44.         <contenido>
  45.             <DOM />
  46.         </contenido>
  47.         <version>Level 3</version>
  48.         <unidad>3</unidad>
  49.     </recurso>
  50. </recursos>

Ahora bien, tengo que crear un XSLT, que:

• Ordena ascendentemente por unidad.
• Ordena ascendentemente por contenido.
• Ordena ascendentemente por tipo.

Y lo guarde en un XML.

He creado este XSLT pero no consigo realizarlo alguien sabría como explicarme?

Código XSLT:
Ver original
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  3. <!-- Metodo de salida -->
  4. <xsl:output method="xml" indent="yes"/>
  5.     <xsl:template match="/">
  6.         <xsl:for-each select="recursos/recurso">
  7.             &lt;recurso&gt;
  8.                 &lt;descripcion&gt;<xsl:value-of select="descripcion" />&lt;/descripcion&gt;
  9.                 &lt;tipo&gt;
  10.                     <xsl:choose>
  11.                         <xsl:when test="tipo/externo">
  12.                             &lt;externo url="<xsl:value-of select="tipo/externo/@url" />" /&gt;
  13.                         </xsl:when>
  14.                         <xsl:otherwise>
  15.                             &lt;interno fichero="<xsl:value-of select="tipo/interno/@fichero" />" /&gt;
  16.                         </xsl:otherwise>
  17.                     </xsl:choose>
  18.                 &lt;/tipo&gt;
  19.                 &lt;idioma&gt;<xsl:value-of select="idioma" />&lt;/idioma&gt;
  20.                 &lt;contenido&gt;
  21.                     <xsl:choose>
  22.                         <xsl:when test="contenido/General">
  23.                             &lt;<xsl:value-of select="contenido/."/>/&gt;
  24.                         </xsl:when>
  25.                         <xsl:when test="contenido/HTML">
  26.                             &lt;<xsl:value-of select="contenido/."/>/&gt;
  27.                         </xsl:when>
  28.                         <xsl:when test="contenido/CSS">
  29.                             &lt;<xsl:value-of select="contenido/."/>/&gt;
  30.                         </xsl:when>
  31.                         <xsl:when test="contenido/XML">
  32.                             &lt;<xsl:value-of select="contenido/."/>/&gt;
  33.                         </xsl:when>
  34.                         <xsl:when test="contenido/JavaScript">
  35.                             &lt;<xsl:value-of select="contenido/."/>/&gt;
  36.                         </xsl:when>
  37.                         <xsl:when test="contenido/DOM">
  38.                             &lt;<xsl:value-of select="contenido/."/>/&gt;
  39.                         </xsl:when>
  40.                         <xsl:when test="contenido/PHP">
  41.                             &lt;<xsl:value-of select="contenido/."/>/&gt;
  42.                         </xsl:when>
  43.                     </xsl:choose>
  44.                 &lt;/contenido&gt;
  45.                 <xsl:if test="version">
  46.                     &lt;version&gt;<xsl:value-of select="version" />&lt;/version&gt;
  47.                 </xsl:if>
  48.                 &lt;unidad&gt;<xsl:value-of select="unidad" />&lt;/unidad&gt;
  49.             &lt;/recurso&gt;
  50.         </xsl:for-each>
  51.     </xsl:template>
  52. </xsl:stylesheet>