I want print C declaration code by XSLT.
Output,if exist node PARAMPOS print his ROOTNAME his FUNCTIONNAME and his PARAMNAME:
MODIFICATION: HOW TRANSFORM CHARACTER "-" TO "_" (OUTPUT MUST BE C LANGUAGE VALID, ONLY ALPHANUMERIC OR UNDERSCORE CHARACTER IS POSSIBLE) in Name-1 (in xml) to Name_1 in output C code text?
enum ParamName
{//ROOTNAME_FUNCTIONNAME_PARAMNAME
Bike_Name_1_PopA,
Bike_Name_1_PopB,
Bike_Name_2_PopX,
//last item
SIGNforLAST
}
Output,if exist node PARAMPOS print his FUNCTIONID and the himself PARAMPOS:
struct Parameter Parameters[SIGNforLAST - 1]
{//{FUNCTIONID,PARAMPOS},
{1, 51},
{1, 52},
{2, 72}
}
from XML
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
<ROOTNAME>Bike</ROOTNAME>
<Function>
<FunctionID>1</FunctionID>
<FunctionName>Name-1</FunctionName>
<FunctionClass>
<PUParam>
<ParamName>PopA</ParamName>
<PUParamOPType>
<ParamPos>51</ParamPos>
</PUParamOPType>
</PUParam>
<PUParam>
<ParamName>PopB</ParamName>
<PUParamOPType>
<ParamPos>52</ParamPos>
</PUParamOPType>
</PUParam>
<PUParam>
<ParamName>PopC-without</ParamName>
<PUParamOPType>
empty
</PUParamOPType>
</PUParam>
</FunctionClass>
</Function>
<Function>
<FunctionID>2</FunctionID>
<FunctionName>Name-2</FunctionName>
<FunctionClass>
<PUParam>
<ParamName>PopX</ParamName>
<PUParamOPType>
<ParamPos>72</ParamPos>
</PUParamOPType>
</PUParam>
</FunctionClass>
</Function>
</ROOT>
Please help me with xsl. For text output I inspired at converting-xml-to-plain-text-how-should-i-ignore-handle-whitespace-in-the-xslt. But my XSL is first attempt.
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE xsl:transform [
<!ENTITY s "<xsl:text xmlns:xsl='http://www.w3.org/1999/XSL/Transform'> </xsl:text>" >
<!ENTITY s2 "<xsl:text xmlns:xsl='http://www.w3.org/1999/XSL/Transform'> </xsl:text>" >
<!ENTITY s4 "<xsl:text xmlns:xsl='http://www.w3.org/1999/XSL/Transform'> </xsl:text>" >
<!ENTITY s6 "<xsl:text xmlns:xsl='http://www.w3.org/1999/XSL/Transform'> </xsl:text>" >
<!ENTITY e "<xsl:text xmlns:xsl='http://www.w3.org/1999/XSL/Transform'></xsl:text>" >
<!ENTITY n "<xsl:text xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
</xsl:text>" >
]>
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:output method="text"/>
<xsl:template match="ROOTNAME">
<xsl:for-each select="Function">
<xsl:value-of select="FunctionID"/>&s2;<xsl:value-of select="FunctionName"/>&s2;
<xsl:value-of select="FunctionClass/PUParam/ParamName"/>&n;
</xsl:for-each>
</xsl:template>
</xsl:transform>