Avatar billede themepark Nybegynder
14. marts 2005 - 22:33 Der er 9 kommentarer

Rod og descendants templates

Jeg skal love for at det her XSLT volder mig problemer :(

Jeg vil gerne udføre noget kode på mine elementer, og så få et eller andet output ud af det. Det vil jeg så gerne putte ind i en BODY, så jeg får et HTML dokument.

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    <HTML>
    <HEAD>
    <TITLE></TITLE>
    </HEAD>
    <BODY>
    <xsl:apply-templates select="*"/>

    </BODY>
    </HTML>
  </xsl:template>

  <xsl:template match="*">
Noget kode
  </xsl:template>
</xsl:stylesheet>

Da jeg skal udføre min kode på alle elementerne i mit XML dokument, er jeg nødt til at matche på *, og det bruger jeg så til apply-templates. Men alligevel får jeg kun mit rod element med, og får dermed åbenbart ikke udført koden i min template match. Men hvad skal jeg egentlig så skrive, for stadig at kunne gøre det sådan?

Venlig hilsen
Michael K. P.
Avatar billede janegil Nybegynder
15. marts 2005 - 00:55 #1
I <xsl:apply-templates select="*"/> er select i beste fall overflødig, prøv <xsl:apply-templates/>.
Avatar billede janegil Nybegynder
15. marts 2005 - 00:57 #2
Avatar billede themepark Nybegynder
17. marts 2005 - 13:08 #3
Hmm...okay...men jeg vil lige prøve at omformulere mig. Jeg vil nemlig gerne udføre noget kode på mit rod element (det gør jeg med /, den er jeg fint med på), og så vil jeg gerne udføre noget kode på ALLE dens descendants, f.eks. at skrive dem med fed skrift (altså noget i stil med <b><xsl:value-of select="."></b>).

Alle de elementer, jeg så får skrevet ud med value-of, vil jeg gerne have puttet ind i mine BODY tags, derfor matchen på /. Mit problem er bare, at jeg ikke kan gennemskue, præcis hvad jeg skal skrive i select i apply-templates, og hvad jeg skal skrive i match i template, for at det virker. Og er copy nødvendig der?
Avatar billede janegil Nybegynder
17. marts 2005 - 13:21 #4
Jeg tror
<xsl:apply-templates select="*"/>
anvender template på det første elementet av hvilken som helst type, mens
<xsl:apply-templates/>
anvender templates på alle elementer av hvilken som helst type.
Avatar billede janegil Nybegynder
17. marts 2005 - 13:24 #5
Hvorvidt su skal bruke copy, avhenger av hvordan din XML source ser ut. Hvis du fx transformerer <tekst>abc</tekst> til <b>abc</b> bruker du
<xsl:template match="tekst">
  <b><xsl:apply-templates/></b>
</xsl:template>
Avatar billede themepark Nybegynder
17. marts 2005 - 13:28 #6
Jeg kan altså stadig ikke se, hvad jeg bør skrive i apply-templates og i template match :( Min XML er i stil med <element>tekst, og lige nu er det eneste, jeg vil skrive ud, bare tekst, altså med value-of.
Avatar billede themepark Nybegynder
17. marts 2005 - 15:08 #7
Kan du sige mig, hvad jeg helt præcist skal skrive i <xsl:apply-templates> og i <xsl:template match=""> for at det kan bruges således, som jeg har skrevet?
Avatar billede janegil Nybegynder
17. marts 2005 - 15:22 #8
kanskje jeg forstår mere hvis jeg får se et lite eksempel på XML-sourcen din?
Avatar billede themepark Nybegynder
17. marts 2005 - 15:40 #9
Ja, et lille eksempel kan jeg da snildt smide på :)

<elm>A
  <elm>B
    <elm/>C
  </elm>
  <elm/>D
</elm>

Så lige nu vil jeg bare have skrevet A B C D ind mellem mine BODY tags.
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