xsl-list
[Top] [All Lists]

RE: Re: XPath expression confusion

2006-01-12 19:25:15
Yes, that throws some light on the problem. Thanks. I've made similar mistakes 
before, even on questions posted to this list. Maybe it will stick in my mind 
this time.
-- 
Charles Knell
cknell(_at_)onebox(_dot_)com - email



-----Original Message-----
From:     David Carlisle <davidc(_at_)nag(_dot_)co(_dot_)uk>
Sent:     Thu, 12 Jan 2006 23:47:36 GMT
To:       xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject:  Re: [xsl] XPath expression confusion


<xsl:variable name="all-reqs" 
select="document('requirements.xml')/requirements//requirement/number" />

  <xsl:template match="/">
    <un-assigned-reqs>
      <xsl:for-each select="$all-reqs">
        <xsl:choose>
          <xsl:when test="/system/components/component/requirement/@number = 
." />

That test can never be true.
If the top level element in requirements.xml is requirements, then the
path starting /system will select the empty node set.

/ at the start of an xpath means the root of the tree containing the
current node, and the current node  here is an item in $all-reqs which
is a tree rooted in the node returned by the document() function.
I suspect you meant

 <xsl:variable name="all-reqs" 
select="document('requirements.xml')/requirements//requirement/number" />
<xsl:variable name="$root" select="/"/>
 
   <xsl:template match="/">
     <un-assigned-reqs>
       <xsl:for-each select="$all-reqs">
         <xsl:choose>
           <xsl:when 
test="$root/system/components/component/requirement/@number = ." />

although you dont need an xsl:choose with an empty branch it looks like
a single xpath is all you need

select="$all-reqs[not(.=$root/system/components/component/requirement/@number)]">
<requirement><xsl:value-of select="." /></requirement>

David

________________________________________________________________________
This e-mail has been scanned for all viruses by Star. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________

--~------------------------------------------------------------------
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>
--~--