[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Correct way to test for no match

Subject: Re: Correct way to test for no match
From: Wendell Piez <wapiez@xxxxxxxxxxxxxxxx>
Date: Thu, 01 Oct 2009 17:43:43 -0400
Re:  Correct way to test for no match
Dan,

At 04:04 PM 10/1/2009, you wrote:
I have a structure where I need to match values between w element attributes. These elements are in different parst of the document. Problem I'm trying to solve is when there is a typo in one of the attributes and there is no match. I thought this would do it, but it's not
<xsl:when test="ancestor::ipb/figure/subfig/graphic[@boardno=$sht_num]/@boardno">


same with this

<xsl:when test="ancestor::ipb/figure/subfig/graphic[@boardno=$sht_num]/@boardno = ''">

Any suggestions?

I think you probably want "ancestor::ipb/figure/subfig/graphic/@boardno=$sht_num" as a positive test -- this will be true if there is a match (there exists a graphic/@boardno in that place whose value is $sht_num).


This is a somewhat more direct version of your first effort, which is true when there are ancestor::ipb/figure/subfig/graphic elements whose @boardno = $sht_num, by virtue of the fact that they (necessarily) have a @boardno. But I'm not sure you want a positive test: your description suggests you want to know when there isn't.

Your second attempt can be true only if $sht_num is "", and never otherwise. (It will also fail if no graphic elements are found on that path.)

If you want a negative test, which will come back true if there is no graphic whose @board_no is $sht_num, the way to do that is

test="not(ancestor::ipb/figure/subfig/graphic/@boardno=$sht_num)"

Or, of course, you can use the xsl:otherwise clause.

Good luck,
Wendell

Here is the doc structure:

<ipb>
  <figure>
    <subfig>
      <graphic boardno='a'/>
    </subfig>
  </figure>
  <table>
    <row>
      <entry><ipbilus><xref shtref='b'/></ipbilus>
      </entry>
    </row>
  </table>
</ipb>

$sht_num is set to xref/@shtref so b never finds a on graphic


======================================================================
Wendell Piez                            mailto:wapiez@xxxxxxxxxxxxxxxx
Mulberry Technologies, Inc.                http://www.mulberrytech.com
17 West Jefferson Street                    Direct Phone: 301/315-9635
Suite 207                                          Phone: 301/315-9631
Rockville, MD  20850                                 Fax: 301/315-8285
----------------------------------------------------------------------
  Mulberry Technologies: A Consultancy Specializing in SGML and XML
======================================================================

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.