[Home] [By Thread] [By Date] [Recent Entries]

  • To: <xml-dev@l...>
  • Subject: Rebuild XML file and merge
  • From: "Taco Fleur" <taco@s...>
  • Date: Fri, 22 Jul 2005 13:17:17 +1000
  • Thread-index: AcWOa915VAXxbuJuRPe6RKJGUIjHaw==
  • Thread-topic: Rebuild XML file and merge

Hi all..

 

I am trying to rebuild an XML file and merge it, I am having some difficulty getting the XSL right.

 

I need to maintain the structure of the original XML file I feed to this transformation, but when I come to the element “field” I need to merge the elements from the $fieldCollection variable and have any attributes overwritten in the original file by $fieldcollection. Below is what I have been able to pull together, but obviously its not working. Any help is very much appreciated.

 

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet
     version="1.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

     <xsl:output
          omit-xml-declaration="yes"
          indent="yes"
          media-type="string" />

     <xsl:variable
          name="fieldCollection"
          select="document('C:\Inetpub\wwwroot\development\shelco_company_registration_form\xml\field.xml')/root"/>

     <xsl:template match="/">
          <xsl:apply-templates />
     </xsl:template>

     <xsl:template match="*">
          <xsl:if test="name() = 'field'">
               <testing />
                    <xsl:apply-templates ***** call the field template!! ***** />
          </xsl:if>
          <xsl:element name="{name()}">
               <xsl:for-each select="@*">
                    <xsl:attribute name="{name()}">
                         <xsl:value-of select="."/>
                    </xsl:attribute>
               </xsl:for-each>
               <xsl:apply-templates />
          </xsl:element>
     </xsl:template>

     <xsl:template match="field">
               <xsl:copy>
                    <xsl:copy-of select="@*" />
                    <xsl:copy-of select="$fieldCollection/field[ current()/@identity = @identity ]/@*" />
                    <xsl:element name="$fieldCollection/field[ current()/@identity = @identity ]/*">
                         <xsl:copy-of select="$fieldCollection/field[ current()/@identity = @identity ]/*" />
                    </xsl:element>
               </xsl:copy>
     </xsl:template>

</xsl:stylesheet>

 

________________________________

Taco Fleur - E-commerce Development Manager

Shelco Searches & Services

An Authorised ASIC Information Broker

www.shelco.com.au

Ph: + 61 7 3236 2605

 


Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member