http://www.w3.org/1999/XSL/Transform

c.resolveNode (id : string) : nodeset

Die Methode resolveNode liefert ein Node aus einer ID eines Dokuments zurück, welche mit generateId erzeugt wurde.

<xsl:variable name="id" select="c.generateId()" />
<xsl:value-of select="c.resolveNode($id)/root/element/@attribute" />

Diese Funktion wird gerne für die Auflösung des Pfades für binäre Daten verwendet. Dies funktioniert in einem Fall jedoch nur bedingt. Sollte die binäre Referenz ein Attribut im XML sein und es soll nach dem Auflösen der ID bspw. der Mimetype abgefragt werden, so funktioniert das nicht.

Das folgende Beispiel zeigt ein Workaround für diesen Fall.

<xsl:stylesheet xmlns:reg="http://exslt.org/regular-expressions" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:onion="http://onionworks.net/2004/data" version="1.0">
<xsl:template match="/">
<xsl:variable name="ref" select="c.resolveNode('E0E0A2')" />
<xsl:variable name="mimeType">
<xsl:choose>
<xsl:when test="count(reg:match($select, 'A\d', 'gi')) > 0">
<xsl:variable name="element" select="c.resolveNode(substring-before($select, 'A'))" />
<xsl:value-of select="$element/@*[local-name() = concat(local-name($ref), '.mimeType')]" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$ref/@onion:mimeType" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
</xsl:template>
</xsl:stylesheet>