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