|
Subject: Re: [xsl] Fill the value for multiple element items from preceding non-empty element From: Jörg Heinicke <joerg.heinicke@xxxxxx> Date: Wed, 5 Dec 2001 08:47:03 +0100 |
<xsl:template match="id|key">
<xsl:choose>
<xsl:when test="not(string(.))">
<xsl:element name="{name()}">
<xsl:value-of select="preceding::*[name() = name(current())
and string(.)][1]"/>
</xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
With <xsl:element> and name() you can shorten your code as above.
Regards,
Joerg
> I can get transformation from following xsl list; but since it deal
> with multiple empty stream items (in my case, id and key),
> I feel it is cumbsome to use a lot of xpath
> preceding expression and xsl:choose elements explicitly.
> Is there a neat and clean way for this kind of transformation
> task? Thanks.
> .
> *** xslt ****
> <?xml version="1.0"?>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
> <xsl:template match="node()">
> <xsl:copy>
> <xsl:apply-templates select="node()"/>
> </xsl:copy>
> </xsl:template>
> <xsl:template match="id|key">
> <xsl:choose>
> <xsl:when test="not(string(.))">
> <xsl:choose><!-- check id element -->
> <xsl:when test="name(.)='id'">
> <id><xsl:value-of select="preceding::id[string(.)][1]"/></id>
> </xsl:when>
> <xsl:when test="name(.)='key'"><!-- check key element -->
> <key><xsl:value-of select="preceding::key[string(.)][1]"/></key>
> </xsl:when>
> <xsl:otherwise/>
> </xsl:choose>
> </xsl:when>
> <xsl:otherwise><xsl:copy-of select="."/></xsl:otherwise>
> </xsl:choose>
> </xsl:template>
> </xsl:stylesheet>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [xsl] Fill the value for multiple e, E100 SFYang | Thread | [xsl] Re: adding unique values to a, E100 SFYang |
| [xsl] Re: [ANN] XPathTester 1.4 (Sa, Dimitre Novatchev | Date | Re: [xsl] XSL and international cha, Jirka Kosek |
| Month |