On Friday 13 October 2006 15:20, Badari wrote:
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>
<xsl:template match="header">
<header>
<xsl:apply-templates mode="valid" />
</header>
<errorDescription>
<xsl:apply-templates mode="invalid" />
</errorDescription>
</xsl:template>
<xsl:template match="*" mode="valid">
<xsl:if test="string(.)!=''">
<xsl:element name="name()">
<xsl:apply-templates />
</xsl:element>
</xsl:if>
</xsl:template>
<xsl:template match="*" mode="invalid">
<xsl:if test="string(.)=''">
<xsl:value-of select="name()" />
<xsl:if test="position()!=last()">; </xsl:if>
</xsl:if>
</xsl:template>
I haven't tested it.
If there is a XPath expression to match elements by whether they have any text
content or not which would be better:
<xsl:template match="header">
<header>
<xsl:apply-templates select="all address* children with content" />
</header>
<xsl:if test="count(all address* children without content) > 0">
<errorDescription>
<xsl:value-of select="all address* children without content" />
</errorDescription>
</xsl:if>
</xsl:template>
Any ideas if such an XPath exists?
Cheers,
Richard
--
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Richard Lewis
Sonic Arts Research Archive
http://www.sara.uea.ac.uk/
JID: ironchicken(_at_)jabber(_dot_)earth(_dot_)li
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
--~------------------------------------------------------------------
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>
--~--