Subject: RE: [xsl] Global location path confusion From: "Michael Kay" <mhkay@xxxxxxxxxxxx> Date: Thu, 22 Feb 2001 23:48:53 -0000 |
> I have the following XSLT stylesheet: > > <?xml version="1.0" encoding="iso-8859-1"?> > <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > version="1.0"> > > <xsl:template match="doc"> > <doc> > <xsl:apply-templates/> > </doc> > </xsl:template> > > <xsl:template match="a"> > <x title="{/doc/@title}"/> > </xsl:template> > > <xsl:template match="b"> > <xsl:param name="content"> > <a/> > </xsl:param> > <xsl:apply-templates select="$content"/> > </xsl:template> > > </xsl:stylesheet> > Note, this will only work with an XSLT 1.1 processor that allows implicit conversion of result-tree-fragments to node-sets. (Eg. recent releases of Saxon). > Then I feed it the following xml: > > <?xml version="1.0" encoding="iso-8859-1"?> > > <doc title="abc"> > <a/> > <b/> > </doc> > > This results in the following output xml: > > <doc> > <x title="abc"></x> > <x title=""></x> > </doc> > When you process the second <a/> node, the template rule looks for the title attribute of the doc element that is a child of the root of the tree containing the <a/> node, and there isn't one. It's a common misunderstanding, exacerbated by the terminology of the spec, that "/doc/x" is an "absolute" location path (or "global" in your words). It isn't: it's relative to the root of the tree that contains the context node. Mike Kay XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Global location path conf, Jeni Tennison | Thread | Re: [xsl] Global location path conf, Jonas Eschenburg |
RE: [xsl] Vendor-specific data-type, Andrew Kimball | Date | RE: [xsl] Transforming XML to a sch, Michael Kay |
Month |