[xsl] Variable in XPath

Subject: [xsl] Variable in XPath
From: Garvin Riensche <g.riensche@xxxxxxx>
Date: Wed, 27 Jun 2007 16:47:50 +0200
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