Re: [xsl] test for a empty node

Subject: Re: [xsl] test for a empty node
From: Jeni Tennison <mail@xxxxxxxxxxxxxxxx>
Date: Sun, 29 Apr 2001 17:04:44 +0100
Hi Tanz,

> 1. I would prefer the output to look like this
> street,
> city,
> state,
> postalCode

I guess that you mean you want to have a carriage return rather than
just a space after each comma.  You can either write them in literally
with:

<xsl:value-of select="concat(street, ',
', city, ',
', state, ',
', postalCode)" />

Or you can use a character entity like:

<xsl:value-of select="concat(street, ',&#xA;', city, ',&#xA;',
                             state, ',&#xA;', postalCode)" />

There's no difference between the two as far as the XSLT processor is
concerned.
                             
> 2. Is there way to check that if a "state" does not exist i.e.
> <state></state> (as in xml) to return:

So you mean that the value of state is an empty string rather than
that the element state doesn't exist?  You can check whether the value
of state is an empty string with:

  state = ''

or:

  not(string(state))

To get the output that you want, you need to split up the xsl:value-of
and insert an xsl:if:

  <xsl:value-of select="concat(street, ',&#xA;', city, ',&#xA;')" />
  <xsl:if test="string(state)">
     <xsl:value-of select="concat(state, ',&#xA;')" />
  </xsl:if>
  <xsl:value-of select="postalCode" />

I hope that helps,

Jeni

---
Jeni Tennison
http://www.jenitennison.com/



 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread