Altova Mailing List Archives

Re: [xsl] Variable in XPath

From: "Andrew Welch" <andrew.j.welch@--------->
Date: 6/27/2007 2:56:00 PM
On 6/27/07, Garvin Riensche <g.riensche@xxxxxxx> wrote:

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:
   <class id="2" owner="1" name="A"/>
   <class id="3" owner="1" name="B"/>


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

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?)



These Archives are provided for informational purposes only and have been generated directly from the Altova mailing list archive system and are comprised of the lists set forth on Therefore, Altova does not warrant or guarantee the accuracy, reliability, completeness, usefulness, non-infringement of intellectual property rights, or quality of any content on the Altova Mailing List Archive(s), regardless of who originates that content. You expressly understand and agree that you bear all risks associated with using or relying on that content. Altova will not be liable or responsible in any way for any content posted including, but not limited to, any errors or omissions in content, or for any losses or damage of any kind incurred as a result of the use of or reliance on any content. This disclaimer and limitation on liability is in addition to the disclaimers and limitations contained in the Website Terms of Use and elsewhere on the site.