-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
34fdf90
commit ac0b893
Showing
9 changed files
with
595 additions
and
0 deletions.
There are no files selected for viewing
15 changes: 15 additions & 0 deletions
15
test/tests/rp/sub-article-title-checks/sub-article-title-check-1/fail.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
<?oxygen SCHSchema="sub-article-title-check-1.sch"?> | ||
<!--Context: sub-article/front-stub/title-group/article-title | ||
Test: report $type='editor-report' and not(matches(.,'^eLife [aA]ssessment$')) | ||
Message: The title of an type sub-article should be 'eLife Assessment'. This one is: --> | ||
<root xmlns:ali="http://www.niso.org/schemas/ali/1.0/" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink"> | ||
<article> | ||
<sub-article article-type="editor-report"> | ||
<front-stub> | ||
<title-group> | ||
<article-title>ELIFE Assessment</article-title> | ||
</title-group> | ||
</front-stub> | ||
</sub-article> | ||
</article> | ||
</root> |
15 changes: 15 additions & 0 deletions
15
test/tests/rp/sub-article-title-checks/sub-article-title-check-1/pass.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
<?oxygen SCHSchema="sub-article-title-check-1.sch"?> | ||
<!--Context: sub-article/front-stub/title-group/article-title | ||
Test: report $type='editor-report' and not(matches(.,'^eLife [aA]ssessment$')) | ||
Message: The title of an type sub-article should be 'eLife Assessment'. This one is: --> | ||
<root xmlns:ali="http://www.niso.org/schemas/ali/1.0/" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink"> | ||
<article> | ||
<sub-article article-type="editor-report"> | ||
<front-stub> | ||
<title-group> | ||
<article-title>eLife Assessment</article-title> | ||
</title-group> | ||
</front-stub> | ||
</sub-article> | ||
</article> | ||
</root> |
159 changes: 159 additions & 0 deletions
159
...tests/rp/sub-article-title-checks/sub-article-title-check-1/sub-article-title-check-1.sch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,159 @@ | ||
<schema xmlns="http://purl.oclc.org/dsdl/schematron" xmlns:meca="http://manuscriptexchange.org" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:ali="http://www.niso.org/schemas/ali/1.0/" xmlns:file="java.io.File" xmlns:java="http://www.java.com/" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xlink="http://www.w3.org/1999/xlink" queryBinding="xslt2"> | ||
<title>eLife reviewed preprint schematron</title> | ||
<ns uri="http://www.niso.org/schemas/ali/1.0/" prefix="ali"/> | ||
<ns uri="http://www.w3.org/XML/1998/namespace" prefix="xml"/> | ||
<ns uri="http://www.w3.org/1999/xlink" prefix="xlink"/> | ||
<ns uri="http://www.w3.org/2001/XInclude" prefix="xi"/> | ||
<ns uri="http://www.w3.org/1998/Math/MathML" prefix="mml"/> | ||
<ns uri="http://saxon.sf.net/" prefix="saxon"/> | ||
<ns uri="http://purl.org/dc/terms/" prefix="dc"/> | ||
<ns uri="http://www.w3.org/2001/XMLSchema" prefix="xs"/> | ||
<ns uri="https://elifesciences.org/namespace" prefix="e"/> | ||
<ns uri="java.io.File" prefix="file"/> | ||
<ns uri="http://www.java.com/" prefix="java"/> | ||
<ns uri="http://manuscriptexchange.org" prefix="meca"/> | ||
<xsl:function name="e:isbn-sum" as="xs:integer"> | ||
<xsl:param name="s" as="xs:string"/> | ||
<xsl:choose> | ||
<xsl:when test="string-length($s) = 10"> | ||
<xsl:variable name="d1" select="number(substring($s,1,1)) * 10"/> | ||
<xsl:variable name="d2" select="number(substring($s,2,1)) * 9"/> | ||
<xsl:variable name="d3" select="number(substring($s,3,1)) * 8"/> | ||
<xsl:variable name="d4" select="number(substring($s,4,1)) * 7"/> | ||
<xsl:variable name="d5" select="number(substring($s,5,1)) * 6"/> | ||
<xsl:variable name="d6" select="number(substring($s,6,1)) * 5"/> | ||
<xsl:variable name="d7" select="number(substring($s,7,1)) * 4"/> | ||
<xsl:variable name="d8" select="number(substring($s,8,1)) * 3"/> | ||
<xsl:variable name="d9" select="number(substring($s,9,1)) * 2"/> | ||
<xsl:variable name="d10" select="number(substring($s,10,1)) * 1"/> | ||
<xsl:value-of select="number($d1 + $d2 + $d3 + $d4 + $d5 + $d6 + $d7 + $d8 + $d9 + $d10) mod 11"/> | ||
</xsl:when> | ||
<xsl:when test="string-length($s) = 13"> | ||
<xsl:variable name="d1" select="number(substring($s,1,1))"/> | ||
<xsl:variable name="d2" select="number(substring($s,2,1)) * 3"/> | ||
<xsl:variable name="d3" select="number(substring($s,3,1))"/> | ||
<xsl:variable name="d4" select="number(substring($s,4,1)) * 3"/> | ||
<xsl:variable name="d5" select="number(substring($s,5,1))"/> | ||
<xsl:variable name="d6" select="number(substring($s,6,1)) * 3"/> | ||
<xsl:variable name="d7" select="number(substring($s,7,1))"/> | ||
<xsl:variable name="d8" select="number(substring($s,8,1)) * 3"/> | ||
<xsl:variable name="d9" select="number(substring($s,9,1))"/> | ||
<xsl:variable name="d10" select="number(substring($s,10,1)) * 3"/> | ||
<xsl:variable name="d11" select="number(substring($s,11,1))"/> | ||
<xsl:variable name="d12" select="number(substring($s,12,1)) * 3"/> | ||
<xsl:variable name="d13" select="number(substring($s,13,1))"/> | ||
<xsl:value-of select="number($d1 + $d2 + $d3 + $d4 + $d5 + $d6 + $d7 + $d8 + $d9 + $d10 + $d11 + $d12 + $d13) mod 10"/> | ||
</xsl:when> | ||
<xsl:otherwise> | ||
<xsl:value-of select="number('1')"/> | ||
</xsl:otherwise> | ||
</xsl:choose> | ||
</xsl:function> | ||
<xsl:function name="e:is-valid-issn" as="xs:boolean"> | ||
<xsl:param name="s" as="xs:string"/> | ||
<xsl:choose> | ||
<xsl:when test="not(matches($s,'^\d{4}\-\d{3}[\dX]$'))"> | ||
<xsl:value-of select="false()"/> | ||
</xsl:when> | ||
<xsl:otherwise> | ||
<xsl:variable name="d1" select="number(substring($s,1,1)) * 8"/> | ||
<xsl:variable name="d2" select="number(substring($s,2,1)) * 7"/> | ||
<xsl:variable name="d3" select="number(substring($s,3,1)) * 6"/> | ||
<xsl:variable name="d4" select="number(substring($s,4,1)) * 5"/> | ||
<xsl:variable name="d5" select="number(substring($s,6,1)) * 4"/> | ||
<xsl:variable name="d6" select="number(substring($s,7,1)) * 3"/> | ||
<xsl:variable name="d7" select="number(substring($s,8,1)) * 2"/> | ||
<xsl:variable name="remainder" select="number($d1 + $d2 + $d3 + $d4 + $d5 + $d6 + $d7) mod 11"/> | ||
<xsl:variable name="calc" select="if ($remainder=0) then 0 else (11 - $remainder)"/> | ||
<xsl:variable name="check" select="if (substring($s,9,1)='X') then 10 else number(substring($s,9,1))"/> | ||
<xsl:value-of select="$calc = $check"/> | ||
</xsl:otherwise> | ||
</xsl:choose> | ||
</xsl:function> | ||
<xsl:function name="e:get-name" as="xs:string"> | ||
<xsl:param name="name"/> | ||
<xsl:choose> | ||
<xsl:when test="$name/given-names[1] and $name/surname[1] and $name/suffix[1]"> | ||
<xsl:value-of select="concat($name/given-names[1],' ',$name/surname[1],' ',$name/suffix[1])"/> | ||
</xsl:when> | ||
<xsl:when test="not($name/given-names[1]) and $name/surname[1] and $name/suffix[1]"> | ||
<xsl:value-of select="concat($name/surname[1],' ',$name/suffix[1])"/> | ||
</xsl:when> | ||
<xsl:when test="$name/given-names[1] and $name/surname[1] and not($name/suffix[1])"> | ||
<xsl:value-of select="concat($name/given-names[1],' ',$name/surname[1])"/> | ||
</xsl:when> | ||
<xsl:when test="not($name/given-names[1]) and $name/surname[1] and not($name/suffix[1])"> | ||
<xsl:value-of select="$name/surname[1]"/> | ||
</xsl:when> | ||
<xsl:otherwise> | ||
<xsl:value-of select="'No elements present'"/> | ||
</xsl:otherwise> | ||
</xsl:choose> | ||
</xsl:function> | ||
<xsl:function name="e:get-copyright-holder"> | ||
<xsl:param name="contrib-group"/> | ||
<xsl:variable name="author-count" select="count($contrib-group/contrib[@contrib-type='author'])"/> | ||
<xsl:choose> | ||
<xsl:when test="$author-count lt 1"/> | ||
<xsl:when test="$author-count = 1"> | ||
<xsl:choose> | ||
<xsl:when test="$contrib-group/contrib[@contrib-type='author']/collab"> | ||
<xsl:value-of select="$contrib-group/contrib[@contrib-type='author']/collab[1]/text()[1]"/> | ||
</xsl:when> | ||
<xsl:otherwise> | ||
<xsl:value-of select="$contrib-group/contrib[@contrib-type='author']/name[1]/surname[1]"/> | ||
</xsl:otherwise> | ||
</xsl:choose> | ||
</xsl:when> | ||
<xsl:when test="$author-count = 2"> | ||
<xsl:choose> | ||
<xsl:when test="$contrib-group/contrib[@contrib-type='author']/collab"> | ||
<xsl:choose> | ||
<xsl:when test="$contrib-group/contrib[@contrib-type='author'][1]/collab and $contrib-group/contrib[@contrib-type='author'][2]/collab"> | ||
<xsl:value-of select="concat($contrib-group/contrib[@contrib-type='author']/collab[1]/text()[1],' & ',$contrib-group/contrib[@contrib-type='author']/collab[2]/text()[1])"/> | ||
</xsl:when> | ||
<xsl:when test="$contrib-group/contrib[@contrib-type='author'][1]/collab"> | ||
<xsl:value-of select="concat($contrib-group/contrib[@contrib-type='author'][1]/collab[1]/text()[1],' & ',$contrib-group/contrib[@contrib-type='author'][2]/name[1]/surname[1])"/> | ||
</xsl:when> | ||
<xsl:otherwise> | ||
<xsl:value-of select="concat($contrib-group/contrib[@contrib-type='author'][1]/name[1]/surname[1],' & ',$contrib-group/contrib[@contrib-type='author'][2]/collab[1]/text()[1])"/> | ||
</xsl:otherwise> | ||
</xsl:choose> | ||
</xsl:when> | ||
<xsl:otherwise> | ||
<xsl:value-of select="concat($contrib-group/contrib[@contrib-type='author'][1]/name[1]/surname[1],' & ',$contrib-group/contrib[@contrib-type='author'][2]/name[1]/surname[1])"/> | ||
</xsl:otherwise> | ||
</xsl:choose> | ||
</xsl:when> | ||
|
||
<xsl:otherwise> | ||
<xsl:variable name="is-equal-contrib" select="if ($contrib-group/contrib[@contrib-type='author'][1]/@equal-contrib='yes') then true() else false()"/> | ||
|
||
<xsl:value-of select="concat(e:get-surname($contrib-group/contrib[@contrib-type='author'][1]),' et al')"/> | ||
</xsl:otherwise> | ||
</xsl:choose> | ||
</xsl:function> | ||
<xsl:function name="e:get-surname" as="text()"> | ||
<xsl:param name="contrib"/> | ||
<xsl:choose> | ||
<xsl:when test="$contrib/collab"> | ||
<xsl:value-of select="$contrib/collab[1]/text()[1]"/> | ||
</xsl:when> | ||
<xsl:otherwise> | ||
<xsl:value-of select="$contrib//name[1]/surname[1]"/> | ||
</xsl:otherwise> | ||
</xsl:choose> | ||
</xsl:function> | ||
<pattern id="sub-article-title-checks-pattern"> | ||
<rule context="sub-article/front-stub/title-group/article-title" id="sub-article-title-checks"> | ||
<let name="type" value="ancestor::sub-article/@article-type"/> | ||
<report test="$type='editor-report' and not(matches(.,'^eLife [aA]ssessment$'))" role="error" id="sub-article-title-check-1">[sub-article-title-check-1] The title of an <value-of select="$type"/> type sub-article should be 'eLife Assessment'. This one is: <value-of select="."/> | ||
</report> | ||
</rule> | ||
</pattern> | ||
<pattern id="root-pattern"> | ||
<rule context="root" id="root-rule"> | ||
<assert test="descendant::sub-article/front-stub/title-group/article-title" role="error" id="sub-article-title-checks-xspec-assert">sub-article/front-stub/title-group/article-title must be present.</assert> | ||
</rule> | ||
</pattern> | ||
</schema> |
29 changes: 29 additions & 0 deletions
29
test/tests/rp/sub-article-title-checks/sub-article-title-check-2/fail.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
<?oxygen SCHSchema="sub-article-title-check-2.sch"?> | ||
<!--Context: sub-article/front-stub/title-group/article-title | ||
Test: report $type='referee-report' and not(matches(.,'^Reviewer #\d\d? \([Pp]ublic [Rr]eview\):?$|^Joint [Pp]ublic [Rr]eview$')) | ||
Message: The title of a type sub-article should be in one of the following formats: 'Reviewer #0 (public review)' or 'Joint public review'. This one is: --> | ||
<root xmlns:ali="http://www.niso.org/schemas/ali/1.0/" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink"> | ||
<article> | ||
<sub-article article-type="referee-report"> | ||
<front-stub> | ||
<title-group> | ||
<article-title>Reviewer #1 (Pubic Review):</article-title> | ||
</title-group> | ||
</front-stub> | ||
</sub-article> | ||
<sub-article article-type="referee-report"> | ||
<front-stub> | ||
<title-group> | ||
<article-title>Reviewer 3 (Public Review):</article-title> | ||
</title-group> | ||
</front-stub> | ||
</sub-article> | ||
<sub-article article-type="referee-report"> | ||
<front-stub> | ||
<title-group> | ||
<article-title>Join public Review</article-title> | ||
</title-group> | ||
</front-stub> | ||
</sub-article> | ||
</article> | ||
</root> |
29 changes: 29 additions & 0 deletions
29
test/tests/rp/sub-article-title-checks/sub-article-title-check-2/pass.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
<?oxygen SCHSchema="sub-article-title-check-2.sch"?> | ||
<!--Context: sub-article/front-stub/title-group/article-title | ||
Test: report $type='referee-report' and not(matches(.,'^Reviewer #\d\d? \([Pp]ublic [Rr]eview\):?$|^Joint [Pp]ublic [Rr]eview$')) | ||
Message: The title of a type sub-article should be in one of the following formats: 'Reviewer #0 (public review)' or 'Joint public review'. This one is: --> | ||
<root xmlns:ali="http://www.niso.org/schemas/ali/1.0/" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink"> | ||
<article> | ||
<sub-article article-type="referee-report"> | ||
<front-stub> | ||
<title-group> | ||
<article-title>Reviewer #1 (Public Review):</article-title> | ||
</title-group> | ||
</front-stub> | ||
</sub-article> | ||
<sub-article article-type="referee-report"> | ||
<front-stub> | ||
<title-group> | ||
<article-title>Reviewer #10 (Public Review):</article-title> | ||
</title-group> | ||
</front-stub> | ||
</sub-article> | ||
<sub-article article-type="referee-report"> | ||
<front-stub> | ||
<title-group> | ||
<article-title>Joint Public Review</article-title> | ||
</title-group> | ||
</front-stub> | ||
</sub-article> | ||
</article> | ||
</root> |
Oops, something went wrong.