Verwijderd
Sommige nieuwe browsers kunnen XML laten zien, maar meestal zul je dat niet willen. In dat geval moet je het gebruiken icm XSL stylesheets die in een klein aantal browsers ondersteund worden, wil je je niet beperken tot deze kleine groep dan moet serverside uit XML en XSL een (X)HTML bestand laten genereren.
ehm.. ik gebruik apache (voor o.a. PHP) .. welke parser voor XML kan ik het beste downloaden ?
XML beschrijf slechts data, dus om dat weer te geven heb je een stap nodig een formaat wat wel gepresenteerd kan worden.
Dit kan bijvoorbeeld door een XML document met een XSL Transformatie te transformeren naar XHTML. XHTML is nog steeds XML, maar een browser kent de bedoeling van een XHTML document en kan het daardoor weergeven.
Ook kan je XML weergeven met CSS. Je hebt dan geen XSL Transformatie nodig. In de praktijk vind ik die transformatie naar XHTML echter veel makkelijker dan een puur CSS gebaseerd oplossing.
Alleen de allernieuwste IE 6.0 en de de laatste Mozilla versies ( > 0.9.6 volgens mij) ondersteunen XSL Transformaties op de client-side, dus dat is vaak geen goede oplossing. Je kunt dan kiezen voor het transformeren op de server-side, maar je kunt op een meer statische site ook gerust off-line transformeren en daarna de zaak uploaden (dit doe ik bij mijn site).
XML server-side alleen parsen is onzinnig. Je helpt een client daar niet erg veel mee. Ik zou mezelf eerst eens wat beter verdiepen in wat XML, XSLT en CSS precies inhoud.
Dit kan bijvoorbeeld door een XML document met een XSL Transformatie te transformeren naar XHTML. XHTML is nog steeds XML, maar een browser kent de bedoeling van een XHTML document en kan het daardoor weergeven.
Ook kan je XML weergeven met CSS. Je hebt dan geen XSL Transformatie nodig. In de praktijk vind ik die transformatie naar XHTML echter veel makkelijker dan een puur CSS gebaseerd oplossing.
Alleen de allernieuwste IE 6.0 en de de laatste Mozilla versies ( > 0.9.6 volgens mij) ondersteunen XSL Transformaties op de client-side, dus dat is vaak geen goede oplossing. Je kunt dan kiezen voor het transformeren op de server-side, maar je kunt op een meer statische site ook gerust off-line transformeren en daarna de zaak uploaden (dit doe ik bij mijn site).
XML server-side alleen parsen is onzinnig. Je helpt een client daar niet erg veel mee. Ik zou mezelf eerst eens wat beter verdiepen in wat XML, XSLT en CSS precies inhoud.
Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment
Verwijderd
Voor PHP is er een XML/XSLT parser die Sablotron heet (geloof ik) of kortweg sablot die kun als module met php meecompileren.
Verwijderd
Zijn er classes die geen mee gecompileerde modules nodig hebben ?Op zaterdag 23 maart 2002 14:11 schreef Zef het volgende:
Voor PHP is er een XML/XSLT parser die Sablotron heet (geloof ik) of kortweg sablot die kun als module met php meecompileren.
Verwijderd
Niet dat ik weet. Maar ik denk het niet, al was het alleen maar om de performance.Op zaterdag 23 maart 2002 15:24 schreef TimD het volgende:
[..]
Zijn er classes die geen mee gecompileerde modules nodig hebben ?
gaan we hier verder...
Als je middels PHP data uit een db haalt, hiermee HTML genereerd heb je toch geen XML nodig ? (bedoel ik geen XML db mee) ..
Als je middels PHP data uit een db haalt, hiermee HTML genereerd heb je toch geen XML nodig ? (bedoel ik geen XML db mee) ..
je kunt dus wel eigenlijk stellen dat xml eigenlijk alleen erg handig is als je gestructureerde date op je pagina's wil hebben (tabellen e.d)
Verwijderd
Nee hoor XML heeft veel meer toepassingen, zoek maar eens hier op GoT, er zijn al veel topics over geweest.Op zaterdag 23 maart 2002 19:03 schreef whitehouse het volgende:
je kunt dus wel eigenlijk stellen dat xml eigenlijk alleen erg handig is als je gestructureerde date op je pagina's wil hebben (tabellen e.d)
probleem :
ik wil in XML een cd-lijst maken.
Nu heb ik deze gemaakt, de XML klopt, maar nu dus met XSL de stylesheet.
Nu wil ik het volgende:
|--------------|
|titel1|nummer1|
| |nummer2|
| |nummer3|
|titel2|nummer1|
enz (ehm..opmaak klopt niet helemaal..gewoon 2 kolommen)
nu heb ik het volgende bedacht, maar dat klopt natuurlijk niet (anders zou ik geen vraag stellen
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<form name="form1">
<table>
<xsl:for-each select="cdverzameling/cd">
<xsl:sort select="titel"/>
<tr>
<td>
<xsl:value-of select="titel"/>
</td>
<td>
<xsl:for-each select="cdverzameling/cd/nummers">
<table>
<tr>
<td>
<xsl:value-of select="nummer"/>
</td>
</tr>
</table>
</xsl:for-each>
</td>
</tr>
</xsl:for-each>
</table>
</form>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
weet iemand hoe ik ervoor zorg dat ik PER regel (waarop een cdtitel staat) in een naastgelegen <td> een lijst met nummers krijg ?
ik wil in XML een cd-lijst maken.
Nu heb ik deze gemaakt, de XML klopt, maar nu dus met XSL de stylesheet.
Nu wil ik het volgende:
|--------------|
|titel1|nummer1|
| |nummer2|
| |nummer3|
|titel2|nummer1|
enz (ehm..opmaak klopt niet helemaal..gewoon 2 kolommen)
nu heb ik het volgende bedacht, maar dat klopt natuurlijk niet (anders zou ik geen vraag stellen
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<form name="form1">
<table>
<xsl:for-each select="cdverzameling/cd">
<xsl:sort select="titel"/>
<tr>
<td>
<xsl:value-of select="titel"/>
</td>
<td>
<xsl:for-each select="cdverzameling/cd/nummers">
<table>
<tr>
<td>
<xsl:value-of select="nummer"/>
</td>
</tr>
</table>
</xsl:for-each>
</td>
</tr>
</xsl:for-each>
</table>
</form>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
weet iemand hoe ik ervoor zorg dat ik PER regel (waarop een cdtitel staat) in een naastgelegen <td> een lijst met nummers krijg ?
Verwijderd
Je kan beter templates gebruiken dan for-each loops. Nu is je code tamelijk ranzig en zeer slecht te volgen. Als je de search gebruikt moet je het zo kunnen omschrijven naar templates.
Maar nu je probleem
. Volgens mij kan je het best een count() gebruiken voor het aantal nummers en dan voor de cd titel <td> een attribuut rowspan="{dat aantal}" gebruiken.
Maar nu je probleem
count als xsl-statement ? ehm..zal ik es zoeken..
<muggezift mode>
</muggezift mode>
client side XSL transformatie werd al ondersteund vanaf IE 5... blijft echter 'n feit dat nogal veel browsers het nog niet altijd niet kunnenAlleen de allernieuwste IE 6.0 en de de laatste Mozilla versies ( > 0.9.6 volgens mij) ondersteunen XSL Transformaties op de client-side, dus dat is vaak geen goede oplossing.
</muggezift mode>
Verwijderd
wat je het best kunt gebruiken voor je tabel is voor elke cd 1 row (tr) nemen. titel in 1 cel (td) met valign="top", alle titel nummers zet je dan in de cel er naast met een <br/> er tussen.
Je kunt op deze manier gemakkelijk templates gebruiken in een stylesheet, dit zou ik ongeveer doen
Je kunt op deze manier gemakkelijk templates gebruiken in een stylesheet, dit zou ik ongeveer doen
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| <xsl:template match="cdverzameling">
<table ...>
<xsl:apply-templates/>
</table>
</xsl:template>
<xsl:template match="cd">
<tr>
<td valign="top"><xsl:value-of select="titel"/></td>
<td><xsl:applly-templates/></td>
</tr>
</xsl:template>
<xsl:template match="nummers/nummer">
<xsl:value-of select="."/><br/>
</xsl:template> |
kijk en huiver :
und ?
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
| <?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl='http://www.w3.org/TR/WD-xsl' language="VBScript">
<xsl:script><![CDATA[
dim iCounter
iCounter = 0
function getIndex()
getIndex = iCounter
end function
function increaseIndex()
iCounter = iCounter + 1
increaseIndex = ""
end function
]]></xsl:script>
<xsl:template match="/">
<style>
body
{
margin-left: 20px;
}
td
{
font-family: Verdana;
font-size: 9pt;
}
a:link,a:visited
{
text-decoration: none;
font-family: 'Verdana';
font-size: 9pt;
font-weight: normal;
color: black;
}
a:active
{
text-decoration: none;
font-family: 'Verdana';
font-size: 9pt;
font-weight: normal;
color:#e0e0ff
}
a:hover
{
text-decoration: underline;
font-family: 'Verdana';
font-size: 9pt;
font-weight: normal;
color:#0f80f0
}
.cellPerson
{
border-bottom: 1px solid #f0f0f0;
}
A.ssmItems:link {color:black;text-decoration:none;}
A.ssmItems:hover {color:black;text-decoration:none;}
A.ssmItems:active {color:black;text-decoration:none;}
A.ssmItems:visited {color:black;text-decoration:none;}
</style>
<script language="JavaScript1.2">
function selectAll(newState)
{
var i, oCBPerson;
for (i=0; (oCBPerson = document.getElementById('cbPerson'+i)) != null; i++)
oCBPerson.checked = newState;
}
</script>
<body>
<form name="form1">
<table border="0" cellspacing="1" cellpadding="0">
<tr>
<td style="border-bottom:1px solid black;"><input type="checkbox" id="cbSelectAll" onClick="selectAll(this.checked);"/></td>
<td style="border-bottom:1px solid black;" id="cellName"><b>Titel</b></td>
<td style="border-bottom:1px solid black;" id="cellEmail"><b>artiest</b></td>
<td style="border-bottom:1px solid black;" id="cellEmail"><b>Year</b></td>
<td style="border-bottom:1px solid black;" id="cellAddress"><b>Nummers</b></td>
</tr>
<xsl:for-each select="cdverzameling/cd" order-by="titel">
<tr onMouseOver="this.style.background='#e8e8ff';"
onMouseOut="this.style.background='white';">
<xsl:attribute name="id">row<xsl:eval>getIndex()</xsl:eval></xsl:attribute>
<td valign="top" class="cellPerson">
<input type="checkbox">
<xsl:attribute name="id">cbPerson<xsl:eval>getIndex()</xsl:eval></xsl:attribute>
</input>
</td>
<td valign="top" class="cellPerson">
<xsl:value-of select="titel" />
</td>
<td valign="top" class="cellPerson">
<xsl:value-of select="artiest" />
</td>
<td valign="top" class="cellPerson">
<xsl:value-of select="Year" />
</td>
<td valign="top" class="cellPerson">
<xsl:for-each select="nummers/nummer">
<a href="#"><xsl:value-of select="." /></a>
<br />
</xsl:for-each>
</td>
</tr>
<xsl:eval>increaseIndex()</xsl:eval>
</xsl:for-each>
</table>
</form>
</body>
</xsl:template>
</xsl:stylesheet> |
und ?
Verwijderd
Omdat je erom vraagtOp maandag 25 maart 2002 19:11 schreef whitehouse het volgende:
kijk en huiver :
und ?
- Ik zie een for-each loopje: foei!
- Je hebt je style sheet in je xsl ingebakken: dubbelfoei!!
Maar als het werkt, werkt het
stylesheet in XSL..hehe..tja..what can I say ? *I am a sinner* 
en dat for-each -loepje..what about it ??
en dat for-each -loepje..what about it ??
Verwijderd
[commentaar]
heb je hem al door de w3c validator gehaalt (of tenminste de output)
<script> moet namelijk een type attribuut hebben. En waarom zet je het ene script wel in CDATA block en het andere niet. Stylesheet idem. type attribuut verplicht en CDATA mag.
[/commentaar]
heb je hem al door de w3c validator gehaalt (of tenminste de output)
<script> moet namelijk een type attribuut hebben. En waarom zet je het ene script wel in CDATA block en het andere niet. Stylesheet idem. type attribuut verplicht en CDATA mag.
[/commentaar]
Mozilla gaat dan bijvoorbeeld piepen.Op maandag 25 maart 2002 21:21 schreef whitehouse het volgende:
stylesheet in XSL..hehe..tja..what can I say ? *I am a sinner*
Rustacean
Pagina: 1