himit 0 Newbie Poster

Hi,

Please find the 2 XML's

Input XML-

<feed xmlns:es="http://ucmservice"> 
 <element> 
<es:RepositoryDetails> 
    <es:Repository Type="DatabaseRepository" /> 
        <es:ConnetionDetails> 
        <es:Param MigrationSetId="439" /> 
    </es:ConnetionDetails> 
</es:RepositoryDetails> 
<es:DocProperties> 
    <es:UniqueDocId Value="_1_15"> 
            <es:DocProperty propertyName="EmployeeName"> 
                <es:PropValues> 
                  <es:PropValue>Index</es:PropValue> 
                </es:PropValues> 
            </es:DocProperty> 
            <es:DocProperty propertyName="EmployeeAddress">
                      <es:PropValues> 
                        <es:PropValue>Gurgaon</es:PropValue> 
                      </es:PropValues> 
                </es:DocProperty> 
                <es:DocProperty propertyName="Salary"> 
                      <es:PropValues> 
                        <es:PropValue>15000</es:PropValue> 
                      </es:PropValues> 
                </es:DocProperty> 
        </es:UniqueDocId> 
    </es:DocProperties> 
</element> 
 
<element> 
<es:RepositoryDetails> 
    <es:Repository Type="DatabaseRepository" /> 
        <es:ConnetionDetails> 
        <es:Param MigrationSetId="439" /> 
    </es:ConnetionDetails> 
</es:RepositoryDetails> 
<es:DocProperties> 
    <es:UniqueDocId Value="_1_15"> 
            <es:DocProperty propertyName="EmployeeName"> 
                <es:PropValues> 
                  <es:PropValue>Index1</es:PropValue> 
                </es:PropValues> 
            </es:DocProperty> 
            <es:DocProperty propertyName="EmployeeAddress"> 
                      <es:PropValues> 
                        <es:PropValue>Delhi</es:PropValue> 
                      </es:PropValues> 
                </es:DocProperty> 
                <es:DocProperty propertyName="Salary"> 
                      <es:PropValues> 
                        <es:PropValue>15000</es:PropValue> 
                      </es:PropValues> 
                </es:DocProperty> 
        </es:UniqueDocId> 
    </es:DocProperties> 
</element> 
 
<element> 
<es:RepositoryDetails> 
    <es:Repository Type="Trim" /> 
        <es:ConnetionDetails> 
        <es:Param MigrationSetId="439" /> 
    </es:ConnetionDetails> 
</es:RepositoryDetails> 
<es:DocProperties> 
    <es:UniqueDocId Value="_1_15"> 
            <es:DocProperty propertyName="EmployeeName"> 
                <es:PropValues> 
                  <es:PropValue>Quality</es:PropValue> 
                </es:PropValues> 
            </es:DocProperty> 
            <es:DocProperty propertyName="EmployeeAddress">
                      <es:PropValues> 
                        <es:PropValue>Mumbai</es:PropValue> 
                      </es:PropValues> 
                </es:DocProperty> 
                <es:DocProperty propertyName="Salary"> 
                      <es:PropValues> 
                        <es:PropValue>20000</es:PropValue> 
                      </es:PropValues> 
                </es:DocProperty> 
        </es:UniqueDocId> 
    </es:DocProperties> 
</element> 
 
<element> 
<es:RepositoryDetails> 
    <es:Repository Type="DatabaseRepository" /> 
        <es:ConnetionDetails> 
        <es:Param MigrationSetId="439" /> 
    </es:ConnetionDetails> 
</es:RepositoryDetails> 
<es:DocProperties> 
    <es:UniqueDocId Value="_1_15"> 
            <es:DocProperty propertyName="EmployeeName"> 
                <es:PropValues> 
                  <es:PropValue>Index</es:PropValue> 
                </es:PropValues> 
            </es:DocProperty> 
            <es:DocProperty propertyName="EmployeeAddress">
                      <es:PropValues> 
                        <es:PropValue>Gurgaon</es:PropValue> 
                      </es:PropValues> 
                </es:DocProperty> 
                <es:DocProperty propertyName="Salary"> 
                      <es:PropValues> 
                        <es:PropValue>15000</es:PropValue> 
                      </es:PropValues> 
                </es:DocProperty> 
        </es:UniqueDocId> 
    </es:DocProperties> 
</element> 
 
 
<element> 
<es:RepositoryDetails> 
    <es:Repository Type="Trim" /> 
        <es:ConnetionDetails> 
        <es:Param MigrationSetId="439" /> 
    </es:ConnetionDetails> 
</es:RepositoryDetails> 
<es:DocProperties> 
    <es:UniqueDocId Value="_1_15"> 
            <es:DocProperty propertyName="EmployeeName"> 
                <es:PropValues> 
                  <es:PropValue>Index1</es:PropValue> 
                </es:PropValues> 
            </es:DocProperty> 
            <es:DocProperty propertyName="EmployeeAddress">
                      <es:PropValues> 
                        <es:PropValue>Gurgaon</es:PropValue> 
                      </es:PropValues> 
                </es:DocProperty> 
                <es:DocProperty propertyName="Salary"> 
                      <es:PropValues> 
                        <es:PropValue>20000</es:PropValue> 
                      </es:PropValues> 
                </es:DocProperty> 
        </es:UniqueDocId> 
    </es:DocProperties> 
</element></feed>

Required Output XML-

<tree> 
<item level="0" name="15000"> 
    <item level="1" name="Index"> 
        <item level="2" name="Gurgaon"/> 
        <item level="2" name="Mumbai"/> 
    </item> 
    <item level="1" name="Index1"> 
        <item level="2" name="Delhi"/> 
    </item> 
</item> 
<item level="0" name="20000"> 
    <item level="1" name="Quality"> 
        <item level="0" name="Mumbai"/> 
    <item level="1" name="Index1"> 
        <item level="0" name="Gurgaon"/> 
    </item> 
</item> 
</tree>

I tried few things in XSL

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns="http://filenet.com/namespaces/wcm/apps/1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:es="http://ucmservice" exclude-result-prefixes="es"> 
          <xsl:key name="ByType" match="element" use=".//es:DocProperty[1]/es:PropValues/es:PropValue"/>
        <xsl:key name="ByType-Name" match="es:UniqueDocId" use="es:DocProperty[2]/es:PropValues/es:PropValue"/>
    
    <xsl:template match="text()"/> 
    <xsl:template match="feed"> 
        <tree>
            <xsl:apply-templates/> 
        </tree> 
    </xsl:template> 
    <xsl:template match="element"/> 

    <xsl:template match="element[count(.|key('ByType',.//es:DocProperty[1]/es:PropValues/es:PropValue)[1])=1]">
                        <item level="0" name="{es:DocProperties/es:UniqueDocId/es:DocProperty[1]/es:PropValues/es:PropValue}">
                       <xsl:apply-templates select="key('ByType',.//es:DocProperty[1]/es:PropValues/es:PropValue)/*"/>
        </item> 
    </xsl:template> 
    <xsl:template match="es:UniqueDocId"/> 
        
    <xsl:template match="es:UniqueDocId[count(.|key('ByType-Name',es:DocProperty[2]/es:PropValues/es:PropValue)[1])=1]">
        <xsl:if test="(es:DocProperty[1]/@propertyName)!='Error'">
            <item level="1" name="{es:DocProperty[2]/es:PropValues/es:PropValue}"> 
                <xsl:apply-templates select="key('ByType-Name',es:DocProperty[2]/es:PropValues/es:PropValue)/*"/> 
            </item> 
        </xsl:if>
    </xsl:template> 
    
    <xsl:template match="es:DocProperty[3]">
        <xsl:if test="(./@propertyName)!='Error'">
            <item level="2" name="{./es:PropValues/es:PropValue}" />
            <MigrationId>
                <xsl:attribute name="Value"><xsl:value-of select="ancestor-or-self::element/es:RepositoryDetails/es:ConnetionDetails/es:Param/@MigrationSetId"/></xsl:attribute>
            </MigrationId>
            <DocId>
                <xsl:attribute name="Value"><xsl:value-of select="parent::es:UniqueDocId/@Value"/></xsl:attribute>
            </DocId>
        </xsl:if>
    </xsl:template> 
</xsl:stylesheet>

Please advise where am i going wrong

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.