Subject: RE: rendering marginal XML
From: "McNally, David" <David.McNally@xxxxxxxxxx>
Date: Fri, 26 Oct 2001 16:09:26 -0400
|
> > <msgSent>
> > <time>time sent</time>
> > <origin>me@xxxxxxxx</origin>
> > <r>you@xxxxxxxxx</r>
> > <recieved>time recieved</recieved>
> > <status>Any error messages, etc</status>
> > <r>you2@xxxxxxxxx</r>
> > <recieved>time recieved</recieved>
> > <status>Any error messages, etc</status>
> > (this repeats for each recipient)
> > </msgSent>
> > (this repeats for each message)
> >
> > The problem is the <recieved> and <status> tags refer to the
> > imediately preceding <r> tag.
>
> If the structure is sufficiently regular you can add the necessary
> <recipient> element by doing
>
> <xsl:template match="r">
> <recipient>
> <name><xsl:value-of select="."/></name>
> <received><xsl:value-of
> select="following-sibling::recieved[1]"/></received>
> <status><xsl:value-of
> select="following-sibling::status[1]"/></status>
> </recipient>
> </xsl:template>
>
Or, to deal with missing Status elements:
<xsl:template match="r">
<xsl:if test="string(following-sibling::*[2]/self::*[name(.)='status'])">
<recipient>
<name><xsl:value-of select="."/></name>
<received><xsl:value-of
select="following-sibling::recieved[1]"/></received>
<status><xsl:value-of select="following-sibling::status[1]"/></status>
</recipient>
</xsl:if>
</xsl:template>
David.
--
David McNally
Software Engineer
Moody's Investors Service
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|