|
Subject: Re: key and document() From: James Clark <jjc@xxxxxxxxxx> Date: Tue, 24 Aug 1999 08:15:24 +0700 |
Denys Duchier wrote:
>
> Kay Michael <Michael.Kay@xxxxxxx> writes:
>
> > > 1. the description of xsl:key fails to specify where the nodes that
> > > are being matched come from. I assume that they are all the nodes
> > > in the `primary' source document (does this also include attribute,
> > > namespace, text and processing instruction nodes?)
> >
> > No, they are the nodes of the document that contains the current node when
> > the key() function is invoked. But yes, they can be nodes of any type.
>
> If I understand you correctly, then each document, whether it is the
> `primary' one being transformed or a `secondary' one referred to by
> means of the document() function, has its own collection of keys.
Right. The description of the key() function says:
"...it returns a node-set
containing the nodes ***in the same document as the context node*** that
have a value for the named key equal to this string"
> Thus assuming the following variable declaration:
>
> <variable name="db" select="document('db.xml')"/>
>
> In order to get keys from secondary document $db, I must use an
> expression of the form:
>
> $db/key($name,$value)
>
> is that the intention?
Unfortunately, that's not allowed by the syntax. You have do do
something like:
<xsl:for-each select="document('db.xml')">
<xsl:apply-templates select="key($name,$value)"/>
</xsl:for-each>
> Does it not follow from this that I can never have a key that contains
> nodes from multiple documents?
>
> If a multi-document spanning key is desired, then it must be simulated
> by means of union expressions (thus forcing database merging to be
> expressed at each point of use rather than at the point of
> `definition').
Right. In this respect, key() is just like id().
James
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: key and document(), Denys Duchier | Thread | Re: key and document(), Denys Duchier |
| RE: Multi-Line Elements, Mike Brown | Date | Re: key and document(), Denys Duchier |
| Month |