[xsl] RE: XSL Transformation!!

Subject: [xsl] RE: XSL Transformation!!
From: cknell@xxxxxxxxxx
Date: Mon, 27 Dec 2004 10:13:00 -0500
> -----Original Message-----
> From:     Kalkunda, Venkat <Kalkunda.Venkat@xxxxxxxxxxxxx>
> Sent:     Mon, 27 Dec 2004 08:40:33 -0600
> To:       <cknell@xxxxxxxxxx>
> Subject:  XSL Transformation!!
>
>
> I have attached 2 xml files. The first XML file contains the data with the complete tag
> structure in the actual input file but just the part I want help with transformation. And teh
> DesiredOutput.xml file shows how the output file should look like after the transformation. 
> The input and output are XML files.

Does this represent the mapping between input and output elements you want?

SeqNumber -> NULL
ExistingProductType -> ExistingProductType(x)
ExistingPolNumber -> ExistingPolNumber(x)
ExistingInsuranceAmt -> ExistingInsuranceAmt(x)
ExistingInsuranceName -> ExistingInsuranceName(x)
ExistingInsurancePending -> ExistingInsurancePending(x)
ExistingInsuranceEP -> ExistingInsuranceEP(x)
ExistingInsuranceInd -> ExistingInsurancePaidByInd(x)
ExistingInsuranceBP -> ExistingInsuranceBP(x)
ExistingInsuranceReplacement1 -> ExistingInsuranceReplacement(x)

Where (x) represents a sequential integer indicating the position of the element in the source document relative to all other similarly-named elements?

> Also I have another question, can you tell how we can declare variables in 
> XSLT, such that we can use it at various places in our transformation and if 
> the tag, that I am populationg this variable with, does not exist in the input 
> file how do I assign it a default value?

First, watch your language. XML documents (at least once they have been parsed) have no tags. They have nodes of various types. The kind of node you are describing is an "element node".

XSLT variables are simple, but likely to be confusing to a Java programmer in that once declared, they are immutable. They are, in a sense, like declaring a Java variable to be "Static". If you want the variable to be accessible from any point in the transformation, declare it outside the first match template, e.g.,

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
  <xsl:output method="xml" indent="yes" encoding="UTF-8" />
  <xsl:strip-space elements="*" />

  <xsl:variable name="johnson">
<comedian>
  <name>Raymond J. Johnson, Jr.</name>
  <type>standup</type>
</comedian>
  </xsl:variable>

Thereafter, you can refer to the variable as "$johnson". You can get the value of the "type" element with an expression like this: <xsl:value-of select="$johnson/comedian/type" />

-- 
Charles Knell
cknell@xxxxxxxxxx - email

Current Thread