Ik heb een probleem met het opmaken van een XML bestand met XSL.
Deze twee bestanden zouden samen een heel simpel artikel moeten weergeven.
Het probleem zit hem in de alinea's deze zijn in het XML bestand als <p> gedifineerd. Bij alinea's is het de bedoeling dat er een witregel tussen zit. De inhoud van deze <p> tags moet dus met XSL tussen <p> tags in HTML worden gezet.
Ik heb het eerst met een geneste xsl:for-each geprobeerd, maar dat werkte niet. Na wat zoeken vond ik deze uitleg over templates. daar staat precies wat ik wil, maar als ik het doe op een manier als deze (ik heb alle andere varianten ook al geprobeerd) dan werk het niet.
De fout is dan dat xsl:template niet op die plaats mag staan. waarschijnlijk omdat er al eentje geopend is? Dus heb ik geprobeer dom deze eerst te sluiten, maar dan krijg ik weer een fout dat <body> niet afgesloten is (logisch).
XML file:
XSL file:
Samenvatting probleem: Alinea's moeten tussen <p> tags worden gezet en op verschillende regels komen te staan.
Online voorbeeld van hoe het nu is en niet moet
Deze twee bestanden zouden samen een heel simpel artikel moeten weergeven.
Het probleem zit hem in de alinea's deze zijn in het XML bestand als <p> gedifineerd. Bij alinea's is het de bedoeling dat er een witregel tussen zit. De inhoud van deze <p> tags moet dus met XSL tussen <p> tags in HTML worden gezet.
Ik heb het eerst met een geneste xsl:for-each geprobeerd, maar dat werkte niet. Na wat zoeken vond ik deze uitleg over templates. daar staat precies wat ik wil, maar als ik het doe op een manier als deze (ik heb alle andere varianten ook al geprobeerd) dan werk het niet.
PHP:
1
2
3
| <xsl:template match="article/content/chapter/body/p"> <p><xsl:apply-templates/></p> </xsl:template> |
De fout is dan dat xsl:template niet op die plaats mag staan. waarschijnlijk omdat er al eentje geopend is? Dus heb ik geprobeer dom deze eerst te sluiten, maar dan krijg ik weer een fout dat <body> niet afgesloten is (logisch).
XML file:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| <?xml version="1.0" encoding="iso-8859-1" ?> <?xml-stylesheet type="text/xsl" href="article3.xsl" ?> <article> <info> <title>titel</title> </info> <content> <chapter> <title>subtitel</title> <body> <p>Eerst alinea hoofdstuk 1</p> <p>Tweede alinea hoofdstuk 2</p> <p>Derde alinea hoofdstuk 3</p> </body> </chapter> </content> </article> |
XSL file:
PHP:
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
| <?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> <head> <title>Artikel</title> </head> <body> <h1><xsl:value-of select="article/info/title" /></h1> <xsl:for-each select="article/content/chapter"> <h2> <xsl:attribute name="id"> <xsl:value-of select="generate-id()" /> </xsl:attribute> <xsl:value-of select="title" /> </h2> <p><xsl:value-of select="body" /></p> </xsl:for-each> </body> </html> </xsl:template> </xsl:stylesheet> |
Samenvatting probleem: Alinea's moeten tussen <p> tags worden gezet en op verschillende regels komen te staan.
Online voorbeeld van hoe het nu is en niet moet
Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.