fjh: access denied

Beitrag lesen

Hallo Martin,

Und was soll diese Zeile bedeuten in dem XSL?

<xsl:apply-templates select="document('http://www.camelot-europe.com/herald/servers/Avalon/guilds/588.xml')" />

Das select-Attribut von xsl:apply-templates erwartet einen QName, keine Funktion, die ein Nodeset zurückliefert.

Das stimmt so nicht. Das select-Attribut des xsl:apply-templates-Elements erwartet einen XPath-Ausdruck (expression), der ein Node-Set zurückliefert. Über das Attribut wird festgelegt, für welche Knoten im Stylesheet eine Template Rule gesucht und auf die Knoten angewendet werden soll.

Was erwartest du dir von der Konstruktion?

Ich nehme mir mal die Freiheit, für Ben zu antworten ;-)
Da die document()-Funktion ein Node-Set zurückliefert, ist dies durchaus ein legitimer Ausdruck innerhalb eines select-Ausdrucks. In diesem Falle liefert die document()-Funktion das Wurzelelement des als Arguments übergebenen Dokuments zurück (eine Knotenmenge also, die nur einen Knoten enthält). Der XSLT-Prozessor sieht daraufhin nach, ob es im Stylesheet eine Template Rule für diesen Knoten gibt und führt Sie aus, wenn es Sie gibt.

Grundsätzlich solltest du dich nicht darauf verlassen, dass deine Besucher mit einem Browser kommen, der XML und XSL versteht, und das auch noch in der richtigen Version. Die Transformation sollte auf dem Server laufen, nicht auf dem Client. Der kriegt nur das Ergebnis geliefert, also HTML.

Meine volle Zustimmung....

Gruß
Franz