Subject: [xsl] Handling "IDL" Inheritence From: Ram <sram_30@xxxxxxxxx> Date: Thu, 13 Nov 2003 10:13:40 -0800 (PST) |
Hi, I'm generating TTCN-3 output from IDL(Interface Definition Language) input. For that I need to handle inheritence in IDL. For an IDL input like this: module Snake { interface Adder { string accumulate(inout long a); }; interface a:Adder { void success(in string cool); }; interface b:a { long reset(in string c); }; }; The output should look like: module Snake{ group AdderInterface { signature Adder_accumulate (inout long a) return iso8859string; } group aInterface { signature a_success (in iso8859string cool); signature a_accumulate ( inout long a) return iso8859string; } group bInterface { signature b_reset (in iso8859string c) return long; signature b_accumulate (inout long a) return iso8859string; signature b_success (in iso8859string cool); } } I've parsed the IDL file with ANTLR tool and xml serialized it. The xml file after the conceptual mapping with I need to generate the TTCN-3 text output is shown below. <?xml version="1.0" encoding="UTF-8"?> <formatted-xml> <module>module<identifier>Snake</identifier><identifier>{</identifier> <group>group<identifier>Adder</identifier><identifier>{</identifier> <returntype> <iso8859string>iso8859string <operation><identifier>accumulate</identifier> <identifier>(</identifier> <inout>inout<returntype><long>long</long></returntype> <identifier>a</identifier> </inout><identifier>)</identifier> </operation> </iso8859string> </returntype> <identifier>, </identifier> <identifier>}</identifier> </group> <group>group<identifier>a</identifier><identifier>Adder</identifier> <identifier>{</identifier> <returntype> <void>void <operation><identifier>success</identifier> <identifier>(</identifier> <in>in<returntype><iso8859string>iso8859string</iso8859string> </returntype><identifier>cool</identifier> </in><identifier>)</identifier> </operation> </void> </returntype> <identifier>, </identifier> <identifier>}</identifier> </group> <group>group<identifier>b</identifier><identifier>a</identifier> <identifier>{</identifier> <returntype> <long>long <operation><identifier>reset</identifier> <identifier>(</identifier> <in>in<returntype><iso8859string>iso8859string</iso8859string> </returntype><identifier>c</identifier> </in><identifier>)</identifier> </operation> </long> </returntype> <identifier>, </identifier> <identifier>}</identifier> </group> <identifier>}</identifier> </module> </formatted-xml> I could handle generate all stuffs except the inhertence. The XSL I wrote to generate the inheritence output was: <xsl:choose> <xsl:when test="identifier[2]!='{' and identifier[2]=preceding::group/identifier"> signature <xsl:value-of select="$interfaceID"/>_<xsl:value-of select="preceding::returntype/*/operation/identifier"/> ( <xsl:choose> <xsl:when test ="preceding::returntype/*/operation/in"> <xsl:value-of select="preceding::returntype/*/operation/in"/> </xsl:when> <xsl:when test ="preceding::returntype/*/operation/inout"> <xsl:value-of select="preceding::returntype/*/operation/inout"/> </xsl:when> <xsl:when test ="preceding::returntype/*/operation/out"> <xsl:value-of select="preceding::returntype/*/operation/out"/> </xsl:when> </xsl:choose>) <xsl:choose> <xsl:when test="preceding::returntype/*/text()"> return <xsl:value-of select="preceding::returntype/*/text()"/> </xsl:when> </xsl:choose> <xsl:choose> <xsl:when test="preceding::returntype/*/operation/exception"> exception (<xsl:value-of select= "preceding::returntype/*/*/exception/identifier[2]"/>Exception) </xsl:when> </xsl:choose><xsl:text>;</xsl:text> </xsl:when> </xsl:choose> And the output I get is: module Snake{ group AdderInterface { signature Adder_accumulate (inout long a) return iso8859string; } group aInterface { signature a_success (in iso8859string cool); signature a_accumulate (inout long a) return iso8859string ; } group bInterface { signature b_reset (in iso8859string c) return long; // here i've the real problem. It mixes the preceding group // operations. it should be //signature b_accumulate (inout long a) // return iso8859string ; // And the third signature is missing signature b_success (in iso8859string cool) return iso8859string ; } } Someone please help me. Thanks and regards, Ram __________________________________ Do you Yahoo!? Protect your identity with Yahoo! Mail AddressGuard http://antispam.yahoo.com/whatsnewfree XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] How to capture errors in XSLT, Esther Parrilla Endr | Thread | [xsl] Sablotron and PHP, Paul Sleigh |
[xsl] How to capture errors in XSLT, Esther Parrilla Endr | Date | RE: [xsl] Node test--> text -->diff, Andreas L. Delmelle |
Month |