Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[XML][XSLT] - Transformacja

wader_669 12 Cze 2014 14:29 1983 2
  • #1 12 Cze 2014 14:29
    wader_669
    Poziom 28  

    Witam,
    Chcialem ze strony nbp sciagac aktualne kursy, link: http://nbp.pl/kursy/xml/lasta.xml
    Nigdy sie nie bawilem XMLem ani XSLT.
    Napisalem XSLT, ktory dziala. Jednak chcialem zeby data byla przy kazdym kursie. Udalo mi sie wyswietlic ja raz, ale w dalszej obrobce moj program nie moze sobie z tym poradzic.
    Walcze od dni z tym problemem i nie moge sobie poradzic.

    XML

    Code:

    <tabela_kursow typ="A" uid="14a113"><numer_tabeli>113/A/NBP/2014</numer_tabeli><data_publikacji>2014-06-12</data_publikacji><pozycja><nazwa_waluty>bat (Tajlandia)</nazwa_waluty><przelicznik>1</przelicznik><kod_waluty>THB</kod_waluty><kurs_sredni>0,0935</kurs_sredni></pozycja><pozycja><nazwa_waluty>dolar amerykański</nazwa_waluty><przelicznik>1</przelicznik><kod_waluty>USD</kod_waluty><kurs_sredni>3,0374</kurs_sredni></pozycja><pozycja><nazwa_waluty>dolar australijski</nazwa_waluty><przelicznik>1</przelicznik><kod_waluty>AUD</kod_waluty><kurs_sredni>2,8531</kurs_sredni></pozycja><pozycja>
    ..
    ..

    </tabela_kursow>



    XSLT
    Code:

    <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
      <xsl:output encoding="iso-8859-2" indent="yes" method="xml" version="1.0"/>
      <xsl:strip-space elements="*"/>

      <xsl:template match="/">
        <asx:abap xmlns:asx="XXXXXXXXXXXXXXX" version="1.0">
          <asx:values>
            <IPozycja>
              <xsl:apply-templates select="//pozycja"/>
            </IPozycja>
          </asx:values>
        </asx:abap>
      </xsl:template>

     <xsl:template match="pozycja">
        <item>

          <NAZWAWALUTY>
            <xsl:value-of select="nazwa_waluty"/>
          </NAZWAWALUTY>

          <PRZELICZNIK_X>
            <xsl:value-of select="przelicznik"/>
          </PRZELICZNIK_X>

          <KODWALUTY>
            <xsl:value-of select="kod_waluty"/>
          </KODWALUTY>

          <KURSSREDNI>
            <xsl:value-of select="kurs_sredni"/>
          </KURSSREDNI>

        </item>
      </xsl:template>

    </xsl:transform>


    Prosze o pomoc

    0 2
  • #2 12 Cze 2014 17:53
    sivex
    Poziom 27  

    Chodzi o date publikacji?
    Weź ja np do zmiennej albo odnoś się parentem.

    pozdr.

    0
  • #3 13 Cze 2014 14:00
    wader_669
    Poziom 28  

    Dzieki za odpowiedz udalo sie jakos zrobic

    Code:

    <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
      <xsl:output encoding="iso-8859-2" indent="yes" method="xml" version="1.0"/>
      <xsl:strip-space elements="*"/>

      <xsl:template match="/">
        <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
          <asx:values>
            <IPozycja>
              <xsl:apply-templates select="/tabela_kursow/pozycja"/>
            </IPozycja>
          </asx:values>
        </asx:abap>
      </xsl:template>

     <xsl:template match="pozycja">
        <item>

          <NAZWAWALUTY>
            <xsl:value-of select="nazwa_waluty"/>
          </NAZWAWALUTY>

          <PRZELICZNIK_X>
            <xsl:value-of select="przelicznik"/>
          </PRZELICZNIK_X>

          <KODWALUTY>
            <xsl:value-of select="kod_waluty"/>
          </KODWALUTY>

          <KURSSREDNI>
            <xsl:value-of select="kurs_sredni"/>
          </KURSSREDNI>

           <DATA1>
             <xsl:value-of select="../data_publikacji" />
           </DATA1>

        </item>
      </xsl:template>

    </xsl:transform>


    Program jest do SAP'a i tam byl jakis problem, ale z tym kodem smiga.

    Dzieki, zamykam temat.

    0