Ik heb een menu-definitie in xml en twee stylesheets om dat om te zetten naar een boom-structuur; 1 voor (x)html en 1 voor wml
omzetten naar html is eenvoudig; Gewoon gebruik maken van het <ul> en <li> html element.
Helaas wordt dat in wml niet ondersteunt en zal ik met white-spaces moeten werken. Kom er alleen niet uit om dit voor mekaar te krijgen, zodat een menu met onbeperkte diepte netjes in een boom-structuur wordt uitgeprint.
een menu-definitie ziet er zo uit:
en m'n menu.html.xsl stylesheet zo:
iemand die hier een lichtje op kan schijnen?
omzetten naar html is eenvoudig; Gewoon gebruik maken van het <ul> en <li> html element.
Helaas wordt dat in wml niet ondersteunt en zal ik met white-spaces moeten werken. Kom er alleen niet uit om dit voor mekaar te krijgen, zodat een menu met onbeperkte diepte netjes in een boom-structuur wordt uitgeprint.
een menu-definitie ziet er zo uit:
code:
1
2
3
4
5
6
7
8
9
10
11
| <?xml version="1.0" encoding="ISO-8859-1"?>
<menus label="Drinks">
<menu label="Drinks">
<menuItem type="link" url="" title="" label="Add a mix"/>
<menuItem type="text" title="" label="View drinks" expanded="true">
<menuItem type="link" url="" title="" label="Per category"/>
<menuItem type="link" url="" title="" label="View all drinks"/>
</menuItem>
<menuItem type="link" url="" title="" label="Search a drink"/>
</menu>
</menus> |
en m'n menu.html.xsl stylesheet zo:
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
| <?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="templates.xsl"/>
<xsl:param name="theme">default</xsl:param>
<xsl:param name="lang">en-us</xsl:param>
<xsl:output method="html"
encoding="utf-8"
omit-xml-declaration="yes"
media-type = "text/html"
version="1.0"
doctype-system="http://www.w3.org/TR/html4/strict.dtd"
doctype-public="-//W3C//DTD HTML 4.01//EN"
indent="yes"/>
<xsl:template match="menus">
<html>
<head>
<title><xsl:value-of select="@label"/></title>
<xsl:element name="link">
<xsl:attribute name="rel">stylesheet</xsl:attribute>
<xsl:attribute name="href"><xsl:value-of select="concat('css/', $theme, '.css')"/></xsl:attribute>
<xsl:attribute name="type">text/css</xsl:attribute>
</xsl:element>
</head>
<body class="menu">
<xsl:call-template name="header"/>
<xsl:apply-templates select="menu"/>
<xsl:call-template name="footer"/>
</body>
</html>
</xsl:template>
<xsl:template match="menu">
<br/><p align="center" class="heading"><xsl:value-of select="@label"/></p>
<table class="menu">
<tr class="menu">
<td class="menu">
<ul class="menu"><xsl:apply-templates select="menuItem"/></ul>
</td>
</tr>
</table>
</xsl:template>
<xsl:template match="menuItem[not(menuItem)]">
<xsl:element name="li">
<xsl:attribute name="class">menu</xsl:attribute>
<xsl:apply-templates select="current()" mode="specific"/>
</xsl:element>
</xsl:template>
<xsl:template match="menuItem[menuItem]">
<xsl:element name="li">
<xsl:attribute name="class">menu</xsl:attribute>
<xsl:apply-templates select="current()" mode="specific"/>
<ul><xsl:apply-templates select="menuItem"/></ul>
</xsl:element>
</xsl:template>
<xsl:template match="menuItem[@type='link']" mode="specific">
<xsl:element name="a">
<xsl:attribute name="href"><xsl:value-of select="@url"/></xsl:attribute>
<xsl:call-template name="standardAttributes"/>
<xsl:value-of select="@label"/>
</xsl:element>
</xsl:template>
<xsl:template match="menuItem[@type='text']" mode="specific">
<xsl:element name="a">
<xsl:attribute name="class">output</xsl:attribute>
<xsl:call-template name="standardAttributes"/>
<xsl:value-of select="@label"/>
</xsl:element>
</xsl:template>
<xsl:template name="standardAttributes">
<xsl:attribute name="title"><xsl:value-of select="@title"/></xsl:attribute>
<xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
<xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
</xsl:template>
</xsl:stylesheet> |
iemand die hier een lichtje op kan schijnen?