Avatar billede wired Nybegynder
13. august 2003 - 00:46 Der er 7 kommentarer og
1 løsning

I en linie check for værdien af samtlige child attributer

Er det muligt at check for en værdi i samtlige child attributter for et givet element.

eks:
<xsl:if test="*[@id='visdenne']" />
HEJ
</xsl:if>

I memonics:
Hvis der eksistere en child attribute(id) med værdien "visdenne" da udskrive "HEJ"
Avatar billede Slettet bruger
13. august 2003 - 01:08 #1
Jep:

<xsl:if test="@id[. = 'visdenne']">
HEJ
</xsl:if>

- men det er måske smartere at benytte en separat template:

<xsl:template match="@id[. = 'visdenne']">
  HEJ
</xsl:template>

- så kan du jo bare køre en <xsl:apply-templates select="@id" /> på alle de elementer der kunne tænkes at have en sådan id...

/CS
Avatar billede wired Nybegynder
13. august 2003 - 01:24 #2
Mit ovenstående virker ikke.

Det skulle være sådan at hvis der et vilkårligt antal nivauer/childs længere nede var et id ved navn visdenne skulle alle øvrige udskrive "hej", altså dog kun fra current og nedefter.

Det er i forbindelse med et menu-system.

menupkt1
menupkt2
  menupkt2.1
    menupkt2.1.1
  menupkt2.2
    menupkt2.2.1
menupkt3

Hvis menupkt 2.2.1 har id=visdenne skal kun følgende menu-punkter vises
(jeg illustere det ved at skrive HEJ)

menupkt2 (HEJ)
  menupkt2.1 (HEJ)
  menupkt2.2 (HEJ)
    menupkt2.2.1
menupkt3
Avatar billede Slettet bruger
13. august 2003 - 01:32 #3
Okay - ændr til:
<xsl:if test=".//*[@id = 'visdenne']">
HEJ
</xsl:if>

/CS
Avatar billede wired Nybegynder
13. august 2003 - 12:32 #4
Hmm.. Jeg ved ikke hvorfor at dit svar står som accepteret, jeg har ikke accepteret endnu og du står stadig som muligt at acceptere?
Hmm.. Nå der er nok noget galt i systemet.

I sidste kommentar skulle der have stået (HEJ) ud for alle linier.

Jeg har prøvet at ændre til

<xsl:if test=".//*[@id = 'visdenne']">

men der kommer kun til at stå hej ud for det enkelte menupkt altså 2.2.1
Avatar billede Slettet bruger
13. august 2003 - 16:05 #5
Det med svaret er sikkert fordi du ikke har afvist det - eller også fordi jeg markerer "Fortsat svar" (har aldrig selv stillet et spørgsmål her, så jeg ved ikke hvordan den del ser ud...)

Hvis stylesheet'et ikke fortsætter med resten er det nok fordi du ikke laver en <apply-templates /> - har du en URL til hele stlesheet'et, + evt. en XML?

/CS
Avatar billede wired Nybegynder
13. august 2003 - 17:01 #6
Jeg tror du har ret i at det har noget med et <apply-temples..> men ka' ikke lige finde løsningen.

Jeg er ud på at lave en menu a la http://www.krak.dk men med flere submenu-niveauer og hvor den sidste huskes efter opdatering.

Min .xlt filer ser nogenlunde sådan ud: http://www.givaway.subnet.dk/menu.html
(dog uden html, body og xmp)

og min .xml fil ser nogenlunde sådanne ud:

<submenu navn="menu1">
  <submenu navn="menu1.1"></submenu>
  <submenu navn="menu1.2">
    <submenu navn="menu1.2.1"></submenu>
  </submenu>
</submenu>

Det virker fint men jeg kan bare ikke få siden til at huske det sidste menupunkt som var valgt og derved folde menu-træet ud til dette menupunkt.
På samme måde som krak gør det ved "Find offentlig info" - "- Amter" men gerne med flere nivueaer. Jeg vil også nøjes med at overføre en variable fra side til side.
Avatar billede wired Nybegynder
13. august 2003 - 20:00 #7
Ved brug af din hjælp lykkedes det mig at finde frem til løsningen.
Jeg takker.
Avatar billede wired Nybegynder
14. august 2003 - 01:15 #8
Jeg troede at jeg havde fået det til at virke - mennn.
Lidt videre var jeg dog kommet.

<xsl:if test=".//*[@id = 'visdenne']">

did the trick... but....hvordan så med 'else if'?

<xsl:if test=".//*[@id != 'visdenne']">

Syntes ikke at virke/blive tilføjet.
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