This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: selecting an element in an external doc using its id attribute


Cindy Mazza wrote:
But when I try to find an element whose id attribute is equal to the
value of the 'from' variable, I get an error saying "Unexpected token
[<function>] in path expression."

        <xsl:variable name="from" select="@from"/>
        <xsl:variable name="docnode" select="document('../texts/odes.xml')"/>
        <xsl:message>
          <xsl:value-of select="$docnode//id($from)"/>
        </xsl:message>

You can't use id() this way. A slash '/' in an XPath mus be
followed by another step, and functions, like id(), do not
fall into this category (in XPath 1.0).

Use either a predicete
  <xsl:message>
    <xsl:value-of select="$docnode//*[@id=$from]"/>
  </xsl:message>
(supposed all your ID attributes are named "id")
or change the context using an xsl:for-each:
  <xsl:message>
    <xsl:for-each select="$docnode">
      <xsl:value-of select="id($from)"/>
    </xsl:for-each>
  </xsl:message>

This makes it a bit inconvenient to use id() or key() to
grab elements from another document, but so are the rules...

J.Pietschmann


XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]