Hola, tengo que hacer un trabajo con xml y xsl y no se como hacerlo. Tengo el siguiente dtd y xml que he hecho yo como base:
Código:
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT recursos (recurso*) >
<!ELEMENT recurso (descripcion, tipo, idioma, contenido, version, unidad) >
<!ELEMENT descripcion (#PCDATA) >
<!ELEMENT tipo (#PCDATA) >
<!ELEMENT idioma (#PCDATA) >
<!ELEMENT contenido (#PCDATA) >
<!ELEMENT version (#PCDATA) >
<!ELEMENT unidad (#PCDATA) >
<!ATTLIST tipo url CDATA #IMPLIED >
<!ATTLIST tipo fichero CDATA #IMPLIED>
Código:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE recursos SYSTEM "recursos.dtd">
<?xml-stylesheet type="text/xsl" href="file:///C:/xampp/htdocs/Practica/recursos/ordena_recursos.xsl"?>
<recursos>
<recurso>
<descripcion>Transparencias PHP</descripcion>
<tipo fichero="lenguajes de programacion web servidor(php).pdf"> Interno</tipo>
<idioma>Español</idioma>
<contenido>PHP</contenido>
<version/>
<unidad>Unidad 4</unidad>
</recurso>
<recurso>
<descripcion>Práctica PHP</descripcion>
<tipo fichero="PracticaPI_PHP_200910.pdf">Interno</tipo>
<idioma>Español</idioma>
<contenido>PHP</contenido>
<version/>
<unidad>Unidad 4</unidad>
</recurso>
<recurso>
<descripcion>Consorcio W3C</descripcion>
<tipo url="http://www.w3c.org">Externo</tipo>
<idioma>Inglés</idioma>
<contenido>General</contenido>
<version/>
<unidad>Unidad 0</unidad>
</recurso>
<recurso>
<descripcion>Transparencias Lenguajes Publicación Web</descripcion>
<tipo fichero="lenguajes_de_publicacion_web_200910_.pdf">Interno</tipo>
<idioma>Español</idioma>
<contenido>HTML</contenido>
<version>4.01</version>
<unidad>Unidad 0</unidad>
</recurso>
<recurso>
<descripcion>Práctica HTML</descripcion>
<tipo fichero="PracticaPI_HTML_200910.pdf">Interno</tipo>
<idioma>Español</idioma>
<contenido>HTML</contenido>
<version>4.01</version>
<unidad>Unidad 2</unidad>
</recurso>
<recurso>
<descripcion>Práctica CSS</descripcion>
<tipo fichero="PracticaPI_CSS_200910.pdf">Interno</tipo>
<idioma>Español</idioma>
<contenido>CSS</contenido>
<version>2.0</version>
<unidad>Unidad 2</unidad>
</recurso>
<recurso>
<descripcion>Práctica XML</descripcion>
<tipo fichero="PracticaPI_XML_XSLT_200910.pdf">Interno</tipo>
<idioma>Español</idioma>
<contenido>XML</contenido>
<version>1.0</version>
<unidad>Unidad 2</unidad>
</recurso>
<recurso>
<descripcion>Escuela W3C</descripcion>
<tipo url="http://www.w3schools.com">Externo</tipo>
<idioma>Inglés</idioma>
<contenido>HTML</contenido>
<version>4.01</version>
<unidad>Unidad 2</unidad>
</recurso>
<recurso>
<descripcion>Transparencias Javascript</descripcion>
<tipo fichero="lenguajes de programacion web cliente(javascript).pdf">Interno</tipo>
<idioma>Español</idioma>
<contenido>Javascript</contenido>
<version/>
<unidad>Unidad 3</unidad>
</recurso>
<recurso>
<descripcion>Práctica Javascript</descripcion>
<tipo fichero="PracticaPI_JAVASCRIPT_200910.pdf">Interno</tipo>
<idioma>Español</idioma>
<contenido>Javascript</contenido>
<version/>
<unidad>Unidad 3</unidad>
</recurso>
</recursos>
Lo primero que tengo que hacer es una ordenación de este xml en otro xml, lo he hecho con el siguiente código, me lo ordena pero se pierde la estructura.
Código:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0"
>
<xsl:output method="xml" version="1.0" encoding="utf-8"
standalone="no" doctype-system="recursos.dtd"/>
<xsl:template match="/">
<xsl:apply-templates select="recursos/recurso">
<xsl:sort select="unidad" order="ascending"/>
<xsl:sort select="contenido" order="ascending"/>
<xsl:sort select="tipo" order="descending"/>
</xsl:apply-templates>
</xsl:template>
</xsl:stylesheet>
No se que estará mal, me muestra los datos ordenados de cada recurso, pero no me sale la estructura, solo los datos.