[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Copy element referenced to

Subject: Copy element referenced to
From: "Taco Fleur \(@DataBroker\)" <taco@xxxxxxxxxxxxx>
Date: Tue, 26 Jul 2005 11:02:58 +1000
copy element
Hi all,

I have a template in one of my stylesheets that is supposed to do the
following;
- Copy everything except the @name and @identity attribute from the element
it references to
- Copy everything where the following matches ="$fieldCollection/field[
current()/@identity = @identity ]/
- Copy and overwrite any values above with the the values from the XML file
passed into the stylesheet

The problem I am having is that it does not copy the referenced fields over,
i.e. step one does not work.


	<xsl:template match="field">
		<xsl:copy>
			<xsl:copy-of select="@*" />
			<!-- Calculate the field number -->
			<xsl:attribute name="number">
				<xsl:value-of select="count(
preceding-sibling::field ) + 1" />
			</xsl:attribute>
			<!-- If the field element contains a reference
attribute we need to first copy the element it is refering to -->
			<xsl:if test="$fieldCollection/field[
current()/@identity = @identity ]/@reference">
				<xsl:copy-of select="$fieldCollection/field[
current()/@identity = @referece ]/@*" />
				<xsl:element name="$fieldCollection/field[
current()/@identity = @referece ]/*">
					<xsl:copy-of
select="$fieldCollection/field[ current()/@identity = @referece ]/*" />
				</xsl:element>
			</xsl:if>
			<!-- Copy all elements and attributes from the field
collection -->
			<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>
			<!-- Also copy and override elements from the field
collection with the elements passed in -->
			<xsl:element name="current()/*">
				<xsl:copy-of select="current()/*" />
			</xsl:element>
		</xsl:copy>
	</xsl:template>


The XML for $fieldCollection
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root>
	<field 
		name="positiveInteger" 
		identity="37B4604A-D9DD-713A-DB3E7C9EC4CFF509" 
		valid="\d" 
		minimum="1" 
		maximum="2,147,483,647" />
	<field name="companyClassId"
identity="37A73A27-D9DD-713A-D8764F75D3C67A41"
reference="37B4604A-D9DD-713A-DB3E7C9EC4CFF509">
		<option value="1">Limited by share</option>
		<option value="2">Unlimited with a share capital</option>
		<option value="3">Limited by guarantee</option>
		<option value="4">No liability</option>
	</field>
</root>

The XML passed to the stylesheet:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root>
	<form name="detail">
		<segment value="01">
			<step value="a">
				<field
identity="37A2CF5C-D9DD-713A-D39F89D196AA638F" required="true"
display="Company type" />
			</step>
		</segment>
	</form>
</root>

PS. Sorry I had to reply to an original post to get this message to the
list, my MS Outlook 2003 will NOT sent as plain text no matter how many
times I told it to.

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.