hobbit_be: Ook voegt ie er nu zelf de xmlns aan toe in het html element (echt mooi vind ik dat niet - ik wil gewoon xslt gebruiken en zeggen dat ie alleen maar doet wat ik wil).
Daar ben ik het toch niet helemaal mee eens

. XSLT heeft kennis van namespaces: voor XSLT is XML+namespaces geen XML. XML+namespaces moet daarom ook niet behandeld worden als XML, maar als XML+namespaces.
Het wordt wel duidelijk wat ik daarmee bedoel als ik een voorbeeld geef. Je zou namespaces kunnen zijn als een enorme prefix voor de echte element naam. Neem bijvoorbeeld dit XHTML document:
XML:
1
2
3
4
5
| <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>whatever</title>
</head>
</html> |
Dit zou je kunnen zien als een verkorte notatie voor het volgende:
XML:
1
2
3
4
5
| <{http://www.w3.org/1999/xhtml}html {http://www.w3.org/XML/1998/namespace}lang="en">
<{http://www.w3.org/1999/xhtml}head>
<{http://www.w3.org/1999/xhtml}title>whatever</{http://www.w3.org/1999/xhtml}title>
</{http://www.w3.org/1999/xhtml}head>
</{http://www.w3.org/1999/xhtml}html> |
XSLT is XML+namespaces en dus blijven de meta constructies die voor namespaces gebruikt worden (xmlns= en prefix: ) niet als zodanig behouden. Een XSLT processor ziet de XML fragmenten die je wilt produceren zoals hierboven in het verbose xhtml voorbeeld. Omdat hij uiteraard weer gewoon XML+namespaces moet produceren, wijzigt hij dit zelf weer in de meta constructies voor namespaces. Dat is dus een feature

.
Wat ik wel mis is dat ik in de XSL zelf geen 'data' kan definieren...
code:
1
| <xsl:text disable-output-escaping="yes">&nbsp;</xsl:text> |
zou ik graag dus in XSL vervangen door <nbsp /> maar dit wil zeggen dat ie zichzelf moet gaan parsen (of het resulterende dan toch, maar hoe je verschillende xsl't achter elkaar doet in 1 go ben ik nog niet uit)
Idd, dat zie je helemaal goed. In principe zijn verschillende traversals over een XML boom nu nog niet mogelijk, maar dat is aangepast in XSLT 2.0: je kan dus templates toepassen op result tree fragments (die er in feite niet meer zijn).
Omdat dit iets is wat je nogal graag wilt doen om een transformatie eenvoudiger te houden (opsplitsen in een aantal eenvoudigere fasen), supporten vrijwel alle processoren dit nu al en er is zelfs een soort standaard methode voor ontworpen (zie
www.exslt.org )