Avatar billede _basil Nybegynder
07. april 2005 - 12:20 Der er 1 løsning

Opbygning af XMLfil med xsl - undgå duplikater.

Hej eksperter.

Jeg sidder og skal opbygge en xmlfil dynamisk.
XmlFil:

<track id="3">
        <xml_id>3</xml_id>
        <uniqueFilePath>C:\musik\ Avril Lavigne - My Happy Endi.Mp3</uniqueFilePath>
        <artist>avril lavigne</artist>
        <songTitle>my happy ending</songTitle>
        <album>Bonus CD</album>
    </track>
    <track id="4">
        <xml_id>4</xml_id>
        <uniqueFilePath>C:\musik\2_Kylie Minogue - I Believe In You.mp3</uniqueFilePath>
        <artist>Kylie Minogue</artist>
        <songTitle>I believe in you</songTitle>
        <album>Bonus CD</album>
    </track>

Jeg bruger et stylesheet til at opbygge den nye xmlfil:
XSL:
...
  <RULE NAME="title">
      <LN PROPNAME="album" PROPID="ALBUM">
          <xsl:for-each select="/numse/track">
          <PN VAL="{xml_id}"><xsl:value-of select="Album"/></PN>
        </xsl:for-each>
      </LN>
  </RULE>
...

Problemet er at den fil jeg får opbygget indeholder dublikeret data. Jeg ønsker kun at albummet "Bonus Cd" skal være en gang i xml-filen. Hvordan kan jeg gøre det?
Avatar billede j_kristiansen Nybegynder
15. juni 2005 - 12:27 #1
Hej basil

Nedenstående XSLT-template skulle løse opgaven. Kernen i problemstillingen med omstrukturering af et XML-dokument er løst i de to for-each elementer. Den første sikrer at et givet album kun selectes een gang.
(Du kan tilpasse koden til at passe med det ønskede output-format).

<xsl:template match="/">
    <output>
        <xsl:for-each select="/all/track/album[not(. = parent::track/preceding-sibling::track/album)]">
            <album>
                <title><xsl:value-of select="."/></title>
                <xsl:for-each select="/all/track[album=current()]">
                    <track>
                        <xsl:value-of select="songTitle"/>
                    </track>
                </xsl:for-each>
            </album>
        </xsl:for-each>
    </output>
</xsl:template>
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



IT-JOB