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

Re: Variable in XPath

Subject: Re: Variable in XPath
From: "Dimitre Novatchev" <dnovatchev@xxxxxxxxx>
Date: Wed, 27 Jun 2007 08:49:54 -0700
Re:  Variable in XPath
Assuming that there is a value that cannot be used as a legitimate
value for the "id" attribute, define the $pId xsl:param to have this
value.

doc('factbase.xml')/facts/class/@id = $pId
or
doc('factbase.xml')/facts/class[$pId = 'notId']


If it the class of possible values is known in advance, define the $pId param to any value outside this class. For example, if the possible values can only be numbers,

doc('factbase.xml')/facts/class/@id = $pId
or
doc('factbase.xml')/facts/class[not(number($pId) = number($pId))]




-- Cheers, Dimitre Novatchev --------------------------------------- Truly great madness cannot be achieved without significant intelligence. --------------------------------------- To invent, you need a good imagination and a pile of junk ------------------------------------- You've achieved success in your field when you don't know whether what you're doing is work or play





On 6/27/07, Garvin Riensche <g.riensche@xxxxxxx> wrote:
Hello,

I hope that anyone can help me with the following. I want to write a
stylesheet that is used to check if an element (class) with a special ID
which is given as variable from the commandline exists in the source or
not. If no variable is supplied I want to test if there are "class"
nodes at all. Of course it's no problem to check if a node with a
special ID exists or not. But what do I use as default value of the
variable so that all "class" nodes are selected if no variable is supplied.

(not working) example:
XML:
<facts>
  <class id="2" owner="1" name="A"/>
  <class id="3" owner="1" name="B"/>
<facts>

XSLT:

<xsl:variable name="id" select="attribute::*"/>

<xsl:template match="//condition/and-condition">
[...]
<xsl:when test="doc('factbase.xml')/facts/class[@id eq $id]">
[...]

The test should be true if $id is set to "2" or "3" and if $id is not
set at all. So, the key is the comparison "@id eq $id" and the default
value of $id. "attribute::*" as default value is obviously wrong. Which
default value do I have to use to test if class nodes exist at all?

regards,
Garvin

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.