This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: Intersection Problem
- To: <xsl-list at mulberrytech dot com>
- Subject: RE: Intersection Problem
- From: "Jarno Elovirta" <jarno at codeonline dot com>
- Date: Wed, 26 Jul 2000 08:27:50 +0300
- Reply-To: xsl-list at mulberrytech dot com
Hi
> I want to be able to get the result tag in document 1 for those statResult
> which contain the same drilldownTypes (number and content) as in
> document 2.
The style sheet below gives you the results you wanted, but I'm not dead
sure I solved the problem you had... I think I did... but anyhow, the style
sheet is a stupid hack with the 1/0 thingamajig and probably not that
efficient, but maybe it'll give you some ideas on how you might do it
better. The stat1.xml is your document 1 wrapped in statResults element to
make it XML and stat2.xml is your document 2.
[c:\temp]type stat.xsl
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml"
indent="yes"/>
<xsl:variable name="refDrillTypes"
select="document('stat2.xml')/drilldowns/drilldown" />
<xsl:template match="statResults">
<results>
<xsl:apply-templates select="statResult" />
</results>
</xsl:template>
<xsl:template match="statResult">
<xsl:variable name="isMatch">
<xsl:for-each select="drilldowns/drilldown/drilldownType">
<xsl:choose>
<xsl:when test="$refDrillTypes/drilldownType[text() =
current()/text()]">
<xsl:text>1</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>0</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:variable>
<xsl:if test="not(contains($isMatch, '0')) and count($refDrillTypes) =
string-length($isMatch)">
<xsl:copy-of select="result" />
</xsl:if>
</xsl:template>
</xsl:stylesheet>
[c:\temp]saxon stat1.xml stat.xsl
<?xml version="1.0" encoding="utf-8"?>
<results>
<result>-8225.23157709444</result>
<result>-4657.82</result>
</results>
VNV Nation: "Darkangel" this time :)
--
Jarno Elovirta jarno.elovirta@codeonline.com
CODEONLINE Ltd. http://www.codeonline.com
P.O. Box 538 (Ukonvaaja 2 A), FIN-02130 Espoo, Finland
Mobile: +358 40 772 6785 Fax: +358 9 4393 0410
"Hoc non credo; toga mea surrepta est iterum!"
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list