Ik probeer mijn probleem zo duidelijk mogelijk uit te leggen 
Ik heb een project XML opgekregen met als bedoeling SlideML op te stellen, een taal om eenvoudige slides voor te stellen. Te doen:
1. XML Schema opstellen (done)
2. XSL-T script opstellen om een opgegeven XML-bestand te converteren naar mijn formaat (almost done, klein probleem, zie verder)
3. XSL-T script opstellen dat XML-documenten in mijn formaat converteert naar XHTML met daaraan een CSS-file vast (hopelijk vast)
De problemen:
a) De transformatie van het opgegeven XML-document lukt, tot op één elementje. Normaal bestaan bulletlists uit tekst, links of andere lijsten. In de opgegeven file staat er echter bij drie list items het volgende:
Uiteraard dienen die <br/>-tags voor de opmaak van de tekst en heeft dat niets met de XML-structuur te maken, maar zo denken de parser en mijn XSLT-script er niet over natuurlijk.
Wat ik wil doen is het volgende: <li></li> omzetten naar <listitem></listitem> (dit lukt al) en dan de child nodes ervan omzetten naar <text> en <br/>. Het omzetten van <br/> levert geen problemen op, daar heb ik gewoon een template voor aangemaakt. Het omzetten van die tekst lukt mij echter maar niet, aangezien die in die XML-file niet tussen eigen tags staat. Mijn vraag is nu: wat moet ik hiervoor doen? Ik heb al vanalles geprobeer met <xsl:template select="text()">-dingen maar dat lukt allemaal niet, of genereert foute code.
De code van mijn li-template tot nu toe:
(ziehier het volledige script)
2. Het tweede probleem ligt in de opmaak van mijn naar XHTML-getransformeerde documenten. Ik heb een kleine CSS-file opgesteld en een test-document gemaakt en dat werkt perfect (hier te bekijken). Als ik deze in mijn XSLT-script verwerk, negeert het spul mijn stylesheet half (hier te bekijken). Inderdaad, half, vanaf ik een <xsl:apply-templates/> gebruik, wordt mijn stylesheet niet meer gebruikt.
Wat is hier fout aan?
Ik heb een project XML opgekregen met als bedoeling SlideML op te stellen, een taal om eenvoudige slides voor te stellen. Te doen:
1. XML Schema opstellen (done)
2. XSL-T script opstellen om een opgegeven XML-bestand te converteren naar mijn formaat (almost done, klein probleem, zie verder)
3. XSL-T script opstellen dat XML-documenten in mijn formaat converteert naar XHTML met daaraan een CSS-file vast (hopelijk vast)
De problemen:
a) De transformatie van het opgegeven XML-document lukt, tot op één elementje. Normaal bestaan bulletlists uit tekst, links of andere lijsten. In de opgegeven file staat er echter bij drie list items het volgende:
code:
1
2
3
4
5
6
| <ul>
<li>Filter<br/>
filter out uninteresting items,<br/>
reduce size of search
</li>
</ul> |
Uiteraard dienen die <br/>-tags voor de opmaak van de tekst en heeft dat niets met de XML-structuur te maken, maar zo denken de parser en mijn XSLT-script er niet over natuurlijk.
Wat ik wil doen is het volgende: <li></li> omzetten naar <listitem></listitem> (dit lukt al) en dan de child nodes ervan omzetten naar <text> en <br/>. Het omzetten van <br/> levert geen problemen op, daar heb ik gewoon een template voor aangemaakt. Het omzetten van die tekst lukt mij echter maar niet, aangezien die in die XML-file niet tussen eigen tags staat. Mijn vraag is nu: wat moet ik hiervoor doen? Ik heb al vanalles geprobeer met <xsl:template select="text()">-dingen maar dat lukt allemaal niet, of genereert foute code.
De code van mijn li-template tot nu toe:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| <xsl:template match="li">
<listitem>
<xsl:choose>
<xsl:when test="count(child::*) = 0">
<text><xsl:value-of select="."/></text>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
</listitem>
</xsl:template> |
(ziehier het volledige script)
2. Het tweede probleem ligt in de opmaak van mijn naar XHTML-getransformeerde documenten. Ik heb een kleine CSS-file opgesteld en een test-document gemaakt en dat werkt perfect (hier te bekijken). Als ik deze in mijn XSLT-script verwerk, negeert het spul mijn stylesheet half (hier te bekijken). Inderdaad, half, vanaf ik een <xsl:apply-templates/> gebruik, wordt mijn stylesheet niet meer gebruikt.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| <xsl:template match="/">
<html>
<head>
<title>Multimedia Practicum 2: SlideML</title>
<link rel="stylesheet" type="text/css" href="slide.css"/>
</head>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="slide">
<div class="slide">
<xsl:apply-templates/>
</div>
</xsl:template> |
Wat is hier fout aan?
[ Voor 11% gewijzigd door Verwijderd op 24-11-2004 23:10 ]