From 5088dd51d93528244b7fa40239507dcc020a79de Mon Sep 17 00:00:00 2001 From: Dennis Ried Date: Wed, 11 Sep 2024 10:31:50 +0200 Subject: [PATCH 1/8] introducing function for joining strings and normalizing the output --- add/data/xqm/util.xqm | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/add/data/xqm/util.xqm b/add/data/xqm/util.xqm index dfbe2a145..5c7a1f982 100644 --- a/add/data/xqm/util.xqm +++ b/add/data/xqm/util.xqm @@ -399,3 +399,14 @@ declare function eutil:request-lang-preferred-iso639() as xs:string { "en" }; + +(:~ + : Returns one joined and normalized string + : + : @param $string The string(s) to be processed + : @param $separator One ore more characters as separators for joining the string + : @return The string (joined and normalized space) + :) +declare function eutil:joindAndNormalize($strings as xs:string*, $separator as xs:string) as xs:string { + $strings => string-join($separator) => normalize-space() +}; \ No newline at end of file From bed8c8d67e76c9ea07499afe6a89ac1d3fb3de33 Mon Sep 17 00:00:00 2001 From: Dennis Ried Date: Wed, 11 Sep 2024 10:33:15 +0200 Subject: [PATCH 2/8] applying new function --- add/data/xqm/util.xqm | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/add/data/xqm/util.xqm b/add/data/xqm/util.xqm index 5c7a1f982..23f13dde5 100644 --- a/add/data/xqm/util.xqm +++ b/add/data/xqm/util.xqm @@ -91,7 +91,7 @@ declare function eutil:getLocalizedName($node, $lang) { if($node/edirom:names) then ($name) else - ($name => string-join(' ') => normalize-space()) + (eutil:joindAndNormalize($name,' ')) }; @@ -108,25 +108,25 @@ declare function eutil:getLocalizedTitle($node as node(), $lang as xs:string?) a let $titleMEI := if ($lang != '' and $lang = $node/mei:title/@xml:lang and not($node/mei:title/mei:titlePart)) then - ($node/mei:title[@xml:lang = $lang]//text() => string-join() => normalize-space()) + (eutil:joindAndNormalize($node/mei:title[@xml:lang = $lang]//text(), '')) else if ($lang != '' and $lang = $node/mei:title/@xml:lang and $node/mei:title/mei:titlePart) then - ($node/mei:title[@xml:lang = $lang]/mei:titlePart[1]//text() => string-join() => normalize-space()) + (eutil:joindAndNormalize($node/mei:title[@xml:lang = $lang]/mei:titlePart[1]//text(), '')) else - (($node//mei:title)[1]//text() => string-join() => normalize-space()) + (eutil:joindAndNormalize(($node//mei:title)[1]//text(), '')) let $titleTEI := if ($lang != '' and $lang = $node/tei:title/@xml:lang) then - $node/tei:title[@xml:lang = $lang]/text() + eutil:joindAndNormalize($node/tei:title[@xml:lang = $lang]//text(), '') else - $node/tei:title[1]/text() + eutil:joindAndNormalize($node/tei:title[1]//text(), '') return - if ($namespace = 'mei') then + if ($namespace = 'mei' and $titleMEI != '') then ($titleMEI) - else if ($namespace = 'tei') then + else if ($namespace = 'tei' and $titleTEI != '') then ($titleTEI) else - ('unknown') + ('[No title found!]') }; (:~ @@ -240,7 +240,7 @@ declare function eutil:getPartLabel($measureOrPerfRes as node(), $type as xs:str upper-case($i) return - normalize-space(string-join(($label, $numbering),' ')) + eutil:joindAndNormalize(($label, $numbering),' ') }; From e7ce0081036567c7c2ea7f3f4e25076bd6fc1b2b Mon Sep 17 00:00:00 2001 From: Dennis Ried Date: Wed, 18 Sep 2024 07:06:35 +0200 Subject: [PATCH 3/8] Update add/data/xqm/util.xqm Co-authored-by: Peter Stadler --- add/data/xqm/util.xqm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/add/data/xqm/util.xqm b/add/data/xqm/util.xqm index 23f13dde5..3a6203fc7 100644 --- a/add/data/xqm/util.xqm +++ b/add/data/xqm/util.xqm @@ -403,7 +403,7 @@ declare function eutil:request-lang-preferred-iso639() as xs:string { (:~ : Returns one joined and normalized string : - : @param $string The string(s) to be processed + : @param $strings The string(s) to be processed : @param $separator One ore more characters as separators for joining the string : @return The string (joined and normalized space) :) From eb322f2f456c0dd9a8135f98b000f8c11ed3ab5b Mon Sep 17 00:00:00 2001 From: Dennis Ried Date: Wed, 18 Sep 2024 07:33:51 +0200 Subject: [PATCH 4/8] removing text selectors, reordering cases and updating xpath --- add/data/xqm/util.xqm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/add/data/xqm/util.xqm b/add/data/xqm/util.xqm index 3a6203fc7..a39ab30a9 100644 --- a/add/data/xqm/util.xqm +++ b/add/data/xqm/util.xqm @@ -107,12 +107,12 @@ declare function eutil:getLocalizedTitle($node as node(), $lang as xs:string?) a let $namespace := eutil:getNamespace($node) let $titleMEI := - if ($lang != '' and $lang = $node/mei:title/@xml:lang and not($node/mei:title/mei:titlePart)) then - (eutil:joindAndNormalize($node/mei:title[@xml:lang = $lang]//text(), '')) - else if ($lang != '' and $lang = $node/mei:title/@xml:lang and $node/mei:title/mei:titlePart) then - (eutil:joindAndNormalize($node/mei:title[@xml:lang = $lang]/mei:titlePart[1]//text(), '')) + if ($lang != '' and $lang = $node/mei:title[mei:titlePart]/@xml:lang) then + (eutil:joindAndNormalize($node/mei:title[@xml:lang = $lang]/mei:titlePart, '. ')) + else if ($lang != '' and $lang = $node/mei:title[not(mei:titlePart)]/@xml:lang) then + (eutil:joindAndNormalize($node/mei:title[@xml:lang = $lang], '')) else - (eutil:joindAndNormalize(($node//mei:title)[1]//text(), '')) + (eutil:joindAndNormalize(($node//mei:title)[1], '')) let $titleTEI := if ($lang != '' and $lang = $node/tei:title/@xml:lang) then From db9eedd803a7295c13d61a19f0e315d3728ed3ad Mon Sep 17 00:00:00 2001 From: Dennis Ried Date: Fri, 4 Oct 2024 12:00:43 +0200 Subject: [PATCH 5/8] create 1-arity function --- add/data/xqm/util.xqm | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/add/data/xqm/util.xqm b/add/data/xqm/util.xqm index d263abe7c..ef3b889ff 100644 --- a/add/data/xqm/util.xqm +++ b/add/data/xqm/util.xqm @@ -399,6 +399,16 @@ declare function eutil:request-lang-preferred-iso639() as xs:string { }; +(:~ + : Returns one joined and normalized string + : + : @param $strings The string(s) to be processed + : @return The string (joined with whitespace and normalized space) + :) +declare function eutil:joindAndNormalize($strings as xs:string*) as xs:string { + $strings => string-join(' ') => normalize-space() +}; + (:~ : Returns one joined and normalized string : From 42864aa1158d50b7c835c02d0500382a6c896ae2 Mon Sep 17 00:00:00 2001 From: Dennis Ried Date: Fri, 4 Oct 2024 12:00:56 +0200 Subject: [PATCH 6/8] switch to new function --- add/data/xqm/util.xqm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/add/data/xqm/util.xqm b/add/data/xqm/util.xqm index ef3b889ff..db8534b85 100644 --- a/add/data/xqm/util.xqm +++ b/add/data/xqm/util.xqm @@ -91,7 +91,7 @@ declare function eutil:getLocalizedName($node, $lang) { if($node/edirom:names) then ($name) else - (eutil:joindAndNormalize($name,' ')) + (eutil:joindAndNormalize($name)) }; @@ -110,15 +110,15 @@ declare function eutil:getLocalizedTitle($node as node(), $lang as xs:string?) a if ($lang != '' and $lang = $node/mei:title[mei:titlePart]/@xml:lang) then (eutil:joindAndNormalize($node/mei:title[@xml:lang = $lang]/mei:titlePart, '. ')) else if ($lang != '' and $lang = $node/mei:title[not(mei:titlePart)]/@xml:lang) then - (eutil:joindAndNormalize($node/mei:title[@xml:lang = $lang], '')) + (eutil:joindAndNormalize($node/mei:title[@xml:lang = $lang])) else - (eutil:joindAndNormalize(($node//mei:title)[1], '')) + (eutil:joindAndNormalize(($node//mei:title)[1])) let $titleTEI := if ($lang != '' and $lang = $node/tei:title/@xml:lang) then - eutil:joindAndNormalize($node/tei:title[@xml:lang = $lang]//text(), '') + eutil:joindAndNormalize($node/tei:title[@xml:lang = $lang]) else - eutil:joindAndNormalize($node/tei:title[1]//text(), '') + eutil:joindAndNormalize($node/tei:title[1]) return if ($namespace = 'mei' and $titleMEI != '') then @@ -240,7 +240,7 @@ declare function eutil:getPartLabel($measureOrPerfRes as node(), $type as xs:str upper-case($i) return - eutil:joindAndNormalize(($label, $numbering),' ') + eutil:joindAndNormalize(($label, $numbering)) }; From 9d7094f592957877c6a0227a7eaa32f1afc33040 Mon Sep 17 00:00:00 2001 From: Dennis Ried Date: Fri, 4 Oct 2024 13:10:01 +0200 Subject: [PATCH 7/8] fixing typo --- add/data/xqm/util.xqm | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/add/data/xqm/util.xqm b/add/data/xqm/util.xqm index db8534b85..9bacb1e95 100644 --- a/add/data/xqm/util.xqm +++ b/add/data/xqm/util.xqm @@ -91,7 +91,7 @@ declare function eutil:getLocalizedName($node, $lang) { if($node/edirom:names) then ($name) else - (eutil:joindAndNormalize($name)) + (eutil:joinedAndNormalize($name)) }; @@ -108,17 +108,17 @@ declare function eutil:getLocalizedTitle($node as node(), $lang as xs:string?) a let $titleMEI := if ($lang != '' and $lang = $node/mei:title[mei:titlePart]/@xml:lang) then - (eutil:joindAndNormalize($node/mei:title[@xml:lang = $lang]/mei:titlePart, '. ')) + (eutil:joinedAndNormalize($node/mei:title[@xml:lang = $lang]/mei:titlePart, '. ')) else if ($lang != '' and $lang = $node/mei:title[not(mei:titlePart)]/@xml:lang) then - (eutil:joindAndNormalize($node/mei:title[@xml:lang = $lang])) + (eutil:joinedAndNormalize($node/mei:title[@xml:lang = $lang])) else - (eutil:joindAndNormalize(($node//mei:title)[1])) + (eutil:joinedAndNormalize(($node//mei:title)[1])) let $titleTEI := if ($lang != '' and $lang = $node/tei:title/@xml:lang) then - eutil:joindAndNormalize($node/tei:title[@xml:lang = $lang]) + eutil:joinedAndNormalize($node/tei:title[@xml:lang = $lang]) else - eutil:joindAndNormalize($node/tei:title[1]) + eutil:joinedAndNormalize($node/tei:title[1]) return if ($namespace = 'mei' and $titleMEI != '') then @@ -240,7 +240,7 @@ declare function eutil:getPartLabel($measureOrPerfRes as node(), $type as xs:str upper-case($i) return - eutil:joindAndNormalize(($label, $numbering)) + eutil:joinedAndNormalize(($label, $numbering)) }; @@ -405,7 +405,7 @@ declare function eutil:request-lang-preferred-iso639() as xs:string { : @param $strings The string(s) to be processed : @return The string (joined with whitespace and normalized space) :) -declare function eutil:joindAndNormalize($strings as xs:string*) as xs:string { +declare function eutil:joinedAndNormalize($strings as xs:string*) as xs:string { $strings => string-join(' ') => normalize-space() }; @@ -416,6 +416,6 @@ declare function eutil:joindAndNormalize($strings as xs:string*) as xs:string { : @param $separator One ore more characters as separators for joining the string : @return The string (joined and normalized space) :) -declare function eutil:joindAndNormalize($strings as xs:string*, $separator as xs:string) as xs:string { +declare function eutil:joinedAndNormalize($strings as xs:string*, $separator as xs:string) as xs:string { $strings => string-join($separator) => normalize-space() }; \ No newline at end of file From b9530f4ee1ad812026d62c4c3ea6bf95a36705df Mon Sep 17 00:00:00 2001 From: Dennis Ried Date: Wed, 9 Oct 2024 18:05:36 +0200 Subject: [PATCH 8/8] switch to imperative function name --- add/data/xqm/util.xqm | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/add/data/xqm/util.xqm b/add/data/xqm/util.xqm index 9bacb1e95..a8fb2e7d9 100644 --- a/add/data/xqm/util.xqm +++ b/add/data/xqm/util.xqm @@ -91,7 +91,7 @@ declare function eutil:getLocalizedName($node, $lang) { if($node/edirom:names) then ($name) else - (eutil:joinedAndNormalize($name)) + (eutil:joinAndNormalize($name)) }; @@ -108,17 +108,17 @@ declare function eutil:getLocalizedTitle($node as node(), $lang as xs:string?) a let $titleMEI := if ($lang != '' and $lang = $node/mei:title[mei:titlePart]/@xml:lang) then - (eutil:joinedAndNormalize($node/mei:title[@xml:lang = $lang]/mei:titlePart, '. ')) + (eutil:joinAndNormalize($node/mei:title[@xml:lang = $lang]/mei:titlePart, '. ')) else if ($lang != '' and $lang = $node/mei:title[not(mei:titlePart)]/@xml:lang) then - (eutil:joinedAndNormalize($node/mei:title[@xml:lang = $lang])) + (eutil:joinAndNormalize($node/mei:title[@xml:lang = $lang])) else - (eutil:joinedAndNormalize(($node//mei:title)[1])) + (eutil:joinAndNormalize(($node//mei:title)[1])) let $titleTEI := if ($lang != '' and $lang = $node/tei:title/@xml:lang) then - eutil:joinedAndNormalize($node/tei:title[@xml:lang = $lang]) + eutil:joinAndNormalize($node/tei:title[@xml:lang = $lang]) else - eutil:joinedAndNormalize($node/tei:title[1]) + eutil:joinAndNormalize($node/tei:title[1]) return if ($namespace = 'mei' and $titleMEI != '') then @@ -240,7 +240,7 @@ declare function eutil:getPartLabel($measureOrPerfRes as node(), $type as xs:str upper-case($i) return - eutil:joinedAndNormalize(($label, $numbering)) + eutil:joinAndNormalize(($label, $numbering)) }; @@ -405,7 +405,7 @@ declare function eutil:request-lang-preferred-iso639() as xs:string { : @param $strings The string(s) to be processed : @return The string (joined with whitespace and normalized space) :) -declare function eutil:joinedAndNormalize($strings as xs:string*) as xs:string { +declare function eutil:joinAndNormalize($strings as xs:string*) as xs:string { $strings => string-join(' ') => normalize-space() }; @@ -416,6 +416,6 @@ declare function eutil:joinedAndNormalize($strings as xs:string*) as xs:string { : @param $separator One ore more characters as separators for joining the string : @return The string (joined and normalized space) :) -declare function eutil:joinedAndNormalize($strings as xs:string*, $separator as xs:string) as xs:string { +declare function eutil:joinAndNormalize($strings as xs:string*, $separator as xs:string) as xs:string { $strings => string-join($separator) => normalize-space() }; \ No newline at end of file