Splitting XML using XSLT based on same child Nodes and retain Header part with additional information -


requirement: split body of xml same nodes , in header tag retain original tags , append unique id child nodes of body part of xml.

e.g:

<document> <header>     <time>2011-04-22t10:57:00.000-04:00</time> </header> <child>     <submit>         <application>             ...         </application>     </submit>     <issuingagency>         ...         <agentidentification>             <identificationid>103701978</identificationid>         </agentidentification>         <agentsequenceid>01</agentsequenceid>         <agentsatus>             <statustext>abc</statustext>             <statusdescriptiontext>initial</statusdescriptiontext>         </agentsatus>         ...         ...         ...     </issuingagency> </child> <child>     <submit>         <application>             ...         </application>     </submit>     <issuingagency>         <agentidentification>             <identificationid>103701978</identificationid>         </agentidentification>         <agentsequenceid>01</agentsequenceid>         <agentsatus>             <statustext>r</statustext>             <statusdescriptiontext>renewal</statusdescriptiontext>         </agentsatus>         ...         ...         ...     </issuingagency> </child> <child>     <submit>         <application>             ...         </application>     </submit>     <issuingagency>             ...         <agentidentification>             <identificationid>103701978</identificationid>         </agentidentification>         <agentsequenceid>01</agentsequenceid>         <agentsatus>             <statustext>r</statustext>             <statusdescriptiontext>renewal</statusdescriptiontext>         </agentsatus>             ...             ...             ...     </issuingagency> </child></document> 

now need output as: output1.xml

<document> <header>     <time>2011-04-22t10:57:00.000-04:00</time>     <uniqueid>103701978-01-abc</uniqueid>  </header> <child>     ...     ... information should not removed, have retained      ...     <issuingagency>         <agentidentification>             <identificationid>103701978</identificationid>         </agentidentification>         <agentsequenceid>01</agentsequenceid>         <agentsatus>             <statustext>abc</statustext>             <statusdescriptiontext>initial</statusdescriptiontext>         </agentsatus>     </issuingagency>     ...     ...all information should not removed, have retained     ...  </child></document> 

now here if observed header portion being appended uinque id combination of child/issuingagency/agentidentification/identificationid - child/issuingagency/agentsequenceid - child/issuingagency/agentsatus/statustext

likewise need 3 different xml files. number of generated files dynamic in nature there can 10 childs output may 10 different files header information being added unique id.

i tried generating different files xslt problem unable add header information along them, need guys have fixed. appreciate if addressed quickly. have been trying past 1 week no luck :(

assuming xslt 2.0, following uses xsl:result-document , tunnel parameter:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" xmlns:xs="http://www.w3.org/2001/xmlschema" exclude-result-prefixes="xs" version="2.0">  <xsl:template match="/">   <xsl:apply-templates select="document/child" mode="new-doc"/> </xsl:template>  <xsl:template match="child" mode="new-doc">   <xsl:result-document href="output{position()}.xml">     <xsl:apply-templates select="ancestor::*">       <xsl:with-param name="current-child" select="current()" tunnel="yes"/>     </xsl:apply-templates>   </xsl:result-document> </xsl:template>  <xsl:template match="*">   <xsl:copy>     <xsl:copy-of select="@*"/>     <xsl:apply-templates/>   </xsl:copy> </xsl:template>  <xsl:template match="child">   <xsl:param name="current-child" tunnel="yes"/>   <xsl:if test=". $current-child">       <xsl:copy-of select="."/>   </xsl:if> </xsl:template>  </xsl:stylesheet> 

Comments

Popular posts from this blog

android - Get AccessToken using signpost OAuth without opening a browser (Two legged Oauth) -

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: mockito -

google shop client API returns 400 bad request error while adding an item -