Avatar billede kritt Nybegynder
28. april 2004 - 13:52 Der er 12 kommentarer og
1 løsning

Min apply-template skriver 2 gange.

Jeg har et problem...

Jeg skal have outputtet <apply-templates select="skema/resultat/output"> i <go>
hvilket også fungerer.

Mit problem er, at den også outputtes pga en <apply templates> nede i bunden af dokumentet.

Her er koden


<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="xml" doctype-public="-//WAPFORUM//DTD WML 1.1//EN" media-type="text/vnd.wap.wml" doctype-system="http://www.wapforum.org/DTD/wml_1.1.xml" encoding="ISO-8859-1"/>
    <xsl:template match="/">
        <wml>
          <card id="card1" title="Spg">
                   
                <do type="accept" label="Send">
                                    <go href="calc.wmls#multiply()">
                                        <xsl:apply-templates select="skema/resultat/output"/>
                                    </go>
                </do>
                <p>
                    <small><b><xsl:value-of select="skema/overskrift"/></b></small>
                </p>
                                <xsl:apply-templates/>
                        </card>                     
        </wml>
    </xsl:template>
    <xsl:template match="spg">
<p>
<img alt="">
<xsl:attribute name="src">wbmp/<xsl:value-of select="billede"/></xsl:attribute>
</img>
</p>
                <p>
            <small>
                <xsl:value-of select="text"/>
            </small>
            <br/>
        </p>
                <p>

                <select>
                <xsl:attribute name="name">name<xsl:value-of select="@Id"/></xsl:attribute>
                <xsl:apply-templates/>
            </select>
        </p>
    </xsl:template>
                <xsl:template match="output">           
      <setvar>
            <xsl:attribute name="name"><xsl:value-of select="@Id"/></xsl:attribute>
                        <xsl:attribute name="value"><xsl:value-of select="."/></xsl:attribute>
      </setvar>                       
        </xsl:template>
    <xsl:template match="mulighed">
        <option>
            <xsl:attribute name="value"><xsl:value-of select="@vaerdi"/></xsl:attribute>
            <xsl:value-of select="."/>
        </option>
    </xsl:template>
        <xsl:template match="overskrift"/>
        <xsl:template match="text"/>
        <xsl:template match="billede"/>
        <xsl:template match="output"/>
</xsl:stylesheet>
Avatar billede nute Nybegynder
28. april 2004 - 13:58 #2
kan du også smide din xml struktur herind, så vi har lidt mere at arbejde med ?
Avatar billede kritt Nybegynder
28. april 2004 - 14:03 #3
Hey nute....Du har hjulpet mig før. Jeg laver projektet sammen med en fyr på skolen (dette er hans login) jeg er "Interkriller" du hjalp mig for en uge siden.

Her er XML:

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="fob_wml.xsl" ?>
<skema>
<overskrift>
Velkommen til "Hvilken Boogie vært ligner du mest?" testen
</overskrift>
    <spg Id="001">
    <billede>sport49.wbmp</billede>
    <text>Hvis X skal spille kamp på din kærestes fødselsdag, hvad ville du så gøre?</text>
        <svar>
        <mulighed vaerdi="20">Købe billet, se kampen og feste med vennerne bagefter.
            </mulighed>
        <mulighed vaerdi="15">Købe billet, se kampen og tage direkte til din kærestes fødselsdag bagefter.
            </mulighed>
        <mulighed vaerdi="10">Gå til din kærestes fødselsdag, og se kampen på tv.
            </mulighed>
        <mulighed vaerdi="5">Gå til din kærestes fødselsdag, og høre kampen i radioen.
            </mulighed>
        <mulighed vaerdi="0">Gå til din kærestes fødselsdag, og hverken se eller høre kampen.
          </mulighed>
        </svar>
    </spg>
    <spg Id="002">
    <billede>sport49.wbmp</billede>
    <text>Hvis X skal spille kamp på din kærestes fødselsdag, hvad ville du så gøre?</text>
        <svar>
        <mulighed vaerdi="20">Købe billet, se kampen og feste med vennerne bagefter.
            </mulighed>
        <mulighed vaerdi="15">Købe billet, se kampen og tage direkte til din kærestes fødselsdag bagefter.
            </mulighed>
        <mulighed vaerdi="10">Gå til din kærestes fødselsdag, og se kampen på tv.
            </mulighed>
        <mulighed vaerdi="5">Gå til din kærestes fødselsdag, og høre kampen i radioen.
            </mulighed>
        <mulighed vaerdi="0">Gå til din kærestes fødselsdag, og hverken se eller høre kampen.
          </mulighed>
        </svar>
    </spg>
    <spg Id="003">
    <billede>sport49.wbmp</billede>
    <text>Hvis X skal spille kamp på din kærestes fødselsdag, hvad ville du så gøre?</text>
        <svar>
        <mulighed vaerdi="20">Købe billet, se kampen og feste med vennerne bagefter.
            </mulighed>
        <mulighed vaerdi="15">Købe billet, se kampen og tage direkte til din kærestes fødselsdag bagefter.
            </mulighed>
        <mulighed vaerdi="10">Gå til din kærestes fødselsdag, og se kampen på tv.
            </mulighed>
        <mulighed vaerdi="5">Gå til din kærestes fødselsdag, og høre kampen i radioen.
            </mulighed>
        <mulighed vaerdi="0">Gå til din kærestes fødselsdag, og hverken se eller høre kampen.
          </mulighed>
        </svar>
    </spg>
    <spg Id="004">
    <billede>sport30.wbmp</billede>
    <text>Hvis X skal spille kamp på din kærestes fødselsdag, hvad ville du så gøre?</text>
        <svar>
        <mulighed vaerdi="20">Købe billet, se kampen og feste med vennerne bagefter.
            </mulighed>
        <mulighed vaerdi="15">Købe billet, se kampen og tage direkte til din kærestes fødselsdag bagefter.
            </mulighed>
        <mulighed vaerdi="10">Gå til din kærestes fødselsdag, og se kampen på tv.
            </mulighed>
        <mulighed vaerdi="5">Gå til din kærestes fødselsdag, og høre kampen i radioen.
            </mulighed>
        <mulighed vaerdi="0">Gå til din kærestes fødselsdag, og hverken se eller høre kampen.
          </mulighed>
        </svar>
    </spg>
    <spg Id="005">
    <billede>sport4.wbmp</billede>
    <text>Hvis X skal spille kamp på din kærestes fødselsdag, hvad ville du så gøre?</text>
        <svar>
        <mulighed vaerdi="20">Købe billet, se kampen og feste med vennerne bagefter.
            </mulighed>
        <mulighed vaerdi="15">Købe billet, se kampen og tage direkte til din kærestes fødselsdag bagefter.
            </mulighed>
        <mulighed vaerdi="10">Gå til din kærestes fødselsdag, og se kampen på tv.
            </mulighed>
        <mulighed vaerdi="5">Gå til din kærestes fødselsdag, og høre kampen i radioen.
            </mulighed>
        <mulighed vaerdi="0">Gå til din kærestes fødselsdag, og hverken se eller høre kampen.
          </mulighed>
        </svar>
    </spg>
<resultat>       
                <output Id="T1">du har mellem 80-100</output>
                <output Id="T2">du har mellem 60-80</output>
                <output Id="T3">du har mellem 40-60</output>
                    <output Id="T4">du har mellem 20-40</output>
                    <output Id="T5">du har mellem 0-10</output>
       
                <output Id="T6">du har mellem 80-100</output>
                <output Id="T7">du har mellem 60-80</output>
                <output Id="T8">du har mellem 40-60</output>
                    <output Id="T9">du har mellem 20-40</output>
                    <output Id="T10">du har mellem 0-10</output>

                <output Id="T11">du har mellem 80-100</output>
                <output Id="T12">du har mellem 60-80</output>
                <output Id="T13">du har mellem 40-60</output>
                    <output Id="T14">du har mellem 20-40</output>
                    <output Id="T15">du har mellem 0-10</output>
</resultat>
</skema>
Avatar billede kritt Nybegynder
28. april 2004 - 14:10 #4
indholdet af "resultat" bliver smidt ind både i linje 2 og linje 28 (vil kun have det i linje 2)
Avatar billede nute Nybegynder
28. april 2004 - 14:11 #5
ah ... hola !

problemet ligger i at du har 2 x <xsl:template match="output"/>, men det kan også se ud til at du har nogle uhensigtsmæssige matches. Mon ikke det også ville være rart at få et lille hint om hvilket output du egentlig forventer ?
Avatar billede nute Nybegynder
28. april 2004 - 14:12 #6
mon ikek det vil løse problemet om du laver denne:

<xsl:template match="output">
        <setvar>
            <xsl:attribute name="name"><xsl:value-of select="@Id"/></xsl:attribute>
            <xsl:attribute name="value"><xsl:value-of select="."/></xsl:attribute>
        </setvar>
    </xsl:template>


om til

<xsl:template name="output">
        <setvar>
            <xsl:attribute name="name"><xsl:value-of select="@Id"/></xsl:attribute>
            <xsl:attribute name="value"><xsl:value-of select="."/></xsl:attribute>
        </setvar>
    </xsl:template>

og derefter denne:

<xsl:apply-templates select="skema/resultat/output"/>

om til

<xsl:call-template name="output"/>
Avatar billede kritt Nybegynder
28. april 2004 - 14:14 #7
Jeg vil have dette ind i <go></go>:

><setvar name="T1" value="du har mellem 80-100" /><setvar name="T2" value="du har mellem 60-80" /><setvar name="T3" value="du har mellem 40-60" /><setvar name="T4" value="du har mellem 20-40" /><setvar name="T5" value="du har mellem 0-10" /><setvar name="T6" value="du har mellem 80-100" /><setvar name="T7" value="du har mellem 60-80" /><setvar name="T8" value="du har mellem 40-60" /><setvar name="T9" value="du har mellem 20-40" /><setvar name="T10" value="du har mellem 0-10" /><setvar name="T11" value="du har mellem 80-100" /><setvar name="T12" value="du har mellem 60-80" /><setvar name="T13" value="du har mellem 40-60" /><setvar name="T14" value="du har mellem 20-40" /><setvar name="T15" value="du har mellem 0-10" />

Jeg fatter ikke helt essensen af brugen af templates. Kan regne ud hvad problemet er, men ved ikke helt hvordan jeg løser det. :(
Avatar billede nute Nybegynder
28. april 2004 - 14:19 #8
ah ... I c ... så kan denne gøre det for dig:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="xml" doctype-public="-//WAPFORUM//DTD WML 1.1//EN" media-type="text/vnd.wap.wml" doctype-system="http://www.wapforum.org/DTD/wml_1.1.xml" encoding="ISO-8859-1"/>
    <xsl:template match="/">
        <wml>
            <card id="card1" title="Spg">
                <do type="accept" label="Send">
                    <go href="calc.wmls#multiply()">
                        <xsl:call-template name="output"/>
                    </go>
                </do>
                <p>
                    <small>
                        <b>
                            <xsl:value-of select="skema/overskrift"/>
                        </b>
                    </small>
                </p>
                <xsl:apply-templates/>
            </card>
        </wml>
    </xsl:template>
    <xsl:template match="spg">
        <p>
            <img alt="">
                <xsl:attribute name="src">wbmp/<xsl:value-of select="billede"/></xsl:attribute>
            </img>
        </p>
        <p>
            <small>
                <xsl:value-of select="text"/>
            </small>
            <br/>
        </p>
        <p>
            <select>
                <xsl:attribute name="name">name<xsl:value-of select="@Id"/></xsl:attribute>
                <xsl:apply-templates/>
            </select>
        </p>
    </xsl:template>
    <xsl:template name="output">
        <xsl:for-each select="skema/resultat/output">
            <setvar>
                <xsl:attribute name="name"><xsl:value-of select="@Id"/></xsl:attribute>
                <xsl:attribute name="value"><xsl:value-of select="."/></xsl:attribute>
            </setvar>
        </xsl:for-each>
    </xsl:template>
    <xsl:template match="mulighed">
        <option>
            <xsl:attribute name="value"><xsl:value-of select="@vaerdi"/></xsl:attribute>
            <xsl:value-of select="."/>
        </option>
    </xsl:template>
    <xsl:template match="overskrift|text|billede|output"/>
</xsl:stylesheet>

/nute
Avatar billede kritt Nybegynder
28. april 2004 - 14:20 #9
Ja, noget gjorde det, men ikke helt det ønskede...

I <go></go> smed den alt muligt underligt ind, der ikke havde noget at gøre med "resultat"

og i linje 28 skrev den det den skrev før bare uden <setvar o.s.v> (altså den skrev kun indholdet af resultat i xml-filen
Avatar billede naucher Nybegynder
28. april 2004 - 14:24 #10
hmm... okay... jeg kan desvære ikke hjælpe dig!
Avatar billede kritt Nybegynder
28. april 2004 - 14:25 #11
~o.o~
---

Det var lige det der skulle til...Fangede den ikke helt, men tjekker koden senere.

noget med noget for-each?

Men takker og bukker (endnu en gang)
Smid et svar
Avatar billede nute Nybegynder
28. april 2004 - 14:32 #12
fino ! bare hyggeligt at kunne hjælpe :)

jeg har gjort 3 ting:

1) du ønsker ikke at matche din 'output' node, da rækkefølgen den vil blive matchet, ikke helt passer med placering i dit output. for at komme udenom dette, så laver jeg en tom match (<xsl:template match="output"/>) ... når denne node bliver matchet, så sker der ingenting.

2) jeg laver en egen navngiven template som jeg "manuelt" er nødt til at kalde, for at output-noden skal blive behandlet:

<xsl:template name="output">
        <xsl:for-each select="skema/resultat/output">
            <setvar>
                <xsl:attribute name="name"><xsl:value-of select="@Id"/></xsl:attribute>
                <xsl:attribute name="value"><xsl:value-of select="."/></xsl:attribute>
            </setvar>
        </xsl:for-each>
    </xsl:template>

I denne template, løber jeg alle output-noder igennem, og skriver ud <setvar> elementer.

3) for at kalde min template fra punkt 2), gør jeg sådan:

<xsl:call-template name="output"/>

hvor 'name="output"' refererer til 'name="output"' i <xsl:template name="output">

/nute
Avatar billede nute Nybegynder
28. april 2004 - 14:47 #13
- takker -
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