xpointer.idref — Extract IDREF from an XPointer
The xpointer.idref template returns the
ID portion of an XPointer which is a pointer to an ID within the current
document, or the empty string if it is not.
In other words, xpointer.idref returns
“foo” when passed either #foo
or #xpointer(id('foo')), otherwise it returns
the empty string.
<xsl:template name="xpointer.idref">
<xsl:param name="xpointer">http://...</xsl:param>
<xsl:choose>
<xsl:when test="starts-with($xpointer, '#xpointer(id(')">
<xsl:variable name="rest" select="substring-after($xpointer, '#xpointer(id(')"></xsl:variable>
<xsl:variable name="quote" select="substring($rest, 1, 1)"></xsl:variable>
<xsl:value-of select="substring-before(substring-after($xpointer, $quote), $quote)"></xsl:value-of>
</xsl:when>
<xsl:when test="starts-with($xpointer, '#')">
<xsl:value-of select="substring-after($xpointer, '#')"></xsl:value-of>
</xsl:when>
<!-- otherwise it's a pointer to some other document -->
</xsl:choose>
</xsl:template>