Avatar billede agentjna Nybegynder
26. august 2008 - 12:58 Der er 9 kommentarer og
1 løsning

For each hjælp eller??

Hej Eksperter

Jeg er ny i faget og tumler med at formaterer noget xml via xslt.

Der er sikkert ikke rocketscience, men jeg kan ikke få det til at fungerer! Så nu har jeg opgivet.

Mit input er følgende

<uSub12_4>
    <keyword>
        <value>Affald</value>
        <value>Arsen</value>
        <value>Boring</value>
    </keyword>
</uSub12_4>


I dette tilfælde 3 værdier som skal omdannes til nedenstående output.


<Keywords>
    <keyword>
        <CharacterString>Affald</CharacterString>
    </keyword>
    <keyword>
        <CharacterString>Arsen</CharacterString>
    </keyword>
    <keyword>
        <CharacterString>Boring</CharacterString>
    </keyword>
</Keywords>

Der er lige den detalje at antallet af value felter kan varierer ovenfor er eksemplet 3 men kan være alt fra 1 til 20 som skal afspejles i outputtet.

/Jesper
Avatar billede softspot Forsker
26. august 2008 - 13:05 #1
Jeg kunne forestille mig at dette virkede:

  <Keywords>
<xsl:for-each select="/uSub12_4/keyword/value">
    <keyword>
      <CharacterString><xsl:value-of select="text()"></CharacterString>
    </keyword>
</xsl:for-each>
  </Keywords>

Dette eksempel tager udgangspunkt i en absolut reference til value-noderne i din input-XML. Hvis du har fat i en kontekst, skal den udskiftes med den absolutte reference...
Avatar billede agentjna Nybegynder
26. august 2008 - 13:16 #2
Ikke helt jeg er ude efter

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<Keywords>
<xsl:for-each select="/uSub12_4/keyword/value">
    <keyword>
      <CharacterString><xsl:value-of select="text()"/></CharacterString>
    </keyword>
</xsl:for-each>
  </Keywords>
</xsl:stylesheet>

Giver flg output:

<?xml version="1.0" encoding="UTF-8"?><keyword xmlns:fo="http://www.w3.org/1999/XSL/Format"><CharacterString>Affald</CharacterString></keyword>

Altså kun den ene!
Avatar billede aaberg Nybegynder
26. august 2008 - 13:22 #3
prøv:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:template match="/">
    <Keywords>
      <xsl:for-each select="/uSub12_4/keyword/value">
        <keyword>
          <value>
            <xsl:value-of select="text()" />
          </value>
        </keyword>
      </xsl:for-each>
      </Keywords>
    </xsl:template>
</xsl:stylesheet>
Avatar billede aaberg Nybegynder
26. august 2008 - 13:23 #4
Der var selvfølgelig en lille fejl. CharacterString blev til value.

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:template match="/">
    <Keywords>
      <xsl:for-each select="/uSub12_4/keyword/value">
        <keyword>
          <CharacterString>
            <xsl:value-of select="text()" />
          </CharacterString>
        </keyword>
      </xsl:for-each>
      </Keywords>
    </xsl:template>
</xsl:stylesheet>
Avatar billede softspot Forsker
26. august 2008 - 13:28 #5
Ja, der manglede lige en xsl:template omkring koden (og så var der en manglende afslutning på value-of, men den fandt du selv :-)).
Avatar billede agentjna Nybegynder
26. august 2008 - 13:59 #6
Super det virker som forventet
Avatar billede agentjna Nybegynder
26. august 2008 - 14:05 #7
Hmm - der fik jeg givet mig selc accepteret svar - hvordan ændres det???
Avatar billede softspot Forsker
26. august 2008 - 14:11 #8
Du kan oprette et nyt spørgsmål (med reference til dette), hvor du sætter pointene på "højkant" og angiver hvem du gerne vil have svarer... :)
Avatar billede softspot Forsker
26. august 2008 - 14:18 #9
...og meget gerne smide en reference til det nye spørgsmål her.
Avatar billede agentjna Nybegynder
26. august 2008 - 14:38 #10
reference til "nyt" spørgsmål

http://www.eksperten.dk/spm/843065
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester