xsl-list
[Top] [All Lists]

RE: [xsl] Newbie Question: Creating Error Description from Invalid Input

2006-10-13 08:38:29
It would be more useful to tell us what you tried, then we could see where
you went wrong.

But you can do it like this:

<xsl:template match="header">
  <xsl:copy-of select="*[child::node()]"
  <xsl:if test="*[not(child::node()]">
    <errorDescription>
     <xsl:text>Invalid elements:</xsl:text>
     <xsl:value-of select="*[not(child::node())]/name()" separator=", "/>
    </errorDescription>
  </xsl:if>
</xsl:template>

That's XSLT 2.0. If you're using 1.0, change the value-of line to

<xsl:for-each select="*[not(child::node())]">
  <xsl:value-of select="name()"/>
  <xsl:if test="position()!=last()">, </xsl:if>
</xsl:for-each>

Michael Kay
http://www.saxonica.com/ 

-----Original Message-----
From: Badari [mailto:badbadri(_at_)yahoo(_dot_)com] 
Sent: 13 October 2006 15:21
To: XSL List
Subject: [xsl] Newbie Question: Creating Error Description 
from Invalid Input

I am a newbie to XSL and am hoping that somebody can help me 
with the following scenario. I tried to use xsl:variable but 
was not successful. :(
 
I have an "errorDescription" element in the target structure. 
Depending on the error condition result on input fields, I 
have to concatenate the field names (that are in error) and 
post them to the errorDescription field.
 
How can I do it?  Any help is appreciated.
 
sample input.
 
<request>
 <header>
  <address1>1234</address1>
  <address2></address2>
  <address3>3456</address3>
  <address4></address4>
 </header>
</request>
 
If all address elements are expected to have values, and 2nd 
and 4th don't have values the output file should look like:
 
<response>
 <header>
  <address1>1234</address1>
  <address3>3456</address3>
  <errorDescription>Invalid Elements: 
Address2,Address4</errorDescription
 </header>
</response>
 
Thanks in advance for your help.
 
Badari

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



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