Skip to content

Commit

Permalink
Add graph= URL param when proxying external URI from local document
Browse files Browse the repository at this point in the history
  • Loading branch information
namedgraph committed Nov 10, 2023
1 parent 2e8341c commit b8e0130
Showing 1 changed file with 10 additions and 34 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,12 @@ exclude-result-prefixes="#all"
<xsl:variable name="fragment" select="if ($fragment) then $fragment else if (contains($uri, '#')) then substring-after($uri, '#') else ()" as="xs:string?"/>
<xsl:sequence select="xs:anyURI(ac:build-uri($absolute-path, $query-params) || (if ($fragment) then ('#' || $fragment) else ()))"/>
</xsl:when>
<!-- proxy external URI from local document -->
<xsl:when test="$uri and starts-with(base-uri(), $base)">
<xsl:variable name="fragment" select="if ($fragment) then $fragment else encode-for-uri($uri)" as="xs:string?"/>
<xsl:variable name="graph" select="ac:absolute-path(base-uri())" as="xs:anyURI"/>
<xsl:sequence select="xs:anyURI(ac:build-uri($absolute-path, map:merge((map{ 'uri': string($uri), 'graph': string($graph) }, $query-params))) || (if ($fragment) then ('#' || $fragment) else ()))"/>
</xsl:when>
<!-- proxy external URI -->
<xsl:when test="$uri">
<xsl:variable name="fragment" select="if ($fragment) then $fragment else encode-for-uri($uri)" as="xs:string?"/>
Expand Down Expand Up @@ -419,11 +425,9 @@ exclude-result-prefixes="#all"
<xsl:param name="endpoint" as="xs:anyURI?" tunnel="yes"/>
<xsl:param name="query-string" select="'DESCRIBE &lt;' || . || '&gt;'" as="xs:string"/>
<xsl:param name="fragment" select="if (starts-with(., $ldt:base)) then (if (contains(., '#')) then substring-after(., '#') else ()) else encode-for-uri(.)" as="xs:string?"/>
<xsl:param name="href" select="ldh:href($ldt:base, ac:absolute-path(base-uri()), map{}, if ($endpoint) then xs:anyURI($endpoint || '?query=' || encode-for-uri($query-string)) else xs:anyURI(.), $fragment)" as="xs:anyURI" use-when="system-property('xsl:product-name') = 'SAXON'"/>
<xsl:param name="href" select="ldh:href($ldt:base, ac:absolute-path(base-uri()), map{}, if ($endpoint) then xs:anyURI($endpoint || '?query=' || encode-for-uri($query-string)) else xs:anyURI(.), $fragment)" as="xs:anyURI" use-when="system-property('xsl:product-name') eq 'SaxonJS'"/>
<xsl:param name="href" select="ldh:href($ldt:base, ac:absolute-path(base-uri()), map{}, if ($endpoint) then xs:anyURI($endpoint || '?query=' || encode-for-uri($query-string)) else xs:anyURI(.), $fragment)" as="xs:anyURI"/>
<!-- if the URI's absolute path equals the current URL and has a #fragment, use the fragment as @id. Otherwise use encoded URI as @id. -->
<xsl:param name="id" select="if (starts-with(., '#') or (ac:absolute-path(.) = ac:absolute-path(base-uri()) and (contains(., '#')))) then substring-after(., '#') else (if (starts-with(., $ldt:base)) then () else encode-for-uri(.))" as="xs:string?" use-when="system-property('xsl:product-name') = 'SAXON'"/>
<xsl:param name="id" select="if (starts-with(., '#') or (ac:absolute-path(.) = ac:absolute-path(base-uri()) and (contains(., '#')))) then substring-after(., '#') else (if (starts-with(., $ldt:base)) then () else encode-for-uri(.))" as="xs:string?" use-when="system-property('xsl:product-name') eq 'SaxonJS'"/>
<xsl:param name="id" select="if (starts-with(., '#') or (ac:absolute-path(.) = ac:absolute-path(base-uri()) and (contains(., '#')))) then substring-after(., '#') else (if (starts-with(., $ldt:base)) then () else encode-for-uri(.))" as="xs:string?"/>

<xsl:param name="title" select="." as="xs:string?"/>
<xsl:param name="class" as="xs:string?"/>
Expand All @@ -442,8 +446,7 @@ exclude-result-prefixes="#all"
<xsl:param name="endpoint" as="xs:anyURI?" tunnel="yes"/>
<xsl:param name="query-string" select="'DESCRIBE &lt;' || . || '&gt;'" as="xs:string"/>
<xsl:param name="fragment" select="if (starts-with(., $ldt:base)) then (if (contains(., '#')) then substring-after(., '#') else ()) else encode-for-uri(.)" as="xs:string?"/>
<xsl:param name="href" select="ldh:href($ldt:base, ac:absolute-path(base-uri()), map{}, if ($endpoint) then xs:anyURI($endpoint || '?query=' || encode-for-uri($query-string)) else xs:anyURI(.), $fragment)" as="xs:anyURI" use-when="system-property('xsl:product-name') = 'SAXON'"/>
<xsl:param name="href" select="ldh:href($ldt:base, ac:absolute-path(base-uri()), map{}, if ($endpoint) then xs:anyURI($endpoint || '?query=' || encode-for-uri($query-string)) else xs:anyURI(.), $fragment)" as="xs:anyURI" use-when="system-property('xsl:product-name') eq 'SaxonJS'"/>
<xsl:param name="href" select="ldh:href($ldt:base, ac:absolute-path(base-uri()), map{}, if ($endpoint) then xs:anyURI($endpoint || '?query=' || encode-for-uri($query-string)) else xs:anyURI(.), $fragment)" as="xs:anyURI"/>
<xsl:param name="id" select="$fragment" as="xs:string?"/>
<xsl:param name="label" select="if (parent::rdf:Description) then ac:svg-label(..) else ac:svg-object-label(.)" as="xs:string"/>
<xsl:param name="title" select="$label" as="xs:string"/>
Expand All @@ -467,8 +470,7 @@ exclude-result-prefixes="#all"
<xsl:param name="endpoint" as="xs:anyURI?" tunnel="yes"/>
<xsl:param name="query-string" select="'DESCRIBE &lt;' || . || '&gt;'" as="xs:string"/>
<xsl:param name="fragment" select="if (starts-with(., $ldt:base)) then (if (contains(., '#')) then substring-after(., '#') else ()) else encode-for-uri(.)" as="xs:string?"/>
<xsl:param name="href" select="ldh:href($ldt:base, ac:absolute-path(base-uri()), map{}, if ($endpoint) then xs:anyURI($endpoint || '?query=' || encode-for-uri($query-string)) else xs:anyURI(.), $fragment)" as="xs:anyURI" use-when="system-property('xsl:product-name') = 'SAXON'"/>
<xsl:param name="href" select="ldh:href($ldt:base, ac:absolute-path(base-uri()), map{}, if ($endpoint) then xs:anyURI($endpoint || '?query=' || encode-for-uri($query-string)) else xs:anyURI(.), $fragment)" as="xs:anyURI" use-when="system-property('xsl:product-name') eq 'SaxonJS'"/>
<xsl:param name="href" select="ldh:href($ldt:base, ac:absolute-path(base-uri()), map{}, if ($endpoint) then xs:anyURI($endpoint || '?query=' || encode-for-uri($query-string)) else xs:anyURI(.), $fragment)" as="xs:anyURI"/>
<xsl:param name="id" as="xs:string?"/>
<xsl:param name="title" select="." as="xs:string?"/>
<xsl:param name="class" as="xs:string?"/>
Expand Down Expand Up @@ -519,24 +521,6 @@ exclude-result-prefixes="#all"
<xsl:template match="*[@rdf:about or @rdf:nodeID]/*[@xml:lang and not(lang($ldt:lang))]" mode="bs2:PropertyList"/>

<!-- FORM CONTROL -->

<!-- <xsl:template match="*[rdf:type/@rdf:resource = ('&dh;Container', '&dh;Item')]/@rdf:nodeID" mode="bs2:FormControl" priority="1">
<xsl:param name="type" select="'text'" as="xs:string"/>
<xsl:param name="id" select="generate-id()" as="xs:string"/>
<xsl:param name="class" select="'subject input-xxlarge'" as="xs:string?"/>
<xsl:param name="disabled" select="false()" as="xs:boolean"/>
<xsl:param name="auto" select="local-name() = 'nodeID' or starts-with(., $ldt:base)" as="xs:boolean"/>
<xsl:param name="document-uri" as="xs:anyURI" tunnel="yes"/>
<xsl:next-match>
<xsl:with-param name="type" select="$type"/>
<xsl:with-param name="id" select="$id"/>
<xsl:with-param name="class" select="$class"/>
<xsl:with-param name="disabled" select="$disabled"/>
<xsl:with-param name="auto" select="$auto"/>
<xsl:with-param name="about" select="$document-uri"/>
</xsl:next-match>
</xsl:template>-->

<!-- resource -->
<xsl:template match="*[*]/@rdf:about | *[*]/@rdf:nodeID" mode="bs2:FormControl">
Expand Down Expand Up @@ -591,14 +575,6 @@ exclude-result-prefixes="#all"

<hr/>
</div>

<!--
<xsl:apply-templates select="." mode="xhtml:Input">
<xsl:with-param name="type" select="$type"/>
<xsl:with-param name="class" select="$class"/>
<xsl:with-param name="disabled" select="$disabled"/>
</xsl:apply-templates>
-->
</xsl:template>

<!-- property -->
Expand Down

0 comments on commit b8e0130

Please sign in to comment.