Toon posts:

[xsl] alles kopieren en paar tags veranderen en meta tag

Pagina: 1
Acties:

Verwijderd

Topicstarter
1)
Ik wil een xslt doen van een xhtml document naar hetzelfde xhtml document, maar dan met een paar aangepassingen. Zo moet bijvoorbeeld het laatste element in bepaalde lijsten extra gemarkeerd worden met een class en tabelrijen wil ik om en om markeren met een odd en even class.

Wat ik dus had bedacht was het volgende:
code:
1
2
3
4
5
6
7
<xsl:template match="ul/li[last()]">
  <li class="last"><xsl:copy-of select="*" /></li>
</xsl:template>
<xsl:template match="/">
  <xsl:apply-templates />
  <xsl:copy-of select="*"/>
</xsl:template>


maar dat gaat dus niet werken. M'n xslt kennis is helaas wat roestig geworden...

2)
verder verschijnt er na m'n transform ineens een meta tag in m'n xhtml, die zat niet in het bronbestand. Als ik alleen in m'n xsl
code:
1
2
3
4
<xsl:output method="xml" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" indent="yes" encoding="UTF-8"/>
<xsl:template match="/">
  <xsl:copy-of select="*"/>
</xsl:template>

heb staan, is alles hetzelfde, behalve dat er ineens een meta tag met mimetype en character encoding bij zit en die wil ik helemaal niet
Character encoding geeft ie wel goed weer (door de xsl:output denk ik), en als mimetype geeft ie text/xml, maar het is dus xhtml. Eigenlijk wil ik die hele meta er gewoon uit hebben.

Verwijderd

Topicstarter
skup

ben wat verder, alleen is volgens mij de xsl echt te smerig voor woorden

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<xsl:template match="/">
        <xsl:apply-templates />
    </xsl:template>
    
    
    
    <xsl:template match="*">
        <xsl:copy>
            <xsl:copy-of select="@*" />
            
            <xsl:choose>
                <xsl:when test="name()='li'">
                    <xsl:call-template name="li" />
                </xsl:when>
                <xsl:otherwise>
                    <xsl:apply-templates />
                </xsl:otherwise>
            </xsl:choose>
            
        </xsl:copy>
    </xsl:template>

    <xsl:template name="li">
        <xsl:attribute name="class">li-last</xsl:attribute>
        <xsl:copy-of select="*" />
    </xsl:template>

nu gooit ie alleen nog de inhud van de li eruit, wat niet de bedoeling is. Bovendien moet ie alleen het laatste li element van deze class voorzien, maar als ik "and position()=last()" toevoeg aan de test attribuut van die when, pakt ie helemaal niks meer.

En voor m'n gevoel zou het ook zonder een choose moeten kunnen.

wat testfiles:
nog niet getransformeerde xhtml:
http://www.rikkertkoppes.com/?artist/2004/11/01/1
getransformeerde xhtml:
http://www.rikkertkoppes.com/?artist/2004/11/01/1/xsl
(note die extra meta tag die ik er ook nog uit wil
en de xsl (daarmee ben ik aan het prutsen, dus die zal wel eens niet overeenkomen met bovenstaande code):
http://www.rikkertkoppes.com/extend.xsl