XSL - Dos xml en uno. Como se hace el xsl?

 
Vista:

Dos xml en uno. Como se hace el xsl?

Publicado por Manuel (1 intervención) el 27/05/2011 02:00:19
Bueno pues mi problema es que tengo que meter dos archivos xml(unas elecciones de valencia de 2007 y de 2011) en una web igual que lo tiene la pagina del www.elpais.com y hasta ahora solo he podido hacerlo con un documento xml.

El xsl:


<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="escrutinio_sitio">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body>
<h2>

Elecciones 2011 en: <xsl:value-of select="nombre_sitio"/>

<br/>

Porcentaje Escrutado: <xsl:value-of select="porciento_escrutado"/> %

</h2>
<br/>
<table border="0">
<tr>
<td valing="center">
<table border="2">
<tr>
<th> Nombre del partido</th>
<th>Numero de Votos</th>
<th>Votos tanto por ciento </th>
</tr>
<xsl:for-each select="resultados/partido">
<tr>
<td>
<xsl:value-of select="nombre"/>
</td>
<td>
<xsl:value-of select="votos_numero"/>
</td>
<td><xsl:value-of select="votos_porciento"/> %</td>
</tr>
</xsl:for-each>
</table>
</td>
<td valign="center">
<table border="2">
<tr>
<th colspan="3"> Resumen Del Escrutinio de <xsl:value-of select="nombre_sitio"/></th>
</tr>
<xsl:for-each select="votos/contabilizados">
<tr>
<td>Votos Contabilizados</td>
<td>
<xsl:value-of select="cantidad"/>
</td>
<td><xsl:value-of select="porcentaje"/> %</td>
</tr>
</xsl:for-each>
<xsl:for-each select="votos/abstenciones">
<tr>
<td>Abstenciones</td>
<td>
<xsl:value-of select="cantidad"/>
</td>
<td><xsl:value-of select="porcentaje"/> %</td>
</tr>
</xsl:for-each>
<xsl:for-each select="votos/nulos">
<tr>
<td>Votos Nulos</td>
<td>
<xsl:value-of select="cantidad"/>
</td>
<td><xsl:value-of select="porcentaje"/> %</td>
</tr>
</xsl:for-each>
<xsl:for-each select="votos/blancos">
<tr>
<td>Votos en Blanco</td>
<td>
<xsl:value-of select="cantidad"/>
</td>
<td><xsl:value-of select="porcentaje"/> %</td>
</tr>
</xsl:for-each>
</table>
</td>
</tr>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

El xml 1:


<?xml version="1.0" encoding="UTF-8"?>
<escrutinio_sitio>
<num_a_elegir>33</num_a_elegir>
<nombre_lugar>Ayuntamiento</nombre_lugar>
<nombre_disputado>concejales</nombre_disputado>
<porciento_escrutado>100</porciento_escrutado>
<nombre_sitio>Valencia</nombre_sitio>
<ts>1306121338</ts>
<tipo_sitio>5</tipo_sitio>
<votos>
<contabilizados>
<cantidad>402400</cantidad>
<porcentaje>69.41</porcentaje>
</contabilizados>
<abstenciones>
<cantidad>177333</cantidad>
<porcentaje>30.59</porcentaje>
</abstenciones>
<nulos>
<cantidad>5144</cantidad>
<porcentaje>1.28</porcentaje>
</nulos>
<blancos>
<cantidad>8661</cantidad>
<porcentaje>2.18</porcentaje>
</blancos>
</votos>
<resultados>
<numero_partidos>24</numero_partidos>
<partido>
<id_partido>3077</id_partido>
<nombre>PP</nombre>
<electos>20</electos>
<votos_numero>208727</votos_numero>
<votos_porciento>52.54</votos_porciento>
</partido>
<partido>
<id_partido>3188</id_partido>
<nombre>PSOE</nombre>
<electos>8</electos>
<votos_numero>86440</votos_numero>
<votos_porciento>21.76</votos_porciento>
</partido>
<partido>
<id_partido>1368</id_partido>
<nombre>C.M. COMPROMÍS</nombre>
<electos>3</electos>
<votos_numero>35881</votos_numero>
<votos_porciento>9.03</votos_porciento>
</partido>
<partido>
<id_partido>1657</id_partido>
<nombre>EUPV</nombre>
<electos>2</electos>
<votos_numero>28489</votos_numero>
<votos_porciento>7.17</votos_porciento>
</partido>
<partido>
<id_partido>3780</id_partido>
<nombre>UPyD</nombre>
<electos>0</electos>
<votos_numero>11243</votos_numero>
<votos_porciento>2.83</votos_porciento>
</partido>
<partido>
<id_partido>3906</id_partido>
<nombre>VERDS</nombre>
<electos>0</electos>
<votos_numero>5177</votos_numero>
<votos_porciento>1.3</votos_porciento>
</partido>
<partido>
<id_partido>1311</id_partido>
<nombre>CVa</nombre>
<electos>0</electos>
<votos_numero>2219</votos_numero>
<votos_porciento>0.56</votos_porciento>
</partido>
<partido>
<id_partido>1538</id_partido>
<nombre>ESPAÑA 2000</nombre>
<electos>0</electos>
<votos_numero>1920</votos_numero>
<votos_porciento>0.48</votos_porciento>
</partido>
<partido>
<id_partido>2876</id_partido>
<nombre>PACMA</nombre>
<electos>0</electos>
<votos_numero>1771</votos_numero>
<votos_porciento>0.45</votos_porciento>
</partido>
<partido>
<id_partido>1645</id_partido>
<nombre>ESQUERRA-AM</nombre>
<electos>0</electos>
<votos_numero>980</votos_numero>
<votos_porciento>0.25</votos_porciento>
</partido>
<partido>
<id_partido>3438</id_partido>
<nombre>PUM+J</nombre>
<electos>0</electos>
<votos_numero>752</votos_numero>
<votos_porciento>0.19</votos_porciento>
</partido>
<partido>
<id_partido>3861</id_partido>
<nombre>UxV</nombre>
<electos>0</electos>
<votos_numero>690</votos_numero>
<votos_porciento>0.17</votos_porciento>
</partido>
<partido>
<id_partido>2982</id_partido>
<nombre>PFyV</nombre>
<electos>0</electos>
<votos_numero>511</votos_numero>
<votos_porciento>0.13</votos_porciento>
</partido>
<partido>
<id_partido>2987</id_partido>
<nombre>PH</nombre>
<electos>0</electos>
<votos_numero>488</votos_numero>
<votos_porciento>0.12</votos_porciento>
</partido>
<partido>
<id_partido>1140</id_partido>
<nombre>C.D.L.</nombre>
<electos>0</electos>
<votos_numero>482</votos_numero>
<votos_porciento>0.12</votos_porciento>
</partido>
<partido>
<id_partido>2896</id_partido>
<nombre>PCPE</nombre>
<electos>0</electos>
<votos_numero>443</votos_numero>
<votos_porciento>0.11</votos_porciento>
</partido>
<partido>
<id_partido>2922</id_partido>
<nombre>PDMA</nombre>
<electos>0</electos>
<votos_numero>387</votos_numero>
<votos_porciento>0.1</votos_porciento>
</partido>
<partido>
<id_partido>1425</id_partido>
<nombre>DN</nombre>
<electos>0</electos>
<votos_numero>343</votos_numero>
<votos_porciento>0.09</votos_porciento>
</partido>
<partido>
<id_partido>2910</id_partido>
<nombre>Pdex</nombre>
<electos>0</electos>
<votos_numero>314</votos_numero>
<votos_porciento>0.08</votos_porciento>
</partido>
<partido>
<id_partido>3652</id_partido>
<nombre>U.C.E.</nombre>
<electos>0</electos>
<votos_numero>295</votos_numero>
<votos_porciento>0.07</votos_porciento>
</partido>
<partido>
<id_partido>3576</id_partido>
<nombre>SOSDM</nombre>
<electos>0</electos>
<votos_numero>277</votos_numero>
<votos_porciento>0.07</votos_porciento>
</partido>
<partido>
<id_partido>1562</id_partido>
<nombre>ENV-RV/PVE</nombre>
<electos>0</electos>
<votos_numero>275</votos_numero>
<votos_porciento>0.07</votos_porciento>
</partido>
<partido>
<id_partido>2631</id_partido>
<nombre>LA REPÚBLICA</nombre>
<electos>0</electos>
<votos_numero>271</votos_numero>
<votos_porciento>0.07</votos_porciento>
</partido>
<partido>
<id_partido>1697</id_partido>
<nombre>FA</nombre>
<electos>0</electos>
<votos_numero>220</votos_numero>
<votos_porciento>0.06</votos_porciento>
</partido>
</resultados>
</escrutinio_sitio>

El xml 2:



<?xml version="1.0" encoding="UTF-8"?>
<escrutinio_sitio>
<num_a_elegir>33</num_a_elegir>
<nombre_lugar>Ayuntamiento</nombre_lugar>
<nombre_disputado>concejales</nombre_disputado>
<porciento_escrutado>100</porciento_escrutado>
<nombre_sitio>Valencia</nombre_sitio>
<ts>0</ts>
<tipo_sitio>5</tipo_sitio>
<votos>
<contabilizados>
<cantidad>416802</cantidad>
<porcentaje>68.44</porcentaje>
</contabilizados>
<abstenciones>
<cantidad>192174</cantidad>
<porcentaje>31.56</porcentaje>
</abstenciones>
<nulos>
<cantidad>1820</cantidad>
<porcentaje>0.44</porcentaje>
</nulos>
<blancos>
<cantidad>5644</cantidad>
<porcentaje>1.36</porcentaje>
</blancos>
</votos>
<resultados>
<numero_partidos>15</numero_partidos>
<partido>
<id_partido>201</id_partido>
<nombre>PP</nombre>
<electos>21</electos>
<votos_numero>235158</votos_numero>
<votos_porciento>56.67</votos_porciento>
</partido>
<partido>
<id_partido>270</id_partido>
<nombre>PSOE</nombre>
<electos>12</electos>
<votos_numero>140187</votos_numero>
<votos_porciento>33.78</votos_porciento>
</partido>
<partido>
<id_partido>3694</id_partido>
<nombre>EUPV-VERDS-IR:ACORD</nombre>
<electos>0</electos>
<votos_numero>19808</votos_numero>
<votos_porciento>4.77</votos_porciento>
</partido>
<partido>
<id_partido>3631</id_partido>
<nombre>CVa</nombre>
<electos>0</electos>
<votos_numero>5615</votos_numero>
<votos_porciento>1.35</votos_porciento>
</partido>
<partido>
<id_partido>1308</id_partido>
<nombre>UV-LVE</nombre>
<electos>0</electos>
<votos_numero>3279</votos_numero>
<votos_porciento>0.79</votos_porciento>
</partido>
<partido>
<id_partido>1333</id_partido>
<nombre>ESQUERRA-AM</nombre>
<electos>0</electos>
<votos_numero>1070</votos_numero>
<votos_porciento>0.26</votos_porciento>
</partido>
<partido>
<id_partido>922</id_partido>
<nombre>E-2000</nombre>
<electos>0</electos>
<votos_numero>775</votos_numero>
<votos_porciento>0.19</votos_porciento>
</partido>
<partido>
<id_partido>260</id_partido>
<nombre>PUM+J</nombre>
<electos>0</electos>
<votos_numero>650</votos_numero>
<votos_porciento>0.16</votos_porciento>
</partido>
<partido>
<id_partido>3728</id_partido>
<nombre>MPCL</nombre>
<electos>0</electos>
<votos_numero>546</votos_numero>
<votos_porciento>0.13</votos_porciento>
</partido>
<partido>
<id_partido>475</id_partido>
<nombre>PSD</nombre>
<electos>0</electos>
<votos_numero>539</votos_numero>
<votos_porciento>0.13</votos_porciento>
</partido>
<partido>
<id_partido>3729</id_partido>
<nombre>CI.CA</nombre>
<electos>0</electos>
<votos_numero>504</votos_numero>
<votos_porciento>0.12</votos_porciento>
</partido>
<partido>
<id_partido>353</id_partido>
<nombre>PCPE</nombre>
<electos>0</electos>
<votos_numero>370</votos_numero>
<votos_porciento>0.09</votos_porciento>
</partido>
<partido>
<id_partido>3696</id_partido>
<nombre>UxV</nombre>
<electos>0</electos>
<votos_numero>369</votos_numero>
<votos_porciento>0.09</votos_porciento>
</partido>
<partido>
<id_partido>433</id_partido>
<nombre>DN</nombre>
<electos>0</electos>
<votos_numero>255</votos_numero>
<votos_porciento>0.06</votos_porciento>
</partido>
<partido>
<id_partido>262</id_partido>
<nombre>PH</nombre>
<electos>0</electos>
<votos_numero>213</votos_numero>
<votos_porciento>0.05</votos_porciento>
</partido>
</resultados>
</escrutinio_sitio>

He empezado a hacer un nuevo xml de donde me diriga a los dos aqui arriba expuestos


<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="3.xsl"?>
<indice>
<titulo>Elecciones</titulo>
<faño>Valencia2007</faño>
<faño>Valencia2011</faño>

</indice>

Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Transformación de Resultados Electorales

Publicado por Alejandro (227 intervenciones) el 07/07/2023 00:36:21
El problema que planteas consiste en la necesidad de transformar dos archivos XML que contienen los resultados de las elecciones de Valencia en los años 2007 y 2011, respectivamente, en un formato similar al utilizado en el sitio web de El País ([url]www.elpais.com[/url]). Hasta ahora, solo has logrado realizar esta transformación con un documento XML.

Aquí tienes una solución general utilizando XSLT (Extensible Stylesheet Language Transformations) para la transformación de los archivos XML de elecciones:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:template match="/">
    <html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
      </head>
      <body>
        <xsl:apply-templates select="escrutinio_sitio"/>
      </body>
    </html>
  </xsl:template>
 
  <xsl:template match="escrutinio_sitio">
    <h2>
      Elecciones <xsl:value-of select="substring(nombre_sitio, string-length(nombre_sitio) - 3)"/> en: <xsl:value-of select="nombre_sitio"/>
      <br/>
      Porcentaje Escrutado: <xsl:value-of select="porciento_escrutado"/> %
    </h2>
    <br/>
    <table border="0">
      <tr>
        <td valing="center">
          <table border="2">
            <tr>
              <th>Nombre del partido</th>
              <th>Número de Votos</th>
              <th>Votos tanto por ciento</th>
            </tr>
            <xsl:for-each select="resultados/partido">
              <tr>
                <td>
                  <xsl:value-of select="nombre"/>
                </td>
                <td>
                  <xsl:value-of select="votos_numero"/>
                </td>
                <td>
                  <xsl:value-of select="votos_porciento"/> %
                </td>
              </tr>
            </xsl:for-each>
          </table>
        </td>
        <td valign="center">
          <table border="2">
            <tr>
              <th colspan="3">Resumen Del Escrutinio de <xsl:value-of select="nombre_sitio"/></th>
            </tr>
            <xsl:for-each select="votos/contabilizados">
              <tr>
                <td>Votos Contabilizados</td>
                <td>
                  <xsl:value-of select="cantidad"/>
                </td>
                <td>
                  <xsl:value-of select="porcentaje"/> %
                </td>
              </tr>
            </xsl:for-each>
            <xsl:for-each select="votos/abstenciones">
              <tr>
                <td>Abstenciones</td>
                <td>
                  <xsl:value-of select="cantidad"/>
                </td>
                <td>
                  <xsl:value-of select="porcentaje"/> %
                </td>
              </tr>
            </xsl:for-each>
            <xsl:for-each select="votos/nulos">
              <tr>
                <td>Votos Nulos</td>
                <td>
                  <xsl:value-of select="cantidad"/>
                </td>
                <td>
                  <xsl:value-of select="porcentaje"/> %
                </td>
              </tr>
            </xsl:for-each>
            <xsl:for-each select="votos/blancos">
              <tr>
                <td>Votos en Blanco</td>
                <td>
                  <xsl:value-of select="cantidad"/>
                </td>
                <td>
                  <xsl:value-of select="porcentaje"/> %
                </td>
              </tr>
            </xsl:for-each>
          </table>
        </td>
      </tr>
    </table>
  </xsl:template>
</xsl:stylesheet>

Puedes utilizar este código XSLT para transformar tanto el archivo XML de las elecciones de 2007 como el de 2011. El resultado será un archivo HTML que sigue un formato similar al de la página de El País, mostrando los resultados de las elecciones en una estructura de tabla con los diferentes partidos y sus respectivos votos.

Ten en cuenta que este código XSLT asume que los archivos XML de las elecciones de 2007 y 2011 tienen una estructura similar a la que has proporcionado en el primer XML. Asegúrate de que tus archivos XML cumplan con esa estructura para obtener los resultados deseados.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar