Jump to content
kareka

Transformações XSLT

Recommended Posts

kareka

Boas pessoal,

Tenho o seguinte documento XML:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="condos_transform.xslt"?>
<Condominios lang="PT" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="condos_schema.xsd">
<!--Autores:-->
<!--1090593 - João Magalhães-->
<!--1090625 - Mário Nogueira-->
<!--Data da última alteração: 25 de Maio de 2011-->
<!--Inicio ficheiro XML para informação de condominíos - 2ª copia para transformação-->
    <!--                                                                                                 Condominio 1-->
    <Condominio id="1">
      <Morada>
        <Rua>Rua da Praia</Rua>
        <Numero>12</Numero>
        <Codigopostal>2144-543</Codigopostal>
      </Morada>
      <Caracteristicas>
        <Listagem>
          <item>Vista para o mar</item>
          <item>Bem localizado</item>
        </Listagem>
      </Caracteristicas>
      <!--                                                                                                 Prédio 1-->
      <Predio id="1">
        <Caracteristicas>
          <Listagem>
            <item>Parque para crianças</item>
          </Listagem>
        </Caracteristicas>
        <Fraccoes>
          <!--                                                                                                 Fracção 1-->
          <Fraccao id="1">
            <Morada>
              <Rua>Rua da Praia</Rua>
              <Numero>12</Numero>
              <Andar>1º E</Andar>
              <Codigopostal>2144-543</Codigopostal>
            </Morada>
            <Valor>500€</Valor>
            <Tipo>Apartamento</Tipo>
            <Proprietario bi="141242141">
              <Morada>
                <Rua>Rua das Andorinhas</Rua>
                <Numero>34</Numero>
                <Codigopostal>5345-345</Codigopostal>
              </Morada>
              <Nome>Callum Ormond</Nome>
              <DataNascimento>
                <Dia>12</Dia>
                <Mes>05</Mes>
                <Ano>1989</Ano>
              </DataNascimento>
              <Contactos>
                <Telefone>225463958</Telefone>
                <Email>callum@mail.pt</Email>
              </Contactos>
            </Proprietario>
          </Fraccao>
        </Fraccoes>
      </Predio>
      <!--                                                                                                 Prédio 2-->
      <Predio id="2">
        <Caracteristicas>
          <Listagem>
            <item>Parque para crianças</item>
          </Listagem>
        </Caracteristicas>
        <Fraccoes>
          <!--                                                                                                 Fracção 1-->
          <Fraccao id="1">
            <Morada>
              <Rua>Rua da Praia</Rua>
              <Numero>12</Numero>
              <Andar>1º E</Andar>
              <Codigopostal>2144-543</Codigopostal>
            </Morada>
            <Valor>500€</Valor>
            <Tipo>Apartamento</Tipo>
            <Proprietario bi="52353453">
              <Morada>
                <Rua>Rua da Muralha</Rua>
                <Numero>230</Numero>
                <Codigopostal>4470-405</Codigopostal>
              </Morada>
              <Nome>Jackie Chan</Nome>
              <DataNascimento>
                <Dia>20</Dia>
                <Mes>11</Mes>
                <Ano>1976</Ano>
              </DataNascimento>
              <Contactos>
                <Telefone>5554567</Telefone>
                <Email>jakie@china.pt</Email>
              </Contactos>
            </Proprietario>
          </Fraccao>
          <!--                                                                                                 Fracção 2-->
          <Fraccao id="2">
            <Morada>
              <Rua>Rua da Praia</Rua>
              <Numero>12</Numero>
              <Andar>1º E</Andar>
              <Codigopostal>2144-543</Codigopostal>
            </Morada>
            <Valor>200€</Valor>
            <Tipo>Garagem</Tipo>
            <Proprietario bi="34534534">
              <Morada>
                <Rua>Rua das Abóboras</Rua>
                <Numero>102</Numero>
                <Codigopostal>3242-670</Codigopostal>
              </Morada>
              <Nome>John Smith</Nome>
              <DataNascimento>
                <Dia>21</Dia>
                <Mes>12</Mes>
                <Ano>1979</Ano>
              </DataNascimento>
              <Contactos>
                <Telefone>213423678</Telefone>
                <Email>j.smith@mail.pt</Email>
              </Contactos>
            </Proprietario>
          </Fraccao>
        </Fraccoes>
      </Predio>
      <!--                                                                                                 Armazém 1-->
      <Armazem id="1">
        <Area>250</Area>
        <Caracteristicas>
          <Listagem>
            <item>Espaçoso</item>
            <item>Zona de cargas e descargas</item>
          </Listagem>
        </Caracteristicas>
        <Fim>Alugar</Fim>
        <Proprietario bi="234240567">
          <Morada>
            <Rua>Rua da Engenharia</Rua>
            <Numero>497</Numero>
            <Codigopostal>5497-156</Codigopostal>
          </Morada>
          <Nome>Barak Obama</Nome>
          <DataNascimento>
            <Dia>25</Dia>
            <Mes>12</Mes>
            <Ano>1943</Ano>
          </DataNascimento>
          <Contactos>
            <Telemovel>912345684</Telemovel>
            <Email>barak.obama@nba.com</Email>
          </Contactos>
        </Proprietario>
      </Armazem>
    </Condominio>
    <!--                                                                                                 Condominio 2-->
    <Condominio id="2">
      <Morada>
        <Rua>Rua do Relógio</Rua>
        <Numero>99</Numero>
        <Codigopostal>6590-234</Codigopostal>
      </Morada>
      <Caracteristicas>
        <Listagem>
          <item>Vista para Big Ben</item>
          <item>Perto de transportes</item>
        </Listagem>
      </Caracteristicas>
      <!--                                                                                                 Prédio 1-->
      <Predio id="1">
        <Caracteristicas>
          <Listagem>
            <item>Ginásio no rés-do-chão</item>
          </Listagem>
        </Caracteristicas>
        <Fraccoes>
          <!--                                                                                                 Fracção 1-->
          <Fraccao id="1">
            <Morada>
              <Rua>Rua do Relógio</Rua>
              <Numero>99</Numero>
              <Andar>RC</Andar>
              <Codigopostal>6590-234</Codigopostal>
            </Morada>
            <Valor>1000€</Valor>
            <Tipo>Comércio</Tipo>
            <Proprietario bi="344567086">
              <Morada>
                <Rua>Rua dos Anjos</Rua>
                <Numero>56</Numero>
                <Codigopostal>2130-123</Codigopostal>
              </Morada>
              <Nome>Boges Foot</Nome>
              <DataNascimento>
                <Dia>06</Dia>
                <Mes>07</Mes>
                <Ano>1991</Ano>
              </DataNascimento>
              <Contactos>
                <Telefone>23756878</Telefone>
                <Email>boges@mail.pt</Email>
              </Contactos>
            </Proprietario>
          </Fraccao>
        </Fraccoes>
      </Predio>
      <!--                                                                                                 Prédio 2-->
      <Predio id="2">
        <Caracteristicas>
          <Listagem>
            <item>Acesso a cormércio local</item>
          </Listagem>
        </Caracteristicas>
        <Fraccoes>
          <!--                                                                                                 Fracção 1-->
          <Fraccao id="1">
            <Morada>
              <Rua>Rua das Horas</Rua>
              <Numero>32</Numero>
              <Andar>2º E</Andar>
              <Codigopostal>3456-007</Codigopostal>
            </Morada>
            <Valor>375€</Valor>
            <Tipo>Apartamento</Tipo>
            <Proprietario bi="56756765">
              <Morada>
                <Rua>Rua de Los Angeles</Rua>
                <Numero>125</Numero>
                <Codigopostal>2355-235</Codigopostal>
              </Morada>
              <Nome>Kobe Bryant</Nome>
              <DataNascimento>
                <Dia>12</Dia>
                <Mes>01</Mes>
                <Ano>1986</Ano>
              </DataNascimento>
              <Contactos>
                <Telefone>4364576</Telefone>
                <Email>k-bryant@lakers.pt</Email>
              </Contactos>
            </Proprietario>
          </Fraccao>
          <!--                                                                                                 Fracção 2-->
          <Fraccao id="2">
            <Morada>
              <Rua>Rua dos Segundos</Rua>
              <Numero>3464</Numero>
              <Andar>RC D</Andar>
              <Codigopostal>4536-790</Codigopostal>
            </Morada>
            <Valor>250€</Valor>
            <Tipo>Apartamento</Tipo>
            <Proprietario bi="346346343">
              <Morada>
                <Rua>Rua do General</Rua>
                <Numero>78</Numero>
                <Codigopostal>4770-048</Codigopostal>
              </Morada>
              <Nome>Hitler</Nome>
              <DataNascimento>
                <Dia>26</Dia>
                <Mes>12</Mes>
                <Ano>1949</Ano>
              </DataNascimento>
              <Contactos>
                <Telefone>344647543</Telefone>
                <Email>hitler@kill.pt</Email>
              </Contactos>
            </Proprietario>
          </Fraccao>
        </Fraccoes>
      </Predio>
      <!--                                                                                                 Prédio 3-->
      <Predio id="3">
        <Caracteristicas>
          <Listagem>
            <item>Apartamentos de luxo</item>
          </Listagem>
        </Caracteristicas>
        <Fraccoes>
          <!--                                                                                                 Fracção 1-->
          <Fraccao id="1">
            <Morada>
              <Rua>Rua Fancy</Rua>
              <Numero>23</Numero>
              <Andar>12º E</Andar>
              <Codigopostal>3644-435</Codigopostal>
            </Morada>
            <Valor>1275€</Valor>
            <Tipo>Apartamento</Tipo>
            <Proprietario bi="2353253">
              <Morada>
                <Rua>Rua de Miami</Rua>
                <Numero>500</Numero>
                <Codigopostal>5556-334</Codigopostal>
              </Morada>
              <Nome>Horatio Cane</Nome>
              <DataNascimento>
                <Dia>05</Dia>
                <Mes>04</Mes>
                <Ano>1976</Ano>
              </DataNascimento>
              <Contactos>
                <Telefone>324364363</Telefone>
                <Email>cane@csi.pt</Email>
              </Contactos>
            </Proprietario>
          </Fraccao>
          <!--                                                                                                 Fracção 2-->
          <Fraccao id="2">
            <Morada>
              <Rua>Rua dos Segundos</Rua>
              <Numero>3464</Numero>
              <Andar>4º D</Andar>
              <Codigopostal>2242-098</Codigopostal>
            </Morada>
            <Valor>850€</Valor>
            <Tipo>Apartamento</Tipo>
            <Proprietario bi="12432563">
              <Morada>
                <Rua>Rua do Jardim</Rua>
                <Numero>86</Numero>
                <Codigopostal>5475-545</Codigopostal>
              </Morada>
              <Nome>Andrew Bruxe</Nome>
              <DataNascimento>
                <Dia>10</Dia>
                <Mes>09</Mes>
                <Ano>1967</Ano>
              </DataNascimento>
              <Contactos>
                <Telefone>224578657</Telefone>
                <Email>a.bruxe@mail.pt</Email>
              </Contactos>
            </Proprietario>
            <Inquilino bi="3534636334">
              <Nome>Chance Miller</Nome>
              <DataNascimento>
                <Dia>14</Dia>
                <Mes>02</Mes>
                <Ano>1945</Ano>
              </DataNascimento>
              <Contactos>
                <Telefone>3245346346</Telefone>
                <Email>miller@sorch.pt</Email>
              </Contactos>
            </Inquilino>
          </Fraccao>
        </Fraccoes>
      </Predio>
    </Condominio>
    <!--                                                                                                 Condominio 3-->
    <Condominio id="3">
      <Morada>
        <Rua>Rua das Ferramentas</Rua>
        <Numero>666</Numero>
        <Codigopostal>1214-309</Codigopostal>
      </Morada>
      <Caracteristicas>
        <Listagem>
          <item>Bem apertado</item>
          <item>Boa resistência</item>
        </Listagem>
      </Caracteristicas>
        <!--                                                                                                 Armazém 1-->
      <Armazem id="1">
        <Area>550</Area>
        <Caracteristicas>
          <Listagem>
            <item>Espaçoso</item>
            <item>Zona de cargas e descargas</item>
          </Listagem>
        </Caracteristicas>
        <Fim>Arrendar</Fim>
        <Proprietario bi="3252523">
          <Morada>
            <Rua>Rua do Fumo</Rua>
            <Numero>2023</Numero>
            <Codigopostal>3523-616</Codigopostal>
          </Morada>
          <Nome>Bob Marley</Nome>
          <DataNascimento>
            <Dia>26</Dia>
            <Mes>06</Mes>
            <Ano>1987</Ano>
          </DataNascimento>
          <Contactos>
            <Telemovel>204567845</Telemovel>
            <Email>marley@jamaica.com</Email>
          </Contactos>
        </Proprietario>
      </Armazem>
      <!--                                                                                                 Armazém 2-->
      <Armazem id="2">
        <Area>1250</Area>
        <Caracteristicas>
          <Listagem>
            <item>Espaçoso</item>
            <item>Zona de cargas e descargas</item>
          </Listagem>
        </Caracteristicas>
        <Fim>Vender</Fim>
        <Proprietario bi="2352352352">
          <Morada>
            <Rua>Rua da Banana</Rua>
            <Numero>497</Numero>
            <Codigopostal>1224-678</Codigopostal>
          </Morada>
          <Nome>King Kong</Nome>
          <DataNascimento>
            <Dia>11</Dia>
            <Mes>02</Mes>
            <Ano>1963</Ano>
          </DataNascimento>
          <Contactos>
            <Telemovel>913525384</Telemovel>
            <Email>king.kong@nyc.com</Email>
          </Contactos>
        </Proprietario>
      </Armazem>
      <!--                                                                                                 Armazém 3-->
      <Armazem id="3">
        <Area>600</Area>
        <Caracteristicas>
          <Listagem>
            <item>Espaçoso</item>
            <item>Zona de cargas e descargas</item>
          </Listagem>
        </Caracteristicas>
        <Fim>Alugar</Fim>
        <Proprietario bi="124124121">
          <Morada>
            <Rua>Avenida do Guarda-Chuvas</Rua>
            <Numero>131</Numero>
            <Codigopostal>4363-132</Codigopostal>
          </Morada>
          <Nome>António Seabra</Nome>
          <DataNascimento>
            <Dia>24</Dia>
            <Mes>02</Mes>
            <Ano>1985</Ano>
          </DataNascimento>
          <Contactos>
            <Telemovel>9123453352</Telemovel>
            <Email>avo.seabra@constituicao.com</Email>
          </Contactos>
        </Proprietario>
      </Armazem>
    </Condominio>
</Condominios>

E pretendo utilizar um outro ficheiro XSL para fazer uma transformação para um novo XML com a informação parcial do original.

O documento XSL é o seguinte:

<?xml version="1.0" encoding="UTF-8"?>
<!--Autores:-->
<!--1090593 - João Magalhães-->
<!--1090625 - Mário Nogueira-->
<!--Data da última alteração: 25 de Maio de 2011-->
<!--Inicio do ficheiro de tranformação XML para condos_donos.XML-->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

  <xsl:template match="/">
  <Proprietarios>
  <xsl:apply-templates select="//Proprietarios">
  <xsl:sort select="."/>
  </xsl:apply-templates>
  </Proprietarios>
  </xsl:template>
  
<xsl:template match="Proprietario">
    <xsl:element name="Proprietario">
      <xsl:attribute name="bi"><xsl:value-of select="@bi"/></xsl:attribute>
      <xsl:element name="Morada">
          <xsl:element name="Rua"><xsl:value-of select="."/></xsl:element>
          <xsl:element name="Numero"><xsl:value-of select="."/></xsl:element>
          <xsl:element name="Andar"><xsl:value-of select="."/></xsl:element>
          <xsl:element name="Codigopostal"><xsl:value-of select="."/></xsl:element>
      </xsl:element>
      <xsl:element name="Nome"><xsl:value-of select="."/></xsl:element>
      <xsl:element name="DataNascimento">
          <xsl:element name="Dia"><xsl:value-of select="."/></xsl:element>
          <xsl:element name="Mes"><xsl:value-of select="."/></xsl:element>
          <xsl:element name="Ano"><xsl:value-of select="."/></xsl:element>
      </xsl:element>
      <xsl:element name="Contactos">
          <xsl:element name="Telefone"><xsl:value-of select="."/></xsl:element>
          <xsl:element name="Telemovel"><xsl:value-of select="."/></xsl:element>
          <xsl:element name="Email"><xsl:value-of select="."/></xsl:element>
      </xsl:element>
    </xsl:element>
</xsl:template>
  
</xsl:stylesheet>

Mas não consigo gerar absolutamente nada. Alguém me pode ajudar?

Obrigado!


<?php include("assinatura.txt"); ?>

Share this post


Link to post
Share on other sites
kareka

Pois, faz sentido  :wallbash:

Obrigado!  ;)


<?php include("assinatura.txt"); ?>

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.