Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Besouro

Transformar - XSL PARA XML

Recommended Posts

Ola pessoal,

nunca trabalhei com XSL / XML.

 

Tenho dois arquivos, um XML e um XSL. Preciso aplicar uma transformação do arquivo XSL para o XML,

 

Alguem tem alguma ideia de como fazer isto?

 

Valeu!

[]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Besouro,

Exato. Agora se você quiser definir uma variável XSL, veja abaixo um exemplo extraído da internet:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>

  <xsl:variable name="mapping">
    <item key="1" v1="A" v2="B" />
    <item key="2" v1="X" v2="Y" />
  </xsl:variable>
  <xsl:variable name="mappingNode"
                select="document('')//xsl:variable[@name = 'mapping']" />

  <xsl:template match="....">
    <xsl:variable name="testVariable" select="'1'" />

    <xsl:variable name="values" select="$mappingNode/item[@key = $testVariable]" />

    <xsl:variable name="variable1" select="$values/@v1" />
    <xsl:variable name="variable2" select="$values/@v2" />
  </xsl:template>
</xsl:stylesheet>

Veja aqui o exemplo: http://stackoverflow.com/questions/14602884/declaring-a-xsl-variable-and-assigning-value-to-it

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

ahh ok

eu fui informado que deveria usar um software para aplicar esta transformação.

sabe de algo a respeito ?

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Besouro,

Ainda não entendi como você entende o "Transformar". XSL nada mais é do que uma folha de estilo pra XML. É a mesma coisa do CSS pro HTML, entende?

A sua dúvida está um pouco confusa, poderia tornar um pouco mais objetiva? Mostrar o código com qual está trabalhando, erro que encontrou ou algo semelhante.

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola L. Henrique

aqui esta parte do XSL : (transformation.xsl)

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:aia="http://aza.com">
<xsl:output omit-xml-declaration="no" indent="yes"/>
<xsl:strip-space elements="*"/>


<xsl:variable name="articlesPerFile" select="5000" />




<xsl:template match="text()|@*" />

<xsl:template match="/">
<document>
<businessobjects>
<xsl:apply-templates />
</businessobjects>
</document>
</xsl:template>


<!-- constants -->
<xsl:variable name="main-doc" select="/"/>
<xsl:variable name="firmaName">
<xsl:variable name="firmaNameX" select="
if( string-length(/DataExpert/Head/Anbieter/Firma) gt 0 ) then /DataExpert/Head/Anbieter/Firma
else /DataExpert/Head/Anbieter/Name " />
<xsl:if test="not($firmaNameX) or string-length($firmaNameX) le 0">
<xsl:message>ERROR: No Firma Name</xsl:message>
</xsl:if>
<xsl:value-of select="normalize-space($firmaNameX)"/>
</xsl:variable>

<xsl:variable name="firmaNr">
<xsl:variable name="firmaNrX" select="/DataExpert/Head/Anbieter/Firma/@Nr" />
<xsl:if test="not($firmaNrX) or string-length($firmaNrX) le 0">
<xsl:message>ERROR: No Firma Name</xsl:message>
</xsl:if>
<xsl:value-of select="normalize-space($firmaNrX)"/>
</xsl:variable>

<xsl:variable name="firmaNrShort" select="if(string-length($firmaNr) gt 4) then concat(substring($firmaNr, 1, 2), substring($firmaNr, string-length($firmaNr)-1, 2)) else $firmaNr" />
<xsl:variable name="catalogName" select="lower-case(normalize-space(/DataExpert/Body/Katalog/@Txt_Katalog))" />
<xsl:variable name="root" select="concat($firmaNr, '.', $catalogName)" />
<xsl:variable name="sellerCode" select="concat('IGH_', $firmaNr)"/>

 

__________

 

e aqui parte do XML :

 

<?xml version="1.0" encoding="UTF-8"?>
<DataExpert xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="DE_Katalog.xsd">
<Head>
<Typ Nr="106"></Typ>
<Sub_Typ Nr="0"></Sub_Typ>
<Code_Sprache>de</Code_Sprache>
<Gueltig>1</Gueltig>
<Datum>2015-10-06</Datum>
<Kunde>
<Firma>Installateure/Planer</Firma>
<Email>bbb@bbbb.bbb</Email>
</Kunde>
<Anbieter>
<Firma Nr="2110">BAAAA</Firma>
<Name>AAAA</Name>
<URL>www.aaaaa.aaa</URL>
<Email>aaa@aaa.aaa</Email>
</Anbieter>
</Head>
<Body>
<Katalog ID_Katalog="135" ID_Anbieter="2110" Versions_Jahr="2015" Code_Sprache="1" Preisbuch_Nr="1" Versions_Nr="4" Txt_Katalog="Heizungstechnik" Dat_Valid_Von="2015-10-01">
<Suchbegriffe>
<Register_Suche>
<Laschen_Txt>K-02</Laschen_Txt>
<Register_Element_1 Txt="Gas-Brennwert-Heizkessel">
<Element_2 Txt="Wandheizkessel 14 - 100 kW">
<Element_3 Txt="Logamax plus GB172 14 - 24 kW">
<Element_4 Txt="Heizkessel">
<Element4_Nr Name="Logamax plus GB 172 - 14">7738800300</Element4_Nr>
<Element4_Nr Name="Logamax plus GB 172 - 20">7738800301</Element4_Nr>
<Element4_Nr Name="Logamax plus GB 172 - 24">7738800302</Element4_Nr>
</Element_4>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Besouro,

Dentro do XML, abaixo do <?xml version... Coloque o trecho de código:

<?xml:stylesheet type="text/xsl" href="transformation.xsl"?>

A dúvida está em juntar ambos?

Veja se esse tutorial/tópico também consegue resolver sua situação: http://www.techrepublic.com/article/xml-and-xsl-integration/

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

L Henrique

eu acredito que seja juntar ambos, eles me passaram a informação para transformar o XSL -> XML, nao sei se é algo XSLT, atraves de um software.

eu acredito que deva ser feito o mais obvio, neste caso deve ser juntar ambos e abrir o XML com a formatação correspondente ao XSL.

 

nao funcionou colocar o trecho de codigo

sera quem alguma variavel/função ou algo do tipo nao declarada ?

 

valeu!

[]

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.