I'am not sure that I don't understand, "returns references to
existing nodes". Is it possible to give a more easy to
understand example than "doing graph-manipulation operations
like checking your data for cycles"?
I like to use functions for navigationr. For example, with genealogical
data, spouses(person) is a function that returns all the persons that the
given person has been married to. Then when I'm doing the processing, I can
do something like
<xsl:apply-templates select="g:spouses(.)"/>
or even
<xsl:value-of select="g:father(.)/g:spouses(.)/name/firstName"/>
without worrying about the detail of the XML structure. The actual function
might look something like
<xsl:function name="g:spouses" as="element(person)*">
<xsl:param name="person" as="element(person)"/>
<xsl:sequence
select="$person/(/)/*/marriage[(husband,wife)=$person/@id]/(husband,wife)
except $person"/>
</xsl:function>
You can't do that without xsl:sequence.
Michael Kay
http://www.saxonica.com/
--~------------------------------------------------------------------
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>
--~--