RE: [xsl] Scope of xml source, includes, and inline xml

Subject: RE: [xsl] Scope of xml source, includes, and inline xml
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Thu, 31 Mar 2005 21:53:13 +0100
> The following xml document is our main document, which I still don't
> have the terminology for.  It might look like:
> <data>
>   <foo>1</foo>
>   <foo>3</foo>
>   <foo>5</foo>
>   <foo>2</foo>
>   <foo>99</foo>
> </data>
> Lets say our XSLT creates a global variable "foo_test" and it imports
> an external data source which looks like:
> <foo_test>
>   <foo>3</foo>
>   <foo>99</foo>
> </test_foo>
> Will the following expression work:
> <xsl:apply-templates select="data/foo = $foo_test//foo"/>

The expression (data/foo = $foo_test//foo) returns the boolean value true,
indicating that a match exists. xsl:apply-templates can only be applied to
nodes, not to booleans.

If you want to apply templates to all nodes in <data> that have a
counterpart in <foo_test>, you can use:

<xsl:apply-templates select="data/foo[. = $foo_test/foo_test/foo]"/>
> Resulting in a match on:
> foo = 3; and foo = 4

Where did you get foo = 4 from?
> Now, let do the reverse of this and match on all $foot_test foo
> elements so we have:
> <xsl:apply-templates select="$foo_test//foo"  mode="my_external_foo"/>
> And we have the template:
> <xsl:template match="foo" mode="my_external_foo">
>   <!-- AT THIS POINT.. 

Assign a global variable to the "main XML source" using
<xsl:variable name="root" select="/"/>

Michael Kay

Current Thread