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: 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
|