Re: [xsl] Forgive the noob

Subject: Re: [xsl] Forgive the noob
From: Don Smith <dsmith_lockesmith@xxxxxxxxx>
Date: Fri, 8 Aug 2008 13:07:07 -0700 (PDT)
Chris,

If you can provide an example of the source XML as well as an example of what the target output should be, it would help.

Don 


--- On Fri, 8/8/08, Bordeman, Chris <Chris.Bordeman@xxxxxxxxxxxxxxxxx> wrote:

> From: Bordeman, Chris <Chris.Bordeman@xxxxxxxxxxxxxxxxx>
> Subject: [xsl] Forgive the noob
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Date: Friday, August 8, 2008, 3:00 PM
> Hi guys, doing my first XSLT and need a bit of help.
> 
> Basically, I'm transforming essentially a serialized
> object structure
> into a list of field-value pair nodes.
> 
> There are a lot of complicated nodes I need to get at
> often, like the
> first address node under the first customer so I wanted to
> set up a
> bunch of variables and locate and and assign helper
> variables before I
> get into the template proper, which is itself very simple. 
> I've written
> some functions to help w/ this and a single named template
> called "init"
> I call up front to set up the variables.
> 
> The problem is when I assign to the variables inside my
> named template,
> they don't keep their value.  I'd just add this
> stuff to the main
> template but I really need to split all this init stuff
> into an include
> file or something so they can be reused in other xslts.
> 
> How can I make these variables visible where I need to use
> them?  Here's
> a bit of what I'm doing now:
> 
> 	<!-- declare global helper variables -->
> 	<xsl:variable name="buyerfullname"
> select="''"/>
> 	<xsl:variable name="buyeraddress"
> select="''"/>
> 	<xsl:variable name="buyeraddress1"
> select="''"/>
> 	<xsl:variable name="buyercsz"
> select="''"/>
> 	<xsl:variable name="buyerhomephone"
> select="''"/>
> 	<xsl:variable name="buyerblock"
> select="''"/>
> 
> 	<xsl:template name="init">
> 		<xsl:variable name="buyer"
> select="Contract/Borrowers/Borrower[NumOrder='1']"/>
> 		<xsl:choose>
> 			<xsl:when test="string($buyer) !=
> ''">
> 				<xsl:variable name="buyerfullname"
> select="fn:borrowerfullname($buyer)"/>
> 				<xsl:variable name="buyeraddress"
> select="$buyer/Addresses/BorrowerAddress[IsCurrent='true'
> and
> position()=1]"/>
> 				<xsl:variable name="buyeraddress1"
> select="fn:address1($buyeraddress)"/>
> 				<xsl:variable name="buyercsz"
> select="fn:csz($buyeraddress)"/>
> 				<xsl:variable name="buyerhomephone"
> select="$buyer/HomePhone/PhoneNumber"/>
> 				<xsl:variable name="buyerblock"
> select="string-join(($buyerfullname,$buyeraddress1,$buyercsz,$buyerhomep
> hone),fn:crlf())"/>
> 			</xsl:when>
> 		</xsl:choose>
> 	</xsl:template>
> 
> 	<!-- create helper variables -->
> 	<xsl:call-template name="init"/>
> 
> 	<!-- Main Template, generates FieldValuePairs -->
> 	<!-- ERRORS: I GET 'VARIABLE DOES NOT EXIST'
> ERRORS -->
> 	<xsl:template match="/">	
> 		<FieldValuePairs>
> 			<FieldValuePair field="BuyerState">
> ERROR --->			<xsl:attribute
> name="value"><xsl:value-of
> select="$buyeraddress/State"/></xsl:attribute>
> 			</FieldValuePair>
> 			<FieldValuePair
> field="BuyerFullNameStreetCityStateZipPhone">
> ERROR --->			<xsl:attribute
> name="value"><xsl:value-of
> select="$buyerblock"/></xsl:attribute>
> 			</FieldValuePair>
> 		</FieldValuePairs>
> 	</xsl:template>
> 
> Thanks for any help!
>  
> Chris Bordeman

Current Thread