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

XML archivos

Estas en el tema de XML archivos en el foro de Programación General en Foros del Web. hola q tal, soy nuevo por aqui y pues tengo unas dudas. Resulta q tengo 2 archivos XML y tengo q mostarlos en HTML, se ...
  #1 (permalink)  
Antiguo 24/05/2008, 16:31
 
Fecha de Ingreso: mayo-2008
Mensajes: 2
Antigüedad: 16 años
Puntos: 0
XML archivos

hola q tal, soy nuevo por aqui y pues tengo unas dudas.

Resulta q tengo 2 archivos XML y tengo q mostarlos en HTML, se q para esto se necesita un archivo XSL, pero no se como hacerlo. para q quede mas claro tengo esto:

alumno.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE alumnos SYSTEM "alumno.dtd">



<alumnos>

<alumno NIA="A200087542" titulacion="ITT">
<nombre>Antonio</nombre>
<apellido1>Fernández</apellido1>
<apellido2>Pérez</apellido2>

<asignaturas>
<asignatura convocatoria="03" codigo="IIT-LST"/>
<asignatura convocatoria="02" codigo="IIT-Alg"/>
<asignatura convocatoria="01" codigo="IIT-FisII"/>
<asignatura convocatoria="04" codigo="IIT-AO"/>
<asignatura convocatoria="01" codigo="IIT-Opt"/>
<asignatura convocatoria="01" codigo="IIT-IT"/>
</asignaturas>
</alumno>

<alumno NIA="A200012785" titulacion="ITT">
<nombre>María</nombre>
<apellido1>Pernas</apellido1>
<apellido2>Casado</apellido2>

<asignaturas>
<asignatura convocatoria="01" codigo="IIT-FisI"/>
<asignatura convocatoria="02" codigo="IIT-FisII"/>
<asignatura convocatoria="01" codigo="IIT-MatD"/>
<asignatura convocatoria="01" codigo="IIT-FIA"/>
<asignatura convocatoria="01" codigo="IIT-SCom"/>
<asignatura convocatoria="02" codigo="IIT-ED"/>
</asignaturas>
</alumno>

<alumno NIA="A300013425" titulacion="IIf">
<nombre>Erik</nombre>
<apellido1>Schredeoder</apellido1>

<asignaturas>
<asignatura convocatoria="03" codigo="IIf-TeII"/>
<asignatura convocatoria="01" codigo="IIf-Alg"/>
<asignatura convocatoria="01" codigo="IIf-ISI"/>
<asignatura convocatoria="02" codigo="IIf-ED"/>
<asignatura convocatoria="05" codigo="IIf-RC"/>
<asignatura convocatoria="04" codigo="IIf-IAI"/>
</asignaturas>
</alumno>

<alumno NIA="A200065134" titulacion="IT">
<nombre>Laura</nombre>
<apellido1>Rodríguez</apellido1>
<apellido2>Cuevas</apellido2>

<asignaturas>
<asignatura convocatoria="03" codigo="IT-TCom"/>
<asignatura convocatoria="01" codigo="IT-TDig"/>
<asignatura convocatoria="02" codigo="IT-AOII"/>
<asignatura convocatoria="01" codigo="IT-Ant"/>
<asignatura convocatoria="02" codigo="IT-TSF"/>
<asignatura convocatoria="02" codigo="IT-SC"/>
</asignaturas>
</alumno>
</alumnos>


y tambien tengo este archivo asisgnaturas.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE asignaturas SYSTEM "asignaturas.dtd">
<?xml-stylesheet type="text/xsl" href="salida.xsl"?>
<asignaturas>

<asignatura codigo="IIT-LST">
<nombre>Laboratorio de Sistemas Telemáticos</nombre>
<coordinador NIP="P500012345"/>
</asignatura>

<asignatura codigo="IIT-Alg">
<nombre>Algebra</nombre>
<coordinador NIP="P500056341"/>
</asignatura>

<asignatura codigo="IIT-FisII">
<nombre>Física II</nombre>
<coordinador NIP="P500021734"/>
</asignatura>

<asignatura codigo="IIT-AO">
<nombre>Arquitectura de Ordenadores</nombre>
<coordinador NIP="P500095634"/>
</asignatura>

<asignatura codigo="IIT-Opt">
<nombre>Óptica</nombre>
<coordinador NIP="P500043521"/>
</asignatura>

<asignatura codigo="IIT-IT">
<nombre>Inglés Técnico</nombre>
<coordinador NIP="P500026534"/>
</asignatura>

<asignatura codigo="IIT-FisI">
<nombre>Física I</nombre>
<coordinador NIP="P500021735"/>
</asignatura>

<asignatura codigo="IIT-MatD">
<nombre>Matemática Discreta</nombre>
<coordinador NIP="P500017253"/>
</asignatura>

<asignatura codigo="IIT-FIA">
<nombre>Fundamentos de Inteligencia Artificial</nombre>
<coordinador NIP="P500023785"/>
</asignatura>

<asignatura codigo="IIT-SCom">
<nombre>Sistemas de Comunicación</nombre>
<coordinador NIP="P500031635"/>
</asignatura>

<asignatura codigo="IIT-ED">
<nombre>Electrónica de Dispositivos</nombre>
<coordinador NIP="P500043142"/>
</asignatura>

<asignatura codigo="IIf-TeII">
<nombre>Telemática II</nombre>
<coordinador NIP="P500026229"/>
</asignatura>

<asignatura codigo="IIf-Alg">
<nombre>Algebra</nombre>
<coordinador NIP="P500011296"/>
</asignatura>

<asignatura codigo="IIf-ISI">
<nombre>Ingeniería del Software I</nombre>
<coordinador NIP="P500021441"/>
</asignatura>

<asignatura codigo="IIf-ED">
<nombre>Estructuras de Datos</nombre>
<coordinador NIP="P500032613"/>
</asignatura>

<asignatura codigo="IIf-RC">
<nombre>Redes de Comunicación</nombre>
<coordinador NIP="P500022117"/>
</asignatura>

<asignatura codigo="IIf-IAI">
<nombre>Inteligencia Artifical I</nombre>
<coordinador NIP="P500001563"/>
</asignatura>

<asignatura codigo="IT-TCom">
<nombre>Teoría de la Comunicación</nombre>
<coordinador NIP="P500033124"/>
</asignatura>

<asignatura codigo="IT-TDig">
<nombre>Transmisión Digital</nombre>
<coordinador NIP="P500052342"/>
</asignatura>

<asignatura codigo="IT-AOII">
<nombre>Arquitectura de Ordenadores II</nombre>
<coordinador NIP="P500026887"/>
</asignatura>

<asignatura codigo="IT-Ant">
<nombre>Antenas</nombre>
<coordinador NIP="P500037987"/>
</asignatura>

<asignatura codigo="IT-TSF">
<nombre>Transmisión por Soporte Físico</nombre>
<coordinador NIP="P500009854"/>
</asignatura>

<asignatura codigo="IT-SC">
<nombre>Sistemas de Conmutación</nombre>
<coordinador NIP="P500019921"/>
</asignatura>
</asignaturas>

------------------------------------------------------

Mi duda es como hacer el XSL y hacer q los atributos q tienen en comun los XML se relacionen.

ESpero alguien me pueda ayudar. gracias de antemano
  #2 (permalink)  
Antiguo 02/06/2008, 19:23
 
Fecha de Ingreso: septiembre-2007
Mensajes: 52
Antigüedad: 16 años, 7 meses
Puntos: 2
Respuesta: ayuda urgente!!! XML archivos

Cita:
Iniciado por NemesisFF Ver Mensaje
Mi duda es como hacer el XSL y hacer q los atributos q tienen en comun los XML se relacionen.
Puede hacerse de muchas maneras, pero los detalles dependen de qué es lo que exactamente necesitas.

Si estás empezando con XSLT y aun no conoces muy bien la forma en que se escriben las plantillas XSL, te recomiendo que te tomes el tiempo para buscar y leer información sobre estos temas, me parece que vale mucho la pena.

Bueno, como no das más detalles sobre tu problema, voy a asumir que quieres hacer algo como presentar una lista de las asignaturas en tu HTML, y que para cada asignatura aparezca p.ej. la lista de alumnos asociados con esa asignatura.

Por el modo en que tienes organizada la información (con dos archivos: alumno.xml y asignaturas.xml), algunos elementos clave en tu XSL serían:
  • Cargar los datos XML del segundo archivo con la función document(). En este caso, como asignaturas.xml tiene una directiva <?xml-stylesheet?> vamos a asumir que quieres escribir salida.xsl, que está asociada con asignaturas.xml, y por lo tanto necesitas cargar el archivo alumno.xml desde esa plantilla.

    En este caso, la forma de asociar una variable con tu archivo externo sería algo como:
    Código:
    <xsl:variable name="alumnos" select="document('alumno.xml')" />
    
  • Escribir una plantilla en donde cada elemento <asignatura> de asignaturas.xml sea procesado.
  • Para cada asignatura, hay que recuperar la lista de elementos <alumno> en alumno.xml que estén asociados con la asignatura actual. Para esto, primero vamos a tomar el atributo 'codigo' de cada asignatura y almacenarlo en una variable. Esto se vería algo así:
    Código:
    <xsl:variable name="cod" select="@codigo" />
    
  • Finalmente se buscan elementos bajo el árbol XML almacenado en la variable $alumnos, y que contengan asignaturas que coincidan con el código correspondiente que almacenamos en $cod. Esto podría hacerse de esta forma:
    Código:
    <xsl:for-each select="$alumnos/alumnos/alumno[asignaturas/asignatura/@codigo=$cod]">
      <!-- Aqui se imprime la informacion de cada 'alumno' -->
    </xsl:for-each>
    

El código de salida.xsl en su totalidad sería entonces algo así:

Código:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                version="1.0">

  <xsl:variable name="alumnos" select="document('alumno.xml')" />

  <xsl:template match="/asignaturas">
    <html>
      <head>
        <title>Ejemplo de relaciones en XML</title>
      </head>
      <body>

        <h1>Asignaturas</h1>

        <xsl:apply-templates select="asignatura" />

      </body>
    </html>
  </xsl:template>

  <xsl:template match="asignatura">

    <p>Nombre: <strong><xsl:value-of select="nombre" /></strong></p>
    <p>Alumnos:</p>


    <ul>
      <xsl:variable name="cod" select="@codigo" />

      <xsl:for-each select="$alumnos/alumnos/alumno[asignaturas/asignatura/@codigo=$cod]">
        <li>
          <xsl:value-of select="nombre" />
          <xsl:text> </xsl:text>
          <xsl:value-of select="apellido1" />
          <xsl:text> </xsl:text>
          <xsl:value-of select="apellido2" />
        </li>
      </xsl:for-each>
    </ul>

    <hr />
  </xsl:template>

</xsl:stylesheet>
Espero que con esto puedas hacerte una idea de cómo es el proceso y puedas refinarlo de acuerdo a tus necesidades.
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 09:28.