Foros del Web » Programación para mayores de 30 ;) » Programación General »

Transformar xml con xsl

Estas en el tema de Transformar xml con xsl en el foro de Programación General en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 28/08/2014, 06:33
 
Fecha de Ingreso: agosto-2014
Mensajes: 26
Antigüedad: 10 años, 4 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.

Etiquetas: java, transformar, xml, xsl
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:16.