Subject: [xsl] IDL "inheritence" From: Ram <sram_30@xxxxxxxxx> Date: Fri, 14 Nov 2003 01:52:05 -0800 (PST) |
Hi, I missed few things, i.e. the <xsl:template match=""> item in my previous email. Actually, 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 which 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 inheritence. The XSL I wrote to generate the inheritence output was: <xsl:template match="group"> <xsl:variable name="interfaceID" select="identifier"/> group<xsl:text> </xsl:text><xsl:value-of select="$interfaceID"/>Interface { <xsl:call-template name="generation"/> <xsl:apply-templates select="generation"/> <xsl:apply-templates select="group"/> } </xsl:template> <xsl:template name="generation" match="operation"> <xsl:variable name="interfaceID" select="identifier"/> <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> </xsl:template> 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 -> |
---|---|---|
RE: [xsl] ANN: XSL-FO design and ge, Andreas L. Delmelle | Thread | [xsl] Generating a 2 column table f, Martin Buchan |
RE: [xsl] Sablotron and PHP, Andreas L. Delmelle | Date | [xsl] Generating a 2 column table f, Martin Buchan |
Month |