[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

RE: Re[2]: [xsl] finding position() of an element in a different context


Subject: RE: Re[2]: [xsl] finding position() of an element in a different context
From: "John Wang" <jwang@xxxxxxxxxxx>
Date: Thu, 26 Apr 2001 12:36:27 -0500

Here is possible correction, I am not sure this is what you want.

xml:

<?xml version="1.0"?>
<top>
	<visits>
		<visit id="visit1Name"/>
		<visit id="visit2Name"/>
	</visits>
	<formtypes>
		<formtype id="formtype1Name"/>
		<formtype id="formtype2Name"/>
	</formtypes>
	<forms>
		<form visitID="visit1Name" formtypeID="formtype1Name">form1</form>
		<form visitID="visit1Name" formtypeID="formtype2Name">form2</form>
		<form visitID="visit2Name" formtypeID="formtype3Name">form3</form>
	</forms>
</top>

xsl:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:output method="html"/>
	<xsl:variable name="formtypeID">formtype2Name</xsl:variable>
	<xsl:variable name="visitID">visit1Name</xsl:variable>
	<xsl:template match="/">
		<html>
			<body>
				<xsl:variable name="matchingForm" select="//forms/form[(@formtypeID =
$formtypeID) and (@visitID =   $visitID)]"/>
				<xsl:value-of select="$matchingForm"/>
			</body>
		</html>
	</xsl:template>
</xsl:stylesheet>

This xsl will pick up one entry which is "form2"

-John
-----Original Message-----
From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx
[mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx]On Behalf Of Kevin Burges
Sent: Wednesday, April 25, 2001 2:56 PM
To: Oliver Becker
Subject: Re[2]: [xsl] finding position() of an element in a different
context

Hi Oliver,

OB> Just count the preceding siblings:
OB> count($matchingForm/preceding-sibling::*)+1

they might not always be siblings, but I could probably just use
preceding:: to do the job.

I've remembered another part of the problem. Look at the structure
again:

<top>
    <visits>
          <visit id="visit1Name"/>
          <visit id="visit2Name"/>
    </visits>
    <formtypes>
        <formtype id="formtype1Name"/>
        <formtype id="formtype2Name"/>
    </visits>
    <forms>
        <form visit="visit1Name" formtype="formtype1Name"/>
        <form visit="visit1Name" formtype="formtype2Name"/>
        <form visit="visit2Name" formtype="formtype2Name"/>
    </forms>
</top>


Am I not right in saying that if I am in the context of a <visit>
element, doing:

  <xsl:variable name="matchingForm"
  select="//forms/form[(@formtypeID = $formtypeID) and (@visitID =
  $visitID)]"/>

will not work, because "//forms" is taken relative to the context
node? Certainly this seems to be happening, as no matches are
occurring.

Is there a way to make this work?


--
groovy baby,
 Kevin                    mailto:xmldude@xxxxxxxxxxxxxxxx

++++++++++++ Cool music - http://mp3.com/marshan
++++++ Attitude Webzine - http://burieddreams.com/attitude



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



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



Current Thread
Keywords
xsl