[xsl] Issue with copying an element

Subject: [xsl] Issue with copying an element
From: Microthunder <microthunder@xxxxxxxxx>
Date: Wed, 20 Dec 2006 10:27:52 -0800 (PST)
Hi All, 

I am new to xsl programming. I am trying to copy an element and
paste it in the same level as the copied element. I am using some condition
to check for an element value to decide whether to copy of or not. I am using
2 xml files and a xsl. I have attached the xml and xsl files. In
contentA-format2.xml, I am checking for "zh_CN" value under
packageBody/importCon=
tentInstance/contentInstance/relation/attribute@language/valueString, if
"zh_CN" is not present, then I need to copy the entire <relation> node and
paste it under packageBody/importContentInstance/contentInstance/. And also I
need to apply the   
<xsl:template
match=3D"relation[@name=3D'CONTENT-MANAGEMENT-CT-LITERATURE-TRANS']/*"> 
again
for the copied element.=0A=0AWhen I apply the xsl, the <relation> element is
getting copied inside the original =
<relation> itself.
contentA-format2.xml:-
<?xml version="1.0" encoding="UTF-8"?>
<packageBody>
<importWorkflow>
 </importWorkflow>
 <importContentType>
 </importContentType>
<importContentType>
 </importContentType>
 <importContentInstance>
  <group
name="VGNGRP_1" />
  <contentInstance
vcmId="b3489d5648b9f010VgnVCM10000081141eacRCRD"
vcmLogicalPath="/www/Literature/FPD" vcmName="Testing - FPD 32">
<contentTypeId>
    0d82968ac17b8010VgnVCM1000005e191eac____
</contentTypeId>
   <attribute name="literature-id">
    <valueString>
a3489d5648b9f010VgnVCM10000081141eac____
    </valueString>
   </attribute>
<attribute name="name">
    <valueString>Testing - FPD 32</valueString>
</attribute>
   <attribute name="brand">
    <valueString></valueString>
</attribute>
   <attribute name="type">
    <valueString>SPECF</valueString>
</attribute>
   <attribute name="format">
    <valueString></valueString>
</attribute>
   <attribute name="thumbnail">
    <valueString></valueString>
</attribute>
   <attribute name="revision-date">
    <valueDate></valueDate>
</attribute>
   <attribute name="owner">
    <valueString></valueString>
</attribute>
   <relation name="CONTENT-MANAGEMENT-CT-LITERATURE-TRANS">
<attribute name="CT-LITERATURE-TRANS-LITERATUREID">
     <valueString>
a3489d5648b9f010VgnVCM10000081141eac____
     </valueString>
    </attribute>
<attribute name="trans-id">
     <valueInt>81</valueInt>
    </attribute>
<attribute name="title">
     <valueString>FPD32 - English</valueString>
</attribute>
    <attribute name="description">
     <valueString>FPD32 -
English</valueString>
    </attribute>
    <attribute name="language">
<valueString>en_US</valueString>
    </attribute>
    <attribute name="file">
<valueString></valueString>
    </attribute>
    <attribute name="partnumber">
<valueString></valueString>
    </attribute>
   </relation>
   <acl>
<entry name="vgnadmin" type="user">
     <grants>
      <capability
application="VCM"
       name="MODIFY_TAX_ASSOCS" />
      <capability
application="VCM" name="MODIFY" />
      <capability application="VCM"
name="MODIFY_ACL" />
      <capability application="VCM" name="DELETE" />
<capability application="VCM"
       name="PROMOTE_AND_DEMOTE" />
<capability application="VCM"
       name="SECURITY_READ" />
      <capability
application="VCM"
       name="DEPLOY_AND_UNDEPLOY" />
      <capability
application="VCM"
       name="FLSLITERATURECT_READ" />
      <capability
application="VCM"
       name="SECURITY_WRITE" />
      <capability
application="VCM"
       name="FLSLITERATURECT_WRITE" />
      <capability
application="VCM"
       name="WORKFLOW_DEF_READ" />
      <capability
application="VCM"
       name="FLSLITERATURECT_DELETE" />
     </grants>
</entry>
   </acl>
  </contentInstance>
 </importContentInstance>
</packageBody>

contentA-Translated.xml:-

<?xml version="1.0"
encoding="UTF-8"?>
<packageBody
xmlns="http://www.vignette.com/xmlschemas/importexport";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xsi:schemaLocation="http://www.vignette.com/xmlschemas/importexport
7202/packageBody.xsd">
 <contentInstance
vcmID="b3489d5648b9f010VgnVCM10000081141eacRCRD">
<contentid>a3489d5648b9f010VgnVCM10000081141eac____</contentid>
<transid>81</transid>
  <title>FPD32 - English</title>
  <teaser />
  <body />
<description>FPD32 - English 111</description>
  <keywords />
<language>en_US</language>
 </contentInstance>
 <contentInstance
vcmID="b3489d5648b9f010VgnVCM10000081141eacRCRD">
<contentid>a3489d5648b9f010VgnVCM10000081141eac____</contentid>
<transid>81</transid>
  <title>FPD32 - CHINESE</title>
  <teaser />
  <body />
<description>FPD32 - CHINESE</description>
  <keywords />
<language>zh_CN</language>
 </contentInstance>
</packageBody>

merge.xslt:-
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
xmlns:exsl="http://exslt.org/common";
xmlns:vign="http://www.vignette.com/xmlschemas/importexport";>
<xsl:output
method="xml" encoding="UTF-8" indent="yes"/>
  <xsl:param name="xml2" />
<xsl:template match="/">
    <xsl:apply-templates select="@*|node()"/>
</xsl:template>
  <xsl:template
match="relation[@name='CONTENT-MANAGEMENT-CT-LITERATURE-TRANS']/*">
<xsl:variable name="tagName">
      <xsl:value-of select="@name"/>
</xsl:variable>
     <xsl:variable name="contentId"
select="../attribute[@name='CT-LITERATURE-TRANS-LITERATUREID']/valueString/te
xt()"/>
     <xsl:variable name="language"
select="../attribute[@name='language']/valueString/text()"/>
<xsl:choose>
       <xsl:when
test="exsl:node-set($xml2)/packageBody/contentInstance[contentid=$contentId
and language=$language]/*[local-name()=$tagName]">
         <xsl:copy-of
select="exsl:node-set($xml2)/packageBody/contentInstance[contentid=$contentId
and language=$language]/*[local-name()=$tagName]"/>
       </xsl:when>
<xsl:otherwise>
         <xsl:copy-of select="."/>
       </xsl:otherwise>
</xsl:choose>
  </xsl:template>
  <xsl:template
match="//relation[@name='CONTENT-MANAGEMENT-CT-LITERATURE-TRANS']/attribute[@
name='language']">
      <xsl:choose>
         <xsl:when
test="/valueString/text() = 'zh_CN'">
         </xsl:when>
<xsl:otherwise>
      <xsl:for-each
select="//relation[@name='CONTENT-MANAGEMENT-CT-LITERATURE-TRANS']/attribute[
@name='language']">
    <xsl:if test="valueString[.='en_US']">
<xsl:copy-of select=".."/>
     <xsl:copy>
           <xsl:copy-of
select="."/>
     </xsl:copy>
    </xsl:if>
      </xsl:for-each>
</xsl:otherwise>
      </xsl:choose>
  </xsl:template>
  <xsl:template
match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates
select="@*|node()"/>
    </xsl:copy>
  </xsl:template>
</xsl:stylesheet>
Output should look like :-

<?xml version="1.0" encoding="UTF-8"?>
<packageBody>
 <importWorkflow></importWorkflow>
 <importContentType>
</importContentType>
 <importContentType>
 </importContentType>
<importContentInstance>
  <group name="VGNGRP_1" />
  <contentInstance
vcmId="b3489d5648b9f010VgnVCM10000081141eacRCRD"
vcmLogicalPath="/www/Literature/FPD" vcmName="Testing - FPD 32">
<contentTypeId>
    0d82968ac17b8010VgnVCM1000005e191eac____
</contentTypeId>
   <attribute name="literature-id">
    <valueString>
a3489d5648b9f010VgnVCM10000081141eac____
    </valueString>
   </attribute>
<attribute name="name">
    <valueString>Testing - FPD 32</valueString>
</attribute>
   <attribute name="brand">
    <valueString />
   </attribute>
<attribute name="type">
    <valueString>SPECF</valueString>
   </attribute>
<attribute name="format">
    <valueString />
   </attribute>
   <attribute
name="thumbnail">
    <valueString />
   </attribute>
   <attribute
name="revision-date">
    <valueDate />
   </attribute>
   <attribute
name="owner">
    <valueString />
   </attribute>
   <relation
name="CONTENT-MANAGEMENT-CT-LITERATURE-TRANS">
    <attribute
name="CT-LITERATURE-TRANS-LITERATUREID">
     <valueString>
a3489d5648b9f010VgnVCM10000081141eac____
     </valueString>
    </attribute>
<attribute name="trans-id">
     <valueInt>81</valueInt>
    </attribute>
<attribute name="title">
     <valueString>FPD32 - English</valueString>
</attribute>
    <attribute name="description">
     <valueString>FPD32 -
English</valueString>
    </attribute>
    <attribute name="language">
<valueString>en_US</valueString>
    </attribute>
    <attribute name="file">
<valueString />
    </attribute>
    <attribute name="partnumber">
<valueString />
    </attribute>
   </relation>
   <relation
name="CONTENT-MANAGEMENT-CT-LITERATURE-TRANS">
    <attribute
name="CT-LITERATURE-TRANS-LITERATUREID">
     <valueString>
a3489d5648b9f010VgnVCM10000081141eac____
     </valueString>
    </attribute>
<attribute name="trans-id">
     <valueInt>81</valueInt>
    </attribute>
<attribute name="title">
     <valueString>FPD32 - English</valueString>
</attribute>
    <attribute name="description">
     <valueString>FPD32 -
English</valueString>
    </attribute>
    <attribute name="language">
<valueString>en_US</valueString>
    </attribute>
    <attribute name="file">
<valueString />
    </attribute>
    <attribute name="partnumber">
<valueString />
    </attribute>
   </relation>
   <acl>
    <entry
name="vgnadmin" type="user">
     <grants>
      <capability application="VCM"
name="MODIFY_TAX_ASSOCS" />
      <capability application="VCM" name="MODIFY"
/>
      <capability application="VCM" name="MODIFY_ACL" />
      <capability
application="VCM" name="DELETE" />
      <capability application="VCM"
name="PROMOTE_AND_DEMOTE" />
      <capability application="VCM"
name="SECURITY_READ" />
      <capability application="VCM"
name="DEPLOY_AND_UNDEPLOY" />
      <capability application="VCM"
name="FLSLITERATURECT_READ" />
      <capability application="VCM"
name="SECURITY_WRITE" />
      <capability application="VCM"
name="FLSLITERATURECT_WRITE" />
      <capability application="VCM"
name="WORKFLOW_DEF_READ" />
      <capability application="VCM"
name="FLSLITERATURECT_DELETE" />
     </grants>
    </entry>
   </acl>
</contentInstance>
 </importContentInstance>
</packageBody>


I appreciate if
you can help me how to resolve this issue.
Thanks
Chandar
__________________________________________________
Do You Yahoo!?
Tired of
spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com

Current Thread