Avatar billede toni01 Nybegynder
07. maj 2002 - 14:17 Der er 8 kommentarer og
1 løsning

XSL der kan transformere underliggende niveauer

Der kan eventuelt være flere niveauer, men jeg kan kun få første niveau ud i html?

<taksonomi>
  <subject>
    <navn>Brancher</navn>
    <subject>
    <navn>Branche1</navn>
    </subject>
    <subject>
    <navn>Branche2</navn>
    </subject>
    <subject>
    <navn>Branche2</navn>
    </subject> 
  </subject>
  <subject>
    <navn>Sport</navn>
    <subject>
      <navn>Fodbold</navn>
    </subject> 
  </subject>
  ...
</taksonomi>
Avatar billede nute Nybegynder
07. maj 2002 - 14:21 #1
du kan ikke ha en node som heter 'subject' og en subnode som heter det samme...

hvordan ser din xslt ut ?
Avatar billede toni01 Nybegynder
07. maj 2002 - 14:23 #2
<?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">
    <xsl:output method="html"/>
   
    <xsl:template match="/">
        <table>
            <xsl:apply-templates select="/Taksonomi"/>
        </table>
    </xsl:template>
   
    <xsl:template match="Form">
        <form  method="post" action="" id="" name="" class="">
            <xsl:apply-templates select="Table"/>
        </form>
    </xsl:template>   
   
    <xsl:template match="Subject">
        <tr>
            <td>
                <xsl:value-of select="Name" disable-output-escaping="yes"/>
            </td>           
            <td>
                <input>
                    <xsl:attribute name="type">checkbox</xsl:attribute>
                    <xsl:attribute name="value">1</xsl:attribute>
                    <xsl:if test="Value=1">
                        <xsl:attribute name="checked">1</xsl:attribute>
                    </xsl:if>
                </input>
            </td>
        </tr>   
    </xsl:template>   
</xsl:stylesheet>
Avatar billede nute Nybegynder
07. maj 2002 - 14:26 #3
du skal lage en konstruksjon som ligner dette:

<xsl:template match="taksonomi">
  <xsl:for-each select="subject">
    skriv ut hver node...
  </xsl:for-each>
</xsl:template>
Avatar billede toni01 Nybegynder
07. maj 2002 - 15:13 #4
Det giver kun første niveau )08
Avatar billede nute Nybegynder
07. maj 2002 - 15:27 #5
du *skal* bruke en <xsl:for-each> konstruksjon. Men jeg kan godt forestille meg at din XML fil skaper problemer, da du har flere noder som heter det samme:

<subject>
  <navn>
    <subject>
      <navn>

er rett og slett *grimt* :-|
Avatar billede toni01 Nybegynder
07. maj 2002 - 15:32 #6
Ja grimt og grimt, hvis det virkede ville det være let at bygge flere niveauer på.
Avatar billede Slettet bruger
07. maj 2002 - 15:32 #7
nute >> Det kan da snildt lade sig gøre at have en subnode der hedder det samme som en overliggende...

For at få næste niveau med, skal man bare bede processoren om at gøre noget ved dem - læg mærke til at din "Subject" template (udover at den har forkert "case" i forhold til XML) IKKE fortæller at de underliggende "subject" noder skal processeres - prøv den her for at se hvordan det fungerer:

<xsl:template match="subject">
  <ul>
    <li>
      <xsl:value-of select="navn"/>
      <xsl:apply-templates select="subject"/>
    </li>
  </ul>
</xsl:template>
Avatar billede Slettet bruger
07. maj 2002 - 15:34 #8
PS: resten af svaret var til toni01...
/CS
Avatar billede toni01 Nybegynder
07. maj 2002 - 16:00 #9
Jeps tak for hjælpen, jeg kom frem til følgende.

<?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">
    <xsl:output method="html"/>
       
    <xsl:template match="/">
        <STYLE>
        BODY
        {
        }
        DIV
        {
            LEFT: 10px;
            POSITION: relative
        }
        </STYLE>

        <xsl:apply-templates/>
    </xsl:template>
   
    <xsl:template match="Subject">
    <div>
        <xsl:value-of select="Name" disable-output-escaping="yes"/>
        <xsl:apply-templates/>       
    </div>
    </xsl:template>   
</xsl:stylesheet>
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