Subject: [xsl] Fill the value for multiple element items from preceding non-empty element From: "E100 SFYang" <SFYang@xxxxxxxxxxxxx> Date: Wed, 5 Dec 2001 08:46:42 +0800 |
Hi, Dear listers; I have a xml like as following: *** xml list ** <docs> <row> <id>1</id> <key>10</key> </row> <row> <id></id> <key></key> </row> <row> <id>3</id> <key>12</key> </row> <row> <id></id> <key></key> </row> <row> <id></id> <key>10</key> </row> </docs> and want to fill the empty stream with the value from preceding corresponding element ** desired transformed xml list *** <docs> <row> <id>1</id> <key>10</key> </row> <row> <id>1</id> <key>10</key> </row> <row> <id>3</id> <key>12</key> </row> <row> <id>3</id> <key>12</key> </row> <row> <id>3</id> <key>10</key> </row> </docs> I can get transformation from following xsl list; but since it deal with 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> sfyang@xxxxxxxxxxxxx XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] building hierarchy from p, John-Mason P. Shacke | Thread | Re: [xsl] Fill the value for multip, Jörg Heinicke |
[xsl] building hierarchy from path , John-Mason P. Shacke | Date | RE: [xsl] building hierarchy from p, Joshua . Kuswadi |
Month |