|
Subject: Re: [xsl] change element to sibling's child node From: "Mukul Gandhi" <gandhi.mukul@xxxxxxxxx> Date: Tue, 22 Aug 2006 15:25:33 +0530 |
<?xml version="1.0" encoding="UTF-8"?> <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="stream_loop">
<stream_loop>
<xsl:call-template name="loop">
<xsl:with-param name="n0" select="../number_of_streams" />
<xsl:with-param name="n" select="../number_of_streams" />
</xsl:call-template>
</stream_loop>
</xsl:template><xsl:template match="c_definition"> <xsl:copy> <xsl:copy-of select="service_type" /> <xsl:copy-of select="../CGMS_indicator" /> <PCR_PID_indicator>4112</PCR_PID_indicator> <xsl:apply-templates select="node()[not(self::service_type)]" /> </xsl:copy> </xsl:template>
<xsl:template name="loop"> <xsl:param name="n0" /> <xsl:param name="n" />
<xsl:if test="$n > 0">
<stream>
<xsl:copy-of select="stream_definition/stream_type" />
<PID><xsl:value-of select="4112 + 2*($n0 - $n)" /></PID>
<ECM><xsl:value-of select="4112 + 2*($n0 - $n) + 1" /></ECM>
<xsl:copy-of select="stream_definition/descriptors_loop_length" />
<xsl:copy-of select="stream_definition/descriptor_loop" />
</stream>
<xsl:call-template name="loop">
<xsl:with-param name="n0" select="$n0" />
<xsl:with-param name="n" select="$n - 1" />
</xsl:call-template>
</xsl:if>
</xsl:template>
I need to do xml to xml transform. Here is my problem. Could you please give me the help?
Original XML file: <?xml version="1.0" encoding="UTF-8"?> <blueprint> <co> <co_body> <source_id>100</source_id>
<CGMS_indicator>0</CGMS_indicator> <c_PIP_indicator>0</c_PIP_indicator> <c_definition> <service_type>100</service_type> <HTTP_indicator>0</HTTP_indicator> <number_of_streams>2</number_of_streams> <root_ID>100</root_ID> <stream_loop> <stream_definition>
<stream_type>2</stream_type> <SCID>100</SCID>
<descriptors_loop_length>compute</descriptors_loop_length> <descriptor_loop>
<about_descriptor>some description</about_descriptor>
<additional_descriptor>other description</additional_descriptor> </descriptor_loop> </stream_definition> </stream_loop> </c_definition> </co_body> </co> </blueprint>
Need to do following transforms:
move CGMS_indicator and its text value under c_definition in c_definition: add new element called PCR_PID_indicator, the text value equals to the PID value of first stream in stream loop calculate stream number which start from root_ID and end with root_ID+ number_of_streams, the gap is 1 copy descriptors_loop_length and descriptor_loop from c_definition\stream_loop\stream_definition to c_definition in stream_loop rename stream_definition to stream recursive create stream element number_of_streams times in each stream i: rename SCID to PID, the text value equals 4112+2*i add new element called ECM, the text value equals PID+1
the result XML file:
<?xml version="1.0" encoding="UTF-8"?> <blueprint> <co> <co_body> <source_id>100</source_id>
<c_PIP_indicator>0</c_PIP_indicator> <c_definition> <service_type>100</service_type> <CGMS_indicator>0</CGMS_indicator>
<PCR_PID_indicator>4112</PCR_PID_indicator> <HTTP_indicator>0</HTTP_indicator> <number_of_streams>2</number_of_streams> <root_ID>100</root_ID> <stream_loop> <stream>
<stream_type>2</stream_type> <PID>4112</PID> <ECM>4113</ECM>
<descriptors_loop_length>compute</descriptors_loop_length> <descriptor_loop>
<about_descriptor>some description</about_descriptor>
<additional_descriptor>other description</additional_descriptor> </descriptor_loop> </stream> <stream>
<stream_type>2</stream_type> <PID>4114</PID> <ECM>4115</ECM>
<descriptors_loop_length>compute</descriptors_loop_length> <descriptor_loop>
<about_descriptor>some description</about_descriptor>
<additional_descriptor>other description</additional_descriptor> </descriptor_loop> </stream>
</stream_loop> </c_definition>
<descriptors_loop_length>compute</descriptors_loop_length> <descriptor_loop> <about_descriptor>some description</about_descriptor> <additional_descriptor>other description</additional_descriptor> </descriptor_loop> </co_body> </co> </blueprint>
Thanks,
Jesscia
-- Regards, Mukul Gandhi
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [xsl] change element to sibling's c, Lin, Jessica | Thread | [xsl] xsl:call-template problem, Lin, Jessica |
| Re: [xsl] problem of result returne, andrew welch | Date | Re: [xsl] Calling mutator java meth, Tim Lebo |
| Month |