Skip to content

Commit 1c54222

Browse files
authored
Resolving relative URLs in XHTML literals against the document's base URI (#276)
Removed unused XSLT params
1 parent dae4083 commit 1c54222

4 files changed

Lines changed: 9 additions & 37 deletions

File tree

src/main/java/com/atomgraph/linkeddatahub/writer/XSLTWriterBase.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,6 @@ public <T extends XdmValue> Map<QName, XdmValue> getParameters(MultivaluedMap<St
120120
try
121121
{
122122
params.put(new QName("ldh", LDH.requestUri.getNameSpace(), LDH.requestUri.getLocalName()), new XdmAtomicValue(getRequestURI()));
123-
if (getURI() != null) params.put(new QName("ac", AC.uri.getNameSpace(), AC.uri.getLocalName()), new XdmAtomicValue(getURI()));
124-
else params.put(new QName("ac", AC.uri.getNameSpace(), AC.uri.getLocalName()), new XdmAtomicValue(getRequestURI()));
125123

126124
Optional<com.atomgraph.linkeddatahub.apps.model.Application> appOpt = getApplication().get();
127125
if (!appOpt.isPresent())

src/main/webapp/static/com/atomgraph/linkeddatahub/xsl/bootstrap/2.3.2/imports/default.xsl

Lines changed: 7 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1214,33 +1214,14 @@ exclude-result-prefixes="#all"
12141214
</xsl:copy>
12151215
</xsl:template>
12161216

1217-
<!-- rewrite @ids so they don't class with the parent document's when transcluded -->
1218-
<xsl:template match="@id" mode="ldh:XHTMLContent" priority="1">
1219-
<xsl:param name="transclude" select="false()" as="xs:boolean" tunnel="yes"/>
1220-
1221-
<xsl:choose>
1222-
<xsl:when test="$transclude">
1223-
<xsl:attribute name="{name()}" select="generate-id()"/>
1224-
</xsl:when>
1225-
<xsl:otherwise>
1226-
<xsl:copy/>
1227-
</xsl:otherwise>
1228-
</xsl:choose>
1217+
<!-- resolve relative @href URIs against base in proxy mode -->
1218+
<xsl:template match="@href[not(ac:absolute-path(ldh:base-uri(.)) = ac:absolute-path(ldh:request-uri()))][not(starts-with(., '/')) and not(starts-with(., '#')) and not(contains(., ':'))]" mode="ldh:XHTMLContent" priority="1">
1219+
<xsl:attribute name="{name()}" select="resolve-uri(., ldh:base-uri(.))"/>
12291220
</xsl:template>
12301221

1231-
<!-- resolve relative @href URIs against base when transcluding -->
1232-
<xsl:template match="@href[starts-with(., '.')]" mode="ldh:XHTMLContent" priority="1">
1233-
<xsl:param name="transclude" select="false()" as="xs:boolean" tunnel="yes"/>
1234-
<xsl:param name="base" as="xs:anyURI?" tunnel="yes"/>
1235-
1236-
<xsl:choose>
1237-
<xsl:when test="$transclude">
1238-
<xsl:attribute name="{name()}" select="resolve-uri(., $base)"/>
1239-
</xsl:when>
1240-
<xsl:otherwise>
1241-
<xsl:copy/>
1242-
</xsl:otherwise>
1243-
</xsl:choose>
1222+
<!-- resolve relative @src URIs against base in proxy mode -->
1223+
<xsl:template match="@src[not(ac:absolute-path(ldh:base-uri(.)) = ac:absolute-path(ldh:request-uri()))][not(starts-with(., '/')) and not(starts-with(., '#')) and not(contains(., ':'))]" mode="ldh:XHTMLContent" priority="1">
1224+
<xsl:attribute name="{name()}" select="resolve-uri(., ldh:base-uri(.))"/>
12441225
</xsl:template>
1245-
1226+
12461227
</xsl:stylesheet>

src/main/webapp/static/com/atomgraph/linkeddatahub/xsl/bootstrap/2.3.2/layout.xsl

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,6 @@ exclude-result-prefixes="#all">
108108
<xsl:param name="lapp:Context" as="document-node()?"/>
109109
<xsl:param name="foaf:Agent" select="if ($acl:agent) then document(ac:document-uri($acl:agent)) else ()" as="document-node()?"/>
110110
<xsl:param name="force-exclude-all-namespaces" select="true()"/>
111-
<xsl:param name="ac:uri" as="xs:anyURI"/>
112111
<xsl:param name="ac:httpHeaders" as="xs:string"/>
113112
<xsl:param name="ac:method" as="xs:string"/>
114113
<xsl:param name="acl:mode" as="xs:anyURI*"/>
@@ -588,7 +587,7 @@ exclude-result-prefixes="#all">
588587
</select>
589588

590589
<input type="text" id="uri" name="uri" class="input-xxlarge typeahead">
591-
<xsl:if test="not(starts-with(ac:absolute-path(ldh:base-uri(.)), $ldt:base))">
590+
<xsl:if test="not(ac:absolute-path(ldh:base-uri(.)) = ac:absolute-path(ldh:request-uri()))">
592591
<xsl:attribute name="value" select="ldh:base-uri(.)"/>
593592
</xsl:if>
594593
</input>

src/main/webapp/static/com/atomgraph/linkeddatahub/xsl/bootstrap/2.3.2/resource.xsl

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -525,14 +525,11 @@ extension-element-prefixes="ixsl"
525525

526526
<!-- XHTML content overrides -->
527527
<xsl:template match="*[@rdf:about][rdf:type/@rdf:resource = '&ldh;XHTML'][rdf:value[@rdf:parseType = 'Literal']/xhtml:div]" mode="bs2:Row" priority="1">
528-
<!-- TO-DO: use ldh:request-uri() to resolve URIs server-side -->
529528
<xsl:param name="id" select="if (contains(@rdf:about, ac:absolute-path(ldh:base-uri(.)) || '#')) then substring-after(@rdf:about, ac:absolute-path(ldh:base-uri(.)) || '#') else generate-id()" as="xs:string?"/>
530529
<xsl:param name="class" select="'row-fluid block'" as="xs:string?"/>
531530
<xsl:param name="about" select="@rdf:about" as="xs:anyURI?"/>
532531
<xsl:param name="typeof" select="rdf:type/@rdf:resource/xs:anyURI(.)" as="xs:anyURI*"/>
533532
<xsl:param name="main-class" select="'main span7'" as="xs:string?"/>
534-
<xsl:param name="transclude" select="false()" as="xs:boolean"/>
535-
<xsl:param name="base" as="xs:anyURI?"/>
536533
<xsl:param name="draggable" select="false()" as="xs:boolean?"/>
537534

538535
<xsl:apply-templates select="." mode="bs2:RowContentHeader"/>
@@ -585,10 +582,7 @@ extension-element-prefixes="ixsl"
585582
<xsl:attribute name="class" select="$main-class"/>
586583
</xsl:if>
587584

588-
<xsl:apply-templates select="rdf:value[@rdf:parseType = 'Literal']/xhtml:div" mode="ldh:XHTMLContent">
589-
<xsl:with-param name="transclude" select="$transclude" tunnel="yes"/>
590-
<xsl:with-param name="base" select="$base" tunnel="yes"/>
591-
</xsl:apply-templates>
585+
<xsl:apply-templates select="rdf:value[@rdf:parseType = 'Literal']/xhtml:div" mode="ldh:XHTMLContent"/>
592586
</div>
593587

594588
<xsl:apply-templates select="." mode="bs2:Right"/>

0 commit comments

Comments
 (0)