xsl-list
[Top] [All Lists]

RE: [xsl] Xpath and Ranges

2006-08-04 07:07:28

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(_at_)saxonica(_dot_)com]
Sent: Friday, August 04, 2006 8:35 AM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
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/


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>