xsl-list
[Top] [All Lists]

Re: [xsl] Variable in XPath

2007-06-27 07:55:45
On 6/27/07, Garvin Riensche <g(_dot_)riensche(_at_)gmx(_dot_)net> 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[(_at_)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?

Seems like a long-winded way of just saying you want to check if <class> exists:

<xsl:when test="doc('factbase.xml')/facts/class">

If you then want to do something specific if the @id eq $id then add a
condition inside the xsl:when.

A case of wood-for-the-trees?  (or one too many beers for me at lunch?)

--
http://andrewjwelch.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>