This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: using the AND condition


<xsl:template match="ListOfInsClaimsContact">
<xsl:apply-templates select="InsClaimsContact"/>
</xsl:template>

<xsl:template match="InsClaimsContact[RoleInAccident='Owner' and ContactRule='Insured']">
do anything
</xsl:template>

<xsl:template match="InsClaimsContact[RoleInAccident='Driver' and ContactRule='Witness']">
do anything
</xsl:template>

This processes the <InsClaimsContact>s in document order. If you need another order, you must change the first template:

<xsl:template match="ListOfInsClaimsContact">
<xsl:apply-templates select="InsClaimsContact[RoleInAccident='Driver' and ContactRule='Witness']"/>
<xsl:apply-templates select="InsClaimsContact[RoleInAccident='Owner' and ContactRule='Insured']"/>
</xsl:template>

Regarsd,

Joerg


CROFT, MICHAEL wrote:

I need to search for elements that contain certain text and are part of a
certain parent element.  I need to search the whole document and find the
specific parent element, that contains certain child elements with certain
text.  This information needs to be printed in order.  For example:
<ListOfInsClaimsContact>
				<InsClaimsContact Id="1-16HHT">
					<BirthDate>04/08/2002
00:00:00</BirthDate>
	
<CellularPhoneNumber>3418748901</CellularPhoneNumber>
					<ContactRole>Insured</ContactRole>>
					<PositionInVehicle>passnege
of</PositionInVehicle>
	
<RoleInAccident>Owner</RoleInAccident>
				</InsClaimsContact>
				<InsClaimsContact Id="2-16HHT">
					<BirthDate>04/08/2002
00:00:00</BirthDate>
	
<CellularPhoneNumber>3418748901</CellularPhoneNumber>
					<ContactRole>Witness</ContactRole>>
					<PositionInVehicle>passnege
of</PositionInVehicle>
	
<RoleInAccident>Driver</RoleInAccident>
				</InsClaimsContact>
</ListOfInsClaimsContact>


Basically my logic needs to say, Find the <InsClaimsContact> element that
contains a <RoleInAccident> element whose data is "Driver", AND a
<ContactRole> element whose data is "Witness", then process this
InsClaimsContact element.
Next, find the <InsClaimsContact> element that contains a <RoleInAccident>
element whose data is "Owner" AND a <ContactRole> element whose data is
"Insured", then process this InsClaimsContact element.
This continues for many possible combinations, and of course the xml content
will not be in the order I need it to print in the report.

Also, this template below wont work....This will match on the first
InsClaimsContact element and do the conditional logic, this wont "force" the
printing of the order I specify.

		<xsl:template match="//InsClaimsContact">
			<xsl:if test="(RoleInAccident='Driver') and
(ContactRole='Insured')">  this could be false for the first match of
InsClaimsContact, and fall to next if.  I need to force it to find these
elements to print.
				FOUND FIRST MATCH; PRINT THIS
InsClaimsContact elements information FIRST
			</xsl:if>
			<xsl:if test="(RoleInAccident='Owner') and
(ContactRole='Witness')">
				FOUND SECOND MATCH; PRINT THIS
InsClaimsContact elements information SECOND
			</xsl:if>
		</xsl:template>

Mike

XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]