Subject: Re: [xsl] XPath 2.0 expression that detects a cycle of references? From: "Martin Honnen martin.honnen@xxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Tue, 29 Mar 2016 08:57:23 -0000 |
I think you need to write a recursive function to detect cycles in a graph, and XPath 2.0 does not have sufficient power for this. It can of course be done in XSLT or XQuery. It can possibly be done in XPath 3.0, though because XPath 3.0 functions are anonymous, recursion is tricky.
Well, how would that kind of trick look like?
This is my version of a recursive function for Roger's problem (assuming there can be multiple elements <for-more-info>):
<xsl:function name="my:CycleFound" as="xs:boolean"> <xsl:param name="this" as="element()?"/> <xsl:param name="visited" as="xs:string*"/> <xsl:variable name="refId" select="$this/for-more-info/@idref" as="xs:string*"/> <xsl:variable name="refTgt" select="$this/../item[@id = $refId]" as="element()*"/>
<xsl:sequence select=" if (not(exists($refTgt))) then false() else if ($refId = $visited) then true() else some $e in $refTgt satisfies my:CycleFound($e, ($visited, $e/@id)) "/> </xsl:function>
I have no idea how one would have to handle this using XPath 3b& any suggestions?
--- Diese E-Mail wurde von Avast Antivirus-Software auf Viren geprC<ft. https://www.avast.com/antivirus
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] XPath 2.0 expression that, Michael Kay mike@xxx | Thread | Re: [xsl] XPath 2.0 expression that, Michael Müller-Hille |
Re: [xsl] XPath 2.0 expression that, Michael Kay mike@xxx | Date | Re: [xsl] XPath 2.0 expression that, Michael Müller-Hille |
Month |