Re: [Saxon-JS 2] Callback template param value
Michael Kay <mike-JkSD5nQpfvpWk0Htik3J/[email protected]> Tue, 29 Sep 2020 13:26:39 +0100
| Newsgroups | gmane.text.xml.saxon.help |
|---|---|
| Message-ID | <[email protected]> |
I guess the value of the variable has changed between the xsl:schedule-action being evaluated, and the xsl:call-template being evaluated when the action completes, and we haven't been clear enough in the documentation (or indeed, in our own minds) about how that's supposed to work. Certainly it would be much better if we evaluated the with-param values at the time the action is scheduled, not at the time it completes, and we need to look into that. Thanks for pointing it out. Michael Kay Saxonica > On 29 Sep 2020, at 12:04, Martynas Jusevičius <martynas-tyFqBaoSXPC1Z/[email protected]> wrote: > > Hi, > > I don't get how this happens -- why is the same param value passed to > the callback template when I would expect 3 different values? > > <xsl:template> > ... > <xsl:variable name="facet-bgps" > select="$select-xml//json:map[json:string[@key = 'type'] = > 'bgp']/json:array[@key = > 'triples']/json:map[not(starts-with(json:string[@key = 'predicate'], > '?'))][starts-with(json:string[@key = 'object'], '?')]" > as="element()*"/> > <xsl:for-each select="$facet-bgps"> > <xsl:sort select="ac:property-label(json:string[@key = 'predicate'])"/> > <xsl:variable name="bgp" select="." as="element()"/> > ... > <xsl:variable name="results-uri" select="..." as="xs:anyURI"/> > > <xsl:message> > PREDICATE: <xsl:value-of select="$bgp/json:string[@key = 'predicate']"/> > </xsl:message> > > <ixsl:schedule-action http-request="map{ 'method': 'GET', > 'href': $results-uri, 'headers': map{ 'Accept': > 'application/sparql-results+xml' } }"> > <xsl:call-template name="onFacetValueResultsLoad"> > <xsl:with-param name="container-id" select="$container-id"/> > <xsl:with-param name="bgp" select="$bgp"/> > </xsl:call-template> > </ixsl:schedule-action> > </xsl:for-each> > </xsl:template> > > <xsl:template name="onFacetValueResultsLoad"> > <xsl:context-item as="map(*)" use="required"/> > <xsl:param name="container-id" as="xs:string"/> > <xsl:param name="bgp" as="element()"/> > > <xsl:message> > PREDICATE IN CALLBACK: <xsl:value-of select="$bgp/json:string[@key > = 'predicate']"/> > </xsl:message> > ... > > This is the output I get: > > xsl:message: > PREDICATE: http://purl.uniprot.org/core/organism > xsl:message: > PREDICATE: http://purl.uniprot.org/core/encodedBy > xsl:message: > PREDICATE: http://www.w3.org/2000/01/rdf-schema#label > xsl:message: > PREDICATE IN CALLBACK: http://www.w3.org/2000/01/rdf-schema#label > xsl:message: > PREDICATE IN CALLBACK: http://www.w3.org/2000/01/rdf-schema#label > xsl:message: > PREDICATE IN CALLBACK: http://www.w3.org/2000/01/rdf-schema#label > > 3 different values in the calling template, the same 1 value in the > callback template. > How is that possible? > > > Martynas > > > _______________________________________________ > saxon-help mailing list archived at http://saxon.markmail.org/ > [email protected] > https://lists.sourceforge.net/lists/listinfo/saxon-help _______________________________________________ saxon-help mailing list archived at http://saxon.markmail.org/ [email protected] https://lists.sourceforge.net/lists/listinfo/saxon-help