Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/08/2014, 06:33
Perar
 
Fecha de Ingreso: agosto-2014
Mensajes: 26
Antigüedad: 9 años, 9 meses
Puntos: 0
Transformar xml con xsl

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.