[xsl] Conditional selecting

Subject: [xsl] Conditional selecting
From: "Jim Neff" <jneff@xxxxxxxxxxxxxxx>
Date: Mon, 13 Dec 2004 12:20:33 -0500
Greetings,

Here is my XML document:

	<record type="EA0">
		<field_no>46</field_no>
		<starting_position>267</starting_position>
		<length>8</length>
		<justification>L</justification>
		<content></content>
		<default_value></default_value>
		<data_type>text</data_type>
	</record>
	<record type="EA0">
		<field_no>47</field_no>
		<starting_position>275</starting_position>
		<length>8</length>
		<justification>L</justification>
		<content>CLM_CR_DT</content>
		<default_value></default_value>
		<data_type>date2</data_type>
	</record>
	<record>
		<record type="EA0">
		<field_no>47</field_no>
		<plan_id>CHNCT</plan_id>
		<starting_position>275</starting_position>
		<length>8</length>
		<justification>L</justification>
		<content>claim_paid_date</content>
		<default_value></default_value>
		<data_type>date2</data_type>
	</record>	
	<record type="EA0">
		<field_no>48</field_no>
		<starting_position>283</starting_position>
		<length>1</length>
		<justification>L</justification>
		<content></content>
		<default_value></default_value>
		<data_type>text</data_type>
	</record>


Here is a snip of the XSL stylesheet that uses this :

	<xsl:apply-templates select="$field_definitions/*[@type = 'EA0']">
		
			<!-- number() makes sure we process field_no as a
number and not a string, otherwise 11 comes before 9 ;) -->
			<xsl:sort select="number(field_no)"
order="ascending"/>
		
			<xsl:with-param name="current_context" select="."/>
						
	</xsl:apply-templates>


I select those records that match the "EA0" record type and then sort them
according to field_no.  

My question is in regards to field_no 47.  What I want to do is select the
record IF there is a plan_id instead of the record without a plan id.  Not
all records will have a plan id.  

So if there is a child element of the record node that has a value in the
plan_id field then use that record number instead of the record with the
same number that DOES NOT have the plan_id.


Thanks in advance,
Jim Neff

Current Thread