Skip to content

Commit 3a39351

Browse files
namedgraphclaude
andauthored
Consolidate label rendering on per-vocab templates, retire $ldt:lang (#323)
* Consolidate CSR label rendering on per-vocab templates, retire $ldt:lang - client.xsl imports the Web-Client per-vocab stylesheets (same order as internal-layout.xsl, so CSR label precedence = SSR) and drops the monolithic ac:label/ac:description override — fixes duplicate bilingual widget headings (e.g. BacklinksBacklinks) rendered when the browser language matched neither @en nor @es - Property-value suppression in bs2:PropertyList negotiates over $ac:langs (two split templates): the best accepted language per property wins; values in unaccepted languages stay hidden as before - sh.xsl label/description templates migrated to $ac:langs - All xsl:sort collations use $ac:lang; dual use-when sort pairs collapsed - Depend on client 5.0.3-SNAPSHOT Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Override $ac:langs client-side from navigator.languages CSR override in client.xsl (import precedence over the Web-Client $ldt:lang-derived default). SaxonJS marshals navigator.languages as an XDM sequence, so it is iterated directly. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Add client-side ac:uuid() override Implements the Web-Client stub via window.generateUUID in the CSR functions module, mirroring the $ac:langs override pattern. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
1 parent 931f821 commit 3a39351

15 files changed

Lines changed: 57 additions & 123 deletions

File tree

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,13 +169,13 @@
169169
<dependency>
170170
<groupId>${project.groupId}</groupId>
171171
<artifactId>client</artifactId>
172-
<version>5.0.2</version>
172+
<version>5.0.3-SNAPSHOT</version>
173173
<classifier>classes</classifier>
174174
</dependency>
175175
<dependency>
176176
<groupId>${project.groupId}</groupId>
177177
<artifactId>client</artifactId>
178-
<version>5.0.2</version>
178+
<version>5.0.3-SNAPSHOT</version>
179179
<type>war</type>
180180
</dependency>
181181
<dependency>

src/main/webapp/static/com/atomgraph/linkeddatahub/xsl/bootstrap/2.3.2/client/admin/signup.xsl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ exclude-result-prefixes="#all">
173173

174174
<xsl:variable name="selected" select="." as="xs:anyURI"/>
175175
<xsl:for-each select="document(resolve-uri('static/com/atomgraph/linkeddatahub/xsl/bootstrap/2.3.2/admin/countries.rdf', lapp:origin()))/rdf:RDF/*[@rdf:about]">
176-
<xsl:sort select="ac:label(.)" lang="{$ldt:lang}"/>
176+
<xsl:sort select="ac:label(.)" lang="{$ac:lang}"/>
177177
<xsl:apply-templates select="." mode="xhtml:Option">
178178
<xsl:with-param name="selected" select="@rdf:about = $selected"/>
179179
</xsl:apply-templates>

src/main/webapp/static/com/atomgraph/linkeddatahub/xsl/bootstrap/2.3.2/client/block/chart.xsl

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -183,8 +183,7 @@ exclude-result-prefixes="#all"
183183
</option>
184184

185185
<xsl:for-each-group select="$results/rdf:RDF/*/*" group-by="concat(namespace-uri(), local-name())">
186-
<xsl:sort select="ac:property-label(.)" order="ascending" lang="{$ldt:lang}" use-when="system-property('xsl:product-name') = 'SAXON'"/>
187-
<xsl:sort select="ac:property-label(.)" order="ascending" use-when="system-property('xsl:product-name') eq 'SaxonJS'"/>
186+
<xsl:sort select="ac:property-label(.)" order="ascending" lang="{$ac:lang}"/>
188187

189188
<option value="{current-grouping-key()}">
190189
<xsl:if test="$category = current-grouping-key()">
@@ -202,8 +201,7 @@ exclude-result-prefixes="#all"
202201
<xsl:for-each select="$container//select[contains-token(@class, 'chart-series')]">
203202
<xsl:result-document href="?." method="ixsl:replace-content">
204203
<xsl:for-each-group select="$results/rdf:RDF/*/*" group-by="concat(namespace-uri(), local-name())">
205-
<xsl:sort select="ac:property-label(.)" order="ascending" lang="{$ldt:lang}" use-when="system-property('xsl:product-name') = 'SAXON'"/>
206-
<xsl:sort select="ac:property-label(.)" order="ascending" use-when="system-property('xsl:product-name') eq 'SaxonJS'"/>
204+
<xsl:sort select="ac:property-label(.)" order="ascending" lang="{$ac:lang}"/>
207205

208206
<option value="{current-grouping-key()}">
209207
<xsl:if test="$series = current-grouping-key()">

src/main/webapp/static/com/atomgraph/linkeddatahub/xsl/bootstrap/2.3.2/client/block/view.xsl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2095,7 +2095,7 @@ exclude-result-prefixes="#all"
20952095
<!-- sort the existing <li> items together with the new item -->
20962096
<xsl:perform-sort select="($existing-items, $new-item)">
20972097
<!-- sort by the link text content (property label) -->
2098-
<xsl:sort select="a/text()" lang="{$ldt:lang}"/>
2098+
<xsl:sort select="a/text()" lang="{$ac:lang}"/>
20992099
</xsl:perform-sort>
21002100
</xsl:variable>
21012101

@@ -2243,7 +2243,7 @@ exclude-result-prefixes="#all"
22432243
<!-- sort by count in a hidden input first -->
22442244
<xsl:sort select="xs:integer(input[@name = 'count']/@value)" order="descending"/>
22452245
<!-- sort by the link text content (value label) -->
2246-
<xsl:sort select="a/text()" lang="{$ldt:lang}"/>
2246+
<xsl:sort select="a/text()" lang="{$ac:lang}"/>
22472247
</xsl:perform-sort>
22482248
</xsl:variable>
22492249

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,11 @@ exclude-result-prefixes="#all"
4545
<xsl:sequence select="if (ldh:query-params()?uri) then xs:anyURI(ldh:query-params()?uri) else ()"/>
4646
</xsl:function>
4747

48+
<!-- overrides the Web-Client stub; server-side ac:uuid() is the com.atomgraph.client.writer.function.UUID extension function -->
49+
<xsl:function name="ac:uuid" as="xs:string">
50+
<xsl:value-of select="ixsl:call(ixsl:window(), 'generateUUID', [])"/>
51+
</xsl:function>
52+
4853
<!-- ldh:query-params is defined once in imports/default.xsl and works in both contexts via ldh:request-uri -->
4954

5055
<xsl:function name="ldh:base-uri" as="xs:anyURI">

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -679,7 +679,7 @@ ORDER BY DESC(?created)
679679
<xsl:result-document href="?." method="ixsl:append-content">
680680
<ul class="well well-small nav nav-list">
681681
<xsl:apply-templates select="$results/rdf:RDF/rdf:Description[not(@rdf:about = $doc-uri)]" mode="xhtml:ListItem">
682-
<xsl:sort select="ac:label(.)" order="ascending" lang="{$ldt:lang}"/>
682+
<xsl:sort select="ac:label(.)" order="ascending" lang="{$ac:lang}"/>
683683
<xsl:with-param name="mode" select="ldh:query-params()?mode[1]" tunnel="yes"/> <!-- TO-DO: support multiple modes -->
684684
<xsl:with-param name="render-id" select="false()" tunnel="yes"/>
685685
</xsl:apply-templates>

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

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -717,8 +717,7 @@ extension-element-prefixes="ixsl"
717717
<xsl:param name="property-metadata" select="if (exists($property-uris)) then ldh:send-request(resolve-uri('ns', ldt:base()), 'POST', 'application/sparql-query', 'DESCRIBE $Type' || ' VALUES $Type { ' || string-join(for $uri in $property-uris return '&lt;' || $uri || '&gt;', ' ') || ' }', map{ 'Accept': 'application/rdf+xml' }) else ()" as="document-node()?" tunnel="yes"/>
718718
<xsl:param name="predicates" as="element()*">
719719
<xsl:for-each-group select="*/*" group-by="concat(namespace-uri(), local-name())">
720-
<xsl:sort select="if ($property-metadata) then ac:property-label(., $property-metadata) else ac:property-label(.)" order="ascending" lang="{$ldt:lang}" use-when="system-property('xsl:product-name') = 'SAXON'"/>
721-
<xsl:sort select="if ($property-metadata) then ac:property-label(., $property-metadata) else ac:property-label(.)" order="ascending" use-when="system-property('xsl:product-name') eq 'SaxonJS'"/>
720+
<xsl:sort select="if ($property-metadata) then ac:property-label(., $property-metadata) else ac:property-label(.)" order="ascending" lang="{$ac:lang}"/>
722721

723722
<xsl:sequence select="current-group()[1]"/>
724723
</xsl:for-each-group>
@@ -877,8 +876,7 @@ extension-element-prefixes="ixsl"
877876
</option>
878877

879878
<xsl:for-each-group select="*/*" group-by="concat(namespace-uri(), local-name())">
880-
<xsl:sort select="ac:property-label(.)" order="ascending" lang="{$ldt:lang}" use-when="system-property('xsl:product-name') = 'SAXON'"/>
881-
<xsl:sort select="ac:property-label(.)" order="ascending" use-when="system-property('xsl:product-name') eq 'SaxonJS'"/>
879+
<xsl:sort select="ac:property-label(.)" order="ascending" lang="{$ac:lang}"/>
882880

883881
<option value="{current-grouping-key()}">
884882
<xsl:if test="$category = current-grouping-key()">
@@ -896,8 +894,7 @@ extension-element-prefixes="ixsl"
896894
<label for="{$series-id}">Series</label>
897895
<select id="{$series-id}" name="ou" multiple="multiple" class="input-large chart-series">
898896
<xsl:for-each-group select="*/*" group-by="concat(namespace-uri(), local-name())">
899-
<xsl:sort select="ac:property-label(.)" order="ascending" lang="{$ldt:lang}" use-when="system-property('xsl:product-name') = 'SAXON'"/>
900-
<xsl:sort select="ac:property-label(.)" order="ascending" use-when="system-property('xsl:product-name') eq 'SaxonJS'"/>
897+
<xsl:sort select="ac:property-label(.)" order="ascending" lang="{$ac:lang}"/>
901898

902899
<option value="{current-grouping-key()}">
903900
<xsl:if test="$series = current-grouping-key()">

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ exclude-result-prefixes="#all">
4343
</option>
4444

4545
<xsl:for-each select="$modes[not(@rdf:about = '&ac;EditMode')]"> <!-- don't show EditMode -->
46-
<xsl:sort select="ac:label(.)" lang="{$ldt:lang}"/>
46+
<xsl:sort select="ac:label(.)" lang="{$ac:lang}"/>
4747
<xsl:apply-templates select="." mode="xhtml:Option">
4848
<xsl:with-param name="selected" select="@rdf:about = $value"/>
4949
</xsl:apply-templates>

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ exclude-result-prefixes="#all">
4343
<xsl:variable name="modes" select="key('resources-by-subclass', '&acl;Access', document(ac:document-uri('&acl;')))" as="element()*"/>
4444
<select name="ou" id="{generate-id()}" multiple="multiple" size="{count($modes)}">
4545
<xsl:for-each select="$modes">
46-
<xsl:sort select="ac:label(.)" lang="{$ldt:lang}"/>
46+
<xsl:sort select="ac:label(.)" lang="{$ac:lang}"/>
4747
<xsl:apply-templates select="." mode="xhtml:Option">
4848
<xsl:with-param name="selected" select="@rdf:about = $properties/@rdf:resource"/>
4949
</xsl:apply-templates>

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -767,8 +767,11 @@ exclude-result-prefixes="#all"
767767

768768
<!-- PROPERTY LIST -->
769769

770-
<!-- suppress properties in a language other than $ldt:lang. TO-DO: move to Web-Client? -->
771-
<xsl:template match="*[@rdf:about or @rdf:nodeID]/*[@xml:lang and not(lang($ldt:lang))]" mode="bs2:PropertyList"/>
770+
<!-- suppress values in a language the user doesn't accept. TO-DO: move to Web-Client? -->
771+
<xsl:template match="*[@rdf:about or @rdf:nodeID]/*[@xml:lang and not(some $lang in $ac:langs satisfies lang($lang))]" mode="bs2:PropertyList"/>
772+
773+
<!-- suppress values outranked by a more preferred language on the same property -->
774+
<xsl:template match="*[@rdf:about or @rdf:nodeID]/*[@xml:lang][let $rank := (for $i in 1 to count($ac:langs) return $i[lang($ac:langs[$i])])[1] return exists(../*[node-name() = node-name(current())][some $i in 1 to $rank - 1 satisfies lang($ac:langs[$i])])]" mode="bs2:PropertyList"/>
772775

773776
<!-- FORM CONTROL -->
774777

0 commit comments

Comments
 (0)