RE: [xsl] Xpath and Ranges

Subject: RE: [xsl] Xpath and Ranges
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Fri, 4 Aug 2006 15:07:12 +0100
> Here is the template where I am trying to grab a set of nodes 
> in order to wrap them in a parent node (since this is docbook 
> Im trying to wrap things in sect1)
> 
> <xsl:template match="for $T1 in (//title)[1], $T2 in 

The match attribute of xsl:template must be a pattern, it can't be a
generalized XPath expression. 

Use xsl:apply-templates to select the nodes that you want to process, use
xsl:template to define what processing to apply to the selected nodes.

I suspect that what you want might be something like:

<xsl:template match="/">
  <sect1>
    <xsl:copy-of select="for $T1 in (//title)[1], $T2 in (//title)[2] 
              return ($T1, //*[. &gt;&gt; $T1 and . &lt;&lt; $T2])"/>
  </sect1>
</xsl:template>

but not quite: because if there's an X element that passes the test, then
the children of X will probably pass it too, and if you copy X then you
don't want to copy its children, or they'll end up in the output twice.

So: you asked for an XPath expression that selected all the nodes between
the two titles, but I don't think that's what you really wanted. It might be
best to explain the real problem that you're trying to solve.

Michael Kay
http://www.saxonica.com/


> (//title)[2] return ($T1, //*[. &gt;&gt; $T1 and . &lt;&lt; $T2])">
> 	<xsl:element name="sect1">
> 	<xsl:apply-templates/>
> 	</xsl:element>
> </xsl:template>
> 
> I've installed Saxon 8.7.3N, and use XMLSpy with this commandline:
> c:\saxon\Transform.exe -o %2 %1 %3
> 
> The error I get is:
> 
> XSLT Pattern syntax error at char 0 on line 83 (the template 
> above), In {for $}: Unexpected token in patter, found "for"
> Failed to compile stylesheet, 1 error detected.
> 
> Hope that helps..let me know if I can supply any more information.
> 
> FYI the material Im apply this too is going to be open to the 
> public (its actually apart of the OGL, open gaming license).  
> So, Im trying to learn how to apply XPATH.
> 
> Thanks!
> 
> David White
> 
> -----Original Message-----
> From: Michael Kay [mailto:mike@xxxxxxxxxxxx]
> Sent: Friday, August 04, 2006 8:35 AM
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: RE: [xsl] Xpath and Ranges
> 
> > 
> > Could it be my software? XMLSpy 2006?
> > 
> 
> Does your xsl:stylesheet element specify version="2.0"? IIRC, 
> XMLSpy invokes a 2.0 processor when you specify 
> version="2.0", and a 1.0 processor otherwise.
> 
> Michael Kay
> http://www.saxonica.com/

Current Thread