Thomas J.S.: Ignoriert Xalan Fragment-Identifier?

Beitrag lesen

Hallo Simon,

ich habe folgendes Element:

<include href="andereDatei.xml#ElementID" />

Das Stylesheet soll jetzt in die Datei gehen und das Element mit der angegebenen ID raussuchen. Mein Template dazu:

<xsl:template match="include">
<xsl:apply-templates select="document(@href)" />
</xsl:template>

Aber egal was ich als Fragment Identifier übergebe, Xalan liefert immer das Root-Node der Datei.

klar. der prozessor weiss ja nicht was du ihm übergibst. kann ihm ja aich egal sein. aber mich hat er nicht aufgefordert den # zu maskieren.

(Außerdem fordert er mich auf, den Slash zu kodieren (/->%2F), obwohl dies laut XPointer-Doku eigentlich nicht nötig sein sollte.)

aber Xpointer würde dir "andereDatei.xml#xpointer(id('ElementID'))" sagen.

Falls dies kein Fehler sein sollte: gäbe es irgendeinen anderen Weg, den XPath auf das externe Element in meinem <include>-Element zu übergeben?

du könntest es so machen:

<xsl:template match="include">
<xsl:variable name="idWert" select="substring-after(@href,'#')" />
<xsl:apply-templates select="document(@href)//*[@id = $idWert]"/>
</xsl:template>

grüße
Thomas