Subject: [xsl] Grouping elements in xslt 1.0 From: lee qm <akimilee@xxxxxxxxx> Date: Tue, 1 Dec 2009 15:50:02 +0800 |
I am using xslt 1.0. Input xml (simplified version): <?xml version="1.0" encoding="utf-8"?> <ASBMessage id="id" version="version" timestamp="timestamp"> <Body items="items"> <AccountData operation="operation"> <Account> <ID value="value" namespace="namespace"/> <ID value="value" namespace="namespace"/> <Type id="id"/> </Account> </AccountData> </Body> </ASBMessage> Expected output: <?xml version="1.0" encoding="utf-8"?> <data> <o t="TVEQE_ASBMessage"> <a n="id"> <v s="id"/> </a> <a n="timestamp"> <v s="timestamp"/> </a> <a n="version"> <v s="version"/> </a> <a n="TVEQE_Body"> <o t="TVEQE_Body"> <a n="items"> <v s="items"/> </a> <a n="TVEQE_AccountData"> <o t="TVEQE_AccountData"> <a n="operation"> <v s="operation"/> </a> <a n="TVEQE_Account"> <o t="TVEQE_Account"> <a n="TVEQE_ID"> <o t="TVEQE_ID"> <a n="namespace"> <v s="namespace"/> </a> <a n="value"> <v s="value"/> </a> </o> <o t="TVEQE_ID"> <a n="namespace"> <v s="namespace"/> </a> <a n="value"> <v s="value"/> </a> </o> </a> <a n="TVEQE_Type"> <o t="TVEQE_Type"> <a n="id"> <v s="id"/> </a> </o> </a> </o> </a> </o> </a> </o> </a> </o> </data> My xslt below does not generate the expected output for similar element which appeared more than once. <xsl:template match="/ASBMessage"> <data> <o t="TVEQE_{name(.)}"> <xsl:for-each select="@*"> <a n="{name(.)}"><v s="{.}"></v></a> </xsl:for-each> <xsl:apply-templates/> </o> </data> </xsl:template> <xsl:template match="*"> <a n="TVEQE_{name(.)}"> <o t="TVEQE_{name(.)}"> <xsl:for-each select="@*"> <a n="{name(.)}"><v s="{.}"></v></a> </xsl:for-each> <xsl:apply-templates/> </o> </a> </xsl:template> For example, for <ID> element which appeared twice, it generated, <a n="TVEQE_ID"> <o t="TVEQE_ID"> <a n="namespace"> <v s="namespace"/> </a> <a n="value"> <v s="value"/> </a> </o> </a> <a n="TVEQE_ID"> <o t="TVEQE_ID"> <a n="namespace"> <v s="namespace"/> </a> <a n="value"> <v s="value"/> </a> </o> </a> The expected output is to have both ID element encapsulated in single <a></a> element. Any help is appreciated. Thanks.
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] XSL-List Guidelines, Mulberry Technologie | Thread | RE: [xsl] Grouping elements in xslt, Michael Kay |
[xsl] XSL-List Guidelines, Mulberry Technologie | Date | RE: [xsl] Grouping elements in xslt, Michael Kay |
Month |