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