idref
Prev | General Library Templates | Next

## idref

idref — Extract IDREF from a linking element

## Description

The `idref` template accepts any `xref` or universally linking element as a parameter and returns the local ID that it points to. If it has a `linkend` attribute, it returns that value. If it has a `xlink:href`, it returns that value, parsed as needed to extract just the id reference. Otherwise it returns an empty string.

    <xsl:template name="idref">
      <xsl:param name="xref" select="."></xsl:param>
      <xsl:param name="linkend" select="$xref/@linkend"></xsl:param>
      <xsl:param name="xpointer">
        <xsl:call-template name="xpointer.idref">
          <xsl:with-param name="xpointer" select="$xref/@xlink:href"></xsl:with-param>
        </xsl:call-template>
      </xsl:param>

      <xsl:choose>
        <xsl:when test="string-length($linkend) != 0">
          <xsl:value-of select="$linkend"></xsl:value-of>
        </xsl:when>
        <xsl:when test="string-length($xpointer) != 0">
          <xsl:value-of select="$xpointer"></xsl:value-of>
        </xsl:when>
        <!-- otherwise it's a pointer to some other document -->
      </xsl:choose>
    </xsl:template>

Prev | Up | Next
xpointer.idref | Home | length-magnitude