John-Mark,
At 02:27 PM 5/10/2004, you wrote:
I am trying to use xsl:key to index a set of elements from another document.
When I try to do:
<xsl:key match="document('ed.xml')/root/sup" use="@name"/>
I get:
XPath error : Invalid expression
//document('ed.xml')/root/sup
^
compilation error: file tb.xml line 7 element key
xsl:key : XPath pattern compilation failed '//document('ed.xml')/root/sup'
It appears that a // is being prepended to my XPath query, which is causing
it to fail. Is this suppose to be a valid construct (using document in
an xsl:key match term)? Or is this a bug in the library?
It's not a valid construct. The match attribute on xsl:key must follow the
same restrictions on match patterns in general.
Just declare the key with a match as if it were a match on a template
(match="sup" would do, or match="root/sup"), and then when you need to
retrieve the node you want, change context to the ed.xml document. The key
function will then work within that context. (I'd give an example but since
you haven't said what you're doing with the key, it might not apply. Ask
again if you need to.)
I hope that helps,
Wendell
After additional reading of: http://www.w3.org/TR/xslt#NT-Pattern
It appears this construct is not allowed. Is this correct?
Yes, it is: not allowed.
======================================================================
Wendell Piez
mailto:wapiez(_at_)mulberrytech(_dot_)com
Mulberry Technologies, Inc. http://www.mulberrytech.com
17 West Jefferson Street Direct Phone: 301/315-9635
Suite 207 Phone: 301/315-9631
Rockville, MD 20850 Fax: 301/315-8285
----------------------------------------------------------------------
Mulberry Technologies: A Consultancy Specializing in SGML and XML
======================================================================