Dear XML Ladies and Gentlemen,
I am trying to implement in XSL a *set-intersection* "function" in the form of
a template. It should accepts two sequence parameters and return a sequence
parameter. The application for this function will be to argument values that
contain space delimited lists like this:
XML:
<skill category="database software">oracle pl-sql package functions and stored
procedures</skill>
XSL: (test "database software" for any match in "database sysadm")
<xsl:template match="
exists(
setintersect(
tokenize(skill/@category,' '),
tokenize('database sysadm',' ')
)
)
">
I have tried to implement the setintersect as a for loop to build a variable
containing the matches, but cannot seem to get this variable to "build" up in
the loop.
I have also tried to adapt this node-based set:intersection found through a
google search, but I cannot figure out how it is working, and would like a
simpler, one-template approach anyway.
<xsl:template name="set:intersection">
<xsl:param name="nodes1" select="/.." />
<xsl:param name="nodes2" select="/.." />
<xsl:apply-templates select="$nodes1[count(.|$nodes2) = count($nodes2)]"
mode="set:intersection" />
</xsl:template>
<xsl:template match="node()|@*" mode="set:intersection">
<xsl:copy-of select="." />
</xsl:template>
Can someone give me some help? Perhaps I am going about this all wrong and
there is another, simpler, more elegant way?
Thanks,
Mark Bordelon
Getty Trust
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--