[XSLT] Niet escapen van characters

Pagina: 1
Acties:

  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
Ik zit met klein probleempje waar ik ondanks veel gegoogle geen oplossing voor vind,

Ik heb volgende XSLT:

code:
1
2
3
4
5
6
7
8
9
10
11
<xsl:choose>
            <xsl:when test="$positie=1">
                <![CDATA[<table cellspacing="0" class="products"><tr>]]>
            </xsl:when>
            <xsl:when test="$positie=$aantal+1">
                <![CDATA[</tr></table>]]>
            </xsl:when>
            <xsl:when test="($positie mod 4) =1">
                <![CDATA[</tr><tr>]]>
            </xsl:when>
        </xsl:choose>


De Table elementen worden dus geescaped verstuurt, dus als:
<table cellspacing="0" class="products"><tr>

En dat wil ik niet, hoe kan ik dit voorkomen?

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:30

crisp

Devver

Pixelated

offtopic:
encoding != escaping...

[ Voor 17% gewijzigd door crisp op 25-07-2006 14:10 ]

Intentionally left blank


  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
crisp schreef op dinsdag 25 juli 2006 @ 14:09:
offtopic:
encoding != escaping...
Je hebt gelijk ;)
Ik zat alleen in me hoofd dat ik iets moest escapen ;)

  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

Ik volg je vraag niet helemaal... :)

Oh, misschien moet je deze gebruiken:

code:
1
2
3
<xsl:text disable-output-escaping="yes">
    <![CDATA[<table cellspacing="0" class="products"><tr>]]>
</xsl:text>


Dat werkt in ieder geval in XMPSpy. ;)

[ Voor 97% gewijzigd door RedRose op 25-07-2006 14:42 ]

Sundown Circus


  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
RedRose schreef op dinsdag 25 juli 2006 @ 14:33:
Ik volg je vraag niet helemaal... :)

Oh, misschien moet je deze gebruiken:

code:
1
2
3
<xsl:text disable-output-escaping="yes">
    <![CDATA[<table cellspacing="0" class="products"><tr>]]>
</xsl:text>


Dat werkt in ieder geval in XMPSpy. ;)
En hier ook, niet de sjiekste oplossing, maar ontkom er niet aan omdat me table niet lineair word opgebouwd. Thx

  • matthijsln
  • Registratie: Augustus 2002
  • Laatst online: 14-02 11:33
Ik maak uit je post op dat je een lijst met items hebt en die in een tabel wilt presenteren met vier items per rij.

Dit zou je dus kunnen doen met een for-each en de expressie "position() mod 4" die je al had en dan xsl:text met disable-output-escaping om om de 4 items <tr> en </tr> te proppen (deze methode zou je kiezen indien je de HTML met iets als PHP, ASP of JSP zou maken).

Je zou ook iets als het volgende kunnen doen wat meer in de "spirit" van XSL is (een recursieve oplossing):

- Maak een template dat een rij maakt. Geef deze de position van het huidige item als param mee, en roep deze om te beginnen aan met waarde 1.

- Dit template maakt een tr element. Voor de inhoud van de tr roept deze een ander template aan welke je als params meegeeft de huidige position + het aantal items per rij en de huidige position.

- Deze template zorgt ervoor dat er een td wordt aangemaakt voor het huidige item. Indien er nog meer td's moeten worden aangemaakt in deze rij (vergelijk de twee params) roept deze template zichzelf aan met de huidige position parameter 1 opgehoogd.

- Het tweede template roept zichzelf ook weer aan om meerdere rijen te maken totdat alle items in een rij staan.

[ Voor 8% gewijzigd door matthijsln op 25-07-2006 16:31 ]


  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
Thx voor de mooie suggestie, ben hem gaan tunen en nu werkt ie, en is nog netter ook :)

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xsl:Stylesheet [
    <!ENTITY nbsp "&#x00A0;">
]>
<xsl:stylesheet 
    version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:msxml="urn:schemas-microsoft-com:xslt"
    xmlns:umbraco.library="urn:umbraco.library"
    exclude-result-prefixes="msxml umbraco.library">


    <xsl:output method="xml" omit-xml-declaration="yes" />

    <xsl:param name="currentPage"/>

    <!-- Input the documenttype you want here -->
    <xsl:variable name="documentTypeAlias" select="string('Promotiemateriaal')"/>
    
    <xsl:template match="/">
            <table cellspacing="0" class="products">
            <xsl:variable name="bron" select="$currentPage/node [@nodeTypeAlias = $documentTypeAlias and string(data [@alias='umbracoNaviHide']) != '1']"/>
            <xsl:for-each select="$bron[position() mod 4 = 1]">
                <tr>
                    <xsl:for-each select=". | following-sibling::node[position() &lt; 4]">
                        <th class="txt-cntr">
                            <strong>
                                <xsl:value-of select="./data [@alias = 'promotie_naam']"/>
                            </strong>
                        </th>
                    </xsl:for-each>
                </tr>
                <tr>
                    <xsl:for-each select=". | following-sibling::node[position() &lt; 4]">
                        <td class="txt-cntr">
                            [img]"http://val-o-prs.fnd-val.local/{umbraco.library:GetMedia(./data[/img]</img>
                            <br />
                            <label>
                                <input type="text" size="2" />
                                stuks
                            </label>
                            <span class="txt-sft">
                                (max <xsl:value-of select="./data [@alias = 'promotie_maximum']"/>)
                            </span>
                        </td>
                    </xsl:for-each>
                </tr>
            </xsl:for-each>
        </table>
    </xsl:template>
</xsl:stylesheet>
Pagina: 1