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

forskellige img på bladnoder og noder med underniveau

Hejsa

Jeg vil godt kunne sætte noder med underniveauer til plus minus.gif og bladnoder til prik.gif?

<xsl:template match="Subject">
        <xsl:param name="parentid"></xsl:param>
    <div>
        <xsl:attribute name="id">div<xsl:value-of select="$parentid"/>_<xsl:value-of select="Name/text()"/></xsl:attribute>
            <xsl:apply-templates select="Name">
                <xsl:with-param name="parentid"><xsl:value-of select="$parentid"/>_<xsl:value-of select="Name/text()"/></xsl:with-param>
            </xsl:apply-templates>
       
        <div class="hidden">
            <xsl:attribute name="id">sub<xsl:value-of select="$parentid"/>_<xsl:value-of select="Name/text()"/></xsl:attribute>       
            <xsl:apply-templates select="Subject">
                <xsl:with-param name="parentid"><xsl:value-of select="$parentid"/>_<xsl:value-of select="Name/text()"/></xsl:with-param>
            </xsl:apply-templates>
        </div>       
    </div>   
    </xsl:template>
    <xsl:template match="Name">
        <xsl:param name="parentid"></xsl:param>
        <xsl:choose>
            <xsl:when test="position()!=last()">
            <img src="images/plus.gif" alt="">
            <xsl:attribute name="id">img<xsl:value-of select="$parentid"/></xsl:attribute>
            <xsl:attribute name="onclick">iconClick '<xsl:value-of select="$parentid"/>'</xsl:attribute>
            </img>
            </xsl:when>
            <xsl:otherwise>
                <img src="images/prik.gif" alt="">
            <xsl:attribute name="id">imgTest</xsl:attribute>
            </img>
                  </xsl:otherwise>
        </xsl:choose>       
        <input>
            <xsl:attribute name="type">checkbox</xsl:attribute>
            <xsl:attribute name="id">chk<xsl:value-of select="$parentid"/></xsl:attribute>
            <xsl:attribute name="value">1</xsl:attribute>
            <xsl:if test="Value=1">
                <xsl:attribute name="checked">1</xsl:attribute>
            </xsl:if>
        </input>       
        <xsl:value-of select="text()" disable-output-escaping="yes"/>
    </xsl:template>
</xsl:stylesheet>


<Taksonomi>
    <Subject>
        <Name>Brancher</Name>
        <Subject>
            <Name>Energi</Name>
        </Subject>
        <Subject>
            <Name>Handel</Name>
        </Subject>...

Avatar billede janegil Nybegynder
15. maj 2002 - 15:47 #1
Koden din ser da umiddelbart fornuftig ut?

Du tester på
position()=last()
for å finne bladnoder, virker det ikke?
Avatar billede toni01 Nybegynder
15. maj 2002 - 15:51 #2
Nej ummiddelbart er problemet at det er den eneste node, så den vil altid være den sidste, alt andet end position()=1 giver false.
Avatar billede janegil Nybegynder
15. maj 2002 - 16:04 #3
Ja, selvsagt, for den etterfølgende Subject er slett ikke med i det node-set du har selected.

test="following-sibling::Subject" ?

Eller kanskje to templates for Name, med select på henholdsvis
name[following-sibling::Subject]
og
name[not(following-sibling::Subject)]
?
Avatar billede toni01 Nybegynder
15. maj 2002 - 16:05 #4
Er det muligt at teste på om der ligger andre noder på samme niveau istedet?
name er den eneste node hvis det er en bladnode

<Subject>
  <Name>Energi</Name>
</Subject>

ellers vil det også være subject noder

<Subject>
        <Name>Brancher</Name>
        <Subject>
            <Name>Energi</Name>
        </Subject>
Avatar billede janegil Nybegynder
15. maj 2002 - 16:12 #5
øh, jeg mener at
[following-sibling::Subject]
nettopp er en test på om det ligger Subject-noder på samme nivå som den Name-noden vi tester fra?

Eventuelt [following-sibling::*] for å fange opp andre søsken enn Subject'er?
Avatar billede janegil Nybegynder
15. maj 2002 - 16:18 #6
Jeg oppdager ikke om det finnes andre søsken FORAN Name, men det gjør det vel ikke?

evt
[not(parent::Subject/[Subject)]
[not(parent::*/
  • [not(Subject)])]
  • ?
    Avatar billede janegil Nybegynder
    15. maj 2002 - 16:19 #7
    oops, en skrå for mye?
    [not(parent::Subject[Subject)]
    [not(parent::*[*][not(Subject)])]
    Avatar billede toni01 Nybegynder
    15. maj 2002 - 16:23 #8
    test="following-sibling::Subject" virker (08

    tak for hjælpen.

    hvor kan man fin eksempler osv. på  following-sibling::, parent:: ... det er ikke meget jeg har kunnet finde.?
    Avatar billede janegil Nybegynder
    16. maj 2002 - 09:24 #9
    nei, mye er det ikke. Det står 3 sider om location paths i "The XSL Companion" (av Neil Bradley, isbn 0-201-67487-4). God bok (kjøpte den på anbefaling her på eksperten.dk), drøyt halvparten er om XSLT, resten om formatting objects o.l.
    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