Avatar billede mri Nybegynder
27. oktober 2003 - 10:12 Der er 4 kommentarer og
1 løsning

Traversering af rekursiv xml

Hej

Jeg har et stykke xml, som ser nogenlunde sådan ud:

<entity>
  <id>1</id>
  <entity>
      <id>2</id>
      <entity>
        <id>3</id>
      </entity>
  </entity>
  <entity>
      <id>4</id>
  </entity>
</entity>

... og et stykke xsl, som ser sådan ud:

<xsl:template match="entity">
    <DIV>
        <DIV>
            <xsl:value-of select="id"/>
        </DIV>
    </DIV>
    <xsl:apply-templates select="entity"/>   
</xsl:template>


resultatet bliver sådan:

<DIV>
<DIV>1</DIV>
<DIV>
<DIV>2</DIV>
<DIV>
<DIV>3</DIV>
<DIV>
<DIV>4</DIV>
</DIV>
</DIV>
</DIV>
</DIV>

men jeg vil gerne have det til at se sådan her ud:

<DIV>
  <DIV>1</DIV>
  <DIV>
      <DIV>2</DIV>
      <DIV>
        <DIV>3</DIV>
      </DIV>
  </DIV>
  <DIV>
      <DIV>4</DIV>
  </DIV>
</DIV>

Det er vist noget med, at alle entitys bliver hentet, og ikke kun det næste niveau.

Dvs. at den kun skal hente den pågældende nodes børn. Hvordan gøres det lige???
Avatar billede janegil Nybegynder
27. oktober 2003 - 10:29 #1
Prøv med copy-of i stedet for value-of ?
Avatar billede janegil Nybegynder
27. oktober 2003 - 10:44 #2
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
    <xsl:template match="entity">
        <DIV>
            <DIV>
                <xsl:value-of select="id"/>
            </DIV>
            <xsl:apply-templates select="entity"/>
        </DIV>
    </xsl:template>
</xsl:stylesheet>
Avatar billede janegil Nybegynder
27. oktober 2003 - 10:48 #3
Altså: flytt apply-templates opp, så den kommer inne i den ´DIVven du vil ha den i.

(Og glem mitt tøys om copy-of)
Avatar billede mri Nybegynder
27. oktober 2003 - 10:48 #4
problemet ligger vist et andet sted i min kode. Den traverserer rigtigt nok i ovenstående eksempel (minus en lille bug).

Jeg rettede :
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl" language="JavaScript">

til:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

problemet løst...
Avatar billede janegil Nybegynder
27. oktober 2003 - 10:54 #5
Ja, nemlig: Traversen din gikk som du trodde, det var bare output som var stablet litt annerledes enn du hadde planlagt.
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