Skip to content
Snippets Groups Projects
Commit 220b1da0 authored by Max-Ferdinand Zeterberg's avatar Max-Ferdinand Zeterberg
Browse files

fix(elem.note): allow more elements in note

parent e6c795a7
No related branches found
No related tags found
1 merge request!14Resolve "Kommentaren"
<?xml version="1.0" encoding="UTF-8"?>
<grammar xmlns="http://relaxng.org/ns/structure/1.0" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
<grammar xmlns="http://relaxng.org/ns/structure/1.0"
xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
xmlns:sch="http://purl.oclc.org/dsdl/schematron" xmlns:tei="http://www.tei-c.org/ns/1.0"
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" ns="http://sub.uni-goettingen.de/edxml#">
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
ns="http://sub.uni-goettingen.de/edxml#">
<sch:ns prefix="edxml" uri="http://sub.uni-goettingen.de/edxml#"/>
<sch:ns prefix="tei" uri="http://www.tei-c.org/ns/1.0"/>
......@@ -29,11 +31,13 @@
</list>
<sch:pattern>
<sch:rule context="@corresp">
<sch:let name="ids" value="for $id in tokenize(., ' ') return substring-after($id, '#')"/>
<sch:let name="ids"
value="for $id in tokenize(., ' ') return substring-after($id, '#')"/>
<sch:let name="wrong-ids"
value="for $id in $ids return (if ( not(//*[@xml:id = $id]) ) then ($id) else () )"/>
<sch:assert test="empty($wrong-ids)" role="error">
(ID existiert nicht) Die in @corresp angegebene ID (<sch:value-of select="$wrong-ids"/>) existiert in diesem Dokument nicht! Beachte bitte auch, dass "#" davor gesetzt ist!
<sch:assert test="empty($wrong-ids)" role="error"> (ID existiert nicht) Die in
@corresp angegebene ID (<sch:value-of select="$wrong-ids"/>) existiert in
diesem Dokument nicht! Beachte bitte auch, dass "#" davor gesetzt ist!
</sch:assert>
</sch:rule>
</sch:pattern>
......@@ -42,13 +46,14 @@
<define name="attr.lemma">
<attribute name="lemma">
<sch:pattern>
<sch:rule context="@lemma[count(tokenize(., ':')) &lt; 2]">
<sch:report test=".">Du hast keinen Eintrag aus einem Lemmakatalog verknüpft!</sch:report>
<sch:report test=".">Du hast keinen Eintrag aus einem Lemmakatalog
verknüpft!</sch:report>
</sch:rule>
<!--<sch:rule context="@lemma[count(tokenize(., ':')) = 2]">
<sch:let name="fname" value="tokenize(base-uri(), '/')[last()]"/>
<sch:let name="rel-dir" value="substring-before(base-uri(), $fname)"/>
......@@ -113,13 +118,13 @@
<data type="ID"/>
</attribute>
</define>
<define name="attr.xml.base">
<attribute name="xml:base">
<data type="anyURI"/>
</attribute>
</define>
<define name="attr.xml.lang">
<attribute name="xml:lang"/>
</define>
......@@ -132,7 +137,7 @@
<element name="ana">
<interleave>
<zeroOrMore>
<ref name="elem.term"/>
<ref name="elem.term"/>
</zeroOrMore>
<text/>
</interleave>
......@@ -207,8 +212,8 @@
<text/>
</element>
</define>
<define name="elem.div">
<element name="div">
......@@ -235,7 +240,7 @@
</choice>
</element>
</define>
<define name="elem.encodingDesc">
<element name="encodingDesc">
<optional>
......@@ -243,7 +248,7 @@
</optional>
</element>
</define>
<define name="elem.externalResources">
<element name="externalResources">
<interleave>
......@@ -294,7 +299,8 @@
<define name="elem.g">
<element name="g">
<a:documentation xml:lang="de">(Zeichen oder Glyphe) repräsentiert eine Glyphe oder ein Zeichen.</a:documentation>
<a:documentation xml:lang="de">(Zeichen oder Glyphe) repräsentiert eine Glyphe oder ein
Zeichen.</a:documentation>
<optional>
<ref name="attr.xml.id"/>
</optional>
......@@ -380,11 +386,13 @@
<ref name="model.poetology.annotation"/>
<sch:pattern>
<sch:rule context="edxml:kolon/@units">
<sch:let name="ids" value="for $id in tokenize(., ' ') return substring-after($id, '#')"/>
<sch:let name="ids"
value="for $id in tokenize(., ' ') return substring-after($id, '#')"/>
<sch:let name="wrong-ids"
value="for $id in $ids return (if ( not(//edxml:unit[@xml:id = $id][ancestor::edxml:philology]) ) then ($id) else () )"/>
<sch:assert test="empty($wrong-ids)" role="error">(Falsche ID) In @units eines Kolon dürfen nur IDs von Philology Units stehen
(<sch:value-of select="$wrong-ids"/>)!</sch:assert>
<sch:assert test="empty($wrong-ids)" role="error">(Falsche ID) In @units eines
Kolon dürfen nur IDs von Philology Units stehen (<sch:value-of
select="$wrong-ids"/>)!</sch:assert>
</sch:rule>
</sch:pattern>
</element>
......@@ -445,9 +453,10 @@
<sch:pattern>
<sch:rule context="edxml:metamark/@rend">
<sch:let name="renditions" value="//edxml:rendition"/>
<sch:assert test=". = ($renditions/@xml:id, 'line', 'doubleLine')" role="error">
(Hervorhebung nicht definiert) Die Hervorhebung "<sch:value-of select="data(.)"/>" ist nicht im Header (encodingDesc/tagsDecl/rendition) definiert!
</sch:assert>
<sch:assert test=". = ($renditions/@xml:id, 'line', 'doubleLine')"
role="error"> (Hervorhebung nicht definiert) Die Hervorhebung
"<sch:value-of select="data(.)"/>" ist nicht im Header
(encodingDesc/tagsDecl/rendition) definiert! </sch:assert>
</sch:rule>
</sch:pattern>
</attribute>
......@@ -459,7 +468,7 @@
<element name="motif">
<interleave>
<zeroOrMore>
<ref name="elem.term"/>
<ref name="elem.term"/>
</zeroOrMore>
<text/>
</interleave>
......@@ -484,33 +493,48 @@
<optional>
<attribute name="type">
<list>
<choice>
<value>con</value>
<a:documentation>Inhalt</a:documentation>
<value>gr</value>
<a:documentation>Grammatik</a:documentation>
<value>lx</value>
<a:documentation>Lexik</a:documentation>
<value>rek</value>
<a:documentation>Rekonstruktion</a:documentation>
<value>str</value>
<a:documentation>Struktur</a:documentation>
</choice>
<oneOrMore>
<choice>
<value>con</value>
<a:documentation>Inhalt</a:documentation>
<value>gr</value>
<a:documentation>Grammatik</a:documentation>
<value>lx</value>
<a:documentation>Lexik</a:documentation>
<value>poet</value>
<a:documentation>Poetologie</a:documentation>
<value>rek</value>
<a:documentation>Rekonstruktion</a:documentation>
</choice>
</oneOrMore>
</list>
</attribute>
</optional>
<interleave>
<!-- MFZ, 2024-04-05: Eigentlich könnten wir ja alles außer elem.hi, elem.p, elem.quote, elem.ugarit und elem.meta.bibl aus dieser Liste rausnehmen, oder?! -->
<zeroOrMore>
<ref name="model.transcriptional"/>
</zeroOrMore>
<zeroOrMore>
<ref name="elem.ana"/>
</zeroOrMore>
<zeroOrMore>
<ref name="elem.hi"/>
</zeroOrMore>
<zeroOrMore>
<ref name="elem.w"/>
<ref name="elem.p"/>
</zeroOrMore>
<zeroOrMore>
<ref name="elem.phr"/>
</zeroOrMore>
<zeroOrMore>
<ref name="model.transcriptional"/>
<ref name="elem.quote"/>
</zeroOrMore>
<zeroOrMore>
<ref name="elem.ugarit"/>
</zeroOrMore>
<zeroOrMore>
<ref name="elem.w"/>
</zeroOrMore>
<zeroOrMore>
<ref name="elem.meta.bibl"/>
......@@ -518,9 +542,10 @@
<text/>
</interleave>
<sch:pattern>
<sch:rule context="edxml:note[not(ancestor::edxml:structure[@type='poetological'] or ancestor::edxml:surface)]">
<sch:assert test="@target" role="warn">Diese Anmerkung ist nicht an ein Element angebunden (sprich: Sie bezieht sich auf
Nichts)!</sch:assert>
<sch:rule
context="edxml:note[not(ancestor::edxml:structure[@type='poetological'] or ancestor::edxml:surface)]">
<sch:assert test="@target" role="warn">Diese Anmerkung ist nicht an ein Element
angebunden (sprich: Sie bezieht sich auf Nichts)!</sch:assert>
</sch:rule>
</sch:pattern>
</element>
......@@ -587,6 +612,67 @@
</element>
</define>
<define name="elem.phr">
<element name="phr">
<optional>
<ref name="attr.xml.id"/>
</optional>
<optional>
<ref name="attr.ana"/>
</optional>
<interleave>
<zeroOrMore>
<ref name="elem.phr"/>
</zeroOrMore>
<zeroOrMore>
<ref name="elem.lb"/>
</zeroOrMore>
<zeroOrMore>
<ref name="elem.w"/>
</zeroOrMore>
<zeroOrMore>
<ref name="elem.pc"/>
</zeroOrMore>
<zeroOrMore>
<ref name="model.transcriptional"/>
</zeroOrMore>
<text/>
</interleave>
</element>
</define>
<define name="elem.quote">
<element name="quote">
<interleave>
<zeroOrMore>
<ref name="model.transcriptional"/>
</zeroOrMore>
<zeroOrMore>
<ref name="elem.hi"/>
</zeroOrMore>
<zeroOrMore>
<ref name="elem.lb"/>
</zeroOrMore>
<zeroOrMore>
<ref name="elem.phr"/>
</zeroOrMore>
<zeroOrMore>
<ref name="elem.quote"/>
</zeroOrMore>
<zeroOrMore>
<ref name="elem.ugarit"/>
</zeroOrMore>
<zeroOrMore>
<ref name="elem.w"/>
</zeroOrMore>
<zeroOrMore>
<ref name="elem.meta.bibl"/>
</zeroOrMore>
<text/>
</interleave>
</element>
</define>
<define name="elem.relations">
<element name="relations">
<element name="head">
......@@ -606,8 +692,9 @@
<sch:pattern>
<sch:rule context="edxml:relation/@source">
<sch:let name="id" value="substring-after(., '#')"/>
<sch:assert test="//*[@xml:id = $id]" role="error">(ID '<sch:value-of select="$id"/>' gibt's nicht!): Die ID in @<sch:name/>
gibt es in diesem Dokument nicht!</sch:assert>
<sch:assert test="//*[@xml:id = $id]" role="error">(ID '<sch:value-of
select="$id"/>' gibt's nicht!): Die ID in @<sch:name/> gibt es in
diesem Dokument nicht!</sch:assert>
</sch:rule>
</sch:pattern>
</attribute>
......@@ -616,8 +703,9 @@
<sch:pattern>
<sch:rule context="edxml:relation/@target">
<sch:let name="id" value="substring-after(., '#')"/>
<sch:assert test="//*[@xml:id = $id]" role="error">(ID '<sch:value-of select="$id"/>' gibt's nicht!): Die ID in @<sch:name/>
gibt es in diesem Dokument nicht!</sch:assert>
<sch:assert test="//*[@xml:id = $id]" role="error">(ID '<sch:value-of
select="$id"/>' gibt's nicht!): Die ID in @<sch:name/> gibt es in
diesem Dokument nicht!</sch:assert>
</sch:rule>
</sch:pattern>
</attribute>
......@@ -625,6 +713,8 @@
</element>
</define>
<define name="elem.ref">
<element name="ref">
<attribute name="target"/>
......@@ -632,35 +722,6 @@
</element>
</define>
<define name="elem.phr">
<element name="phr">
<optional>
<ref name="attr.xml.id"/>
</optional>
<optional>
<ref name="attr.ana"/>
</optional>
<interleave>
<zeroOrMore>
<ref name="elem.phr"/>
</zeroOrMore>
<zeroOrMore>
<ref name="elem.lb"/>
</zeroOrMore>
<zeroOrMore>
<ref name="elem.w"/>
</zeroOrMore>
<zeroOrMore>
<ref name="elem.pc"/>
</zeroOrMore>
<zeroOrMore>
<ref name="model.transcriptional"/>
</zeroOrMore>
<text/>
</interleave>
</element>
</define>
<define name="elem.rendition">
<element name="rendition">
<ref name="attr.xml.id"/>
......@@ -668,9 +729,9 @@
<attribute name="scheme"/>
</optional>
<text/>
</element>
</element>
</define>
<define name="elem.revisionDesc">
<element name="revisionDesc">
<oneOrMore>
......@@ -681,7 +742,8 @@
<define name="elem.seg">
<element name="seg">
<a:documentation xml:lang="de">(Segment) repräsentiert ein Segment (z.B. eine Zeichengruppe).</a:documentation>
<a:documentation xml:lang="de">(Segment) repräsentiert ein Segment (z.B. eine
Zeichengruppe).</a:documentation>
<optional>
<ref name="attr.xml.id"/>
</optional>
......@@ -720,8 +782,8 @@
<ref name="elem.units"/>
<sch:pattern>
<sch:rule context="edxml:stanza/edxml:units/element()">
<sch:report test="not(./local-name() = ('verse', 'choice'))" role="error">(Vers): In Strophen können nur Verse
stehen!</sch:report>
<sch:report test="not(./local-name() = ('verse', 'choice'))" role="error"
>(Vers): In Strophen können nur Verse stehen!</sch:report>
</sch:rule>
</sch:pattern>
</element>
......@@ -747,7 +809,7 @@
</optional>
<interleave>
<zeroOrMore>
<ref name="elem.term"/>
<ref name="elem.term"/>
</zeroOrMore>
<text/>
</interleave>
......@@ -792,7 +854,7 @@
</optional>
</element>
</define>
<define name="elem.tagsDecl">
<element name="tagsDecl">
<zeroOrMore>
......@@ -800,7 +862,7 @@
</zeroOrMore>
</element>
</define>
<define name="elem.term">
<element name="term">
<optional>
......@@ -848,6 +910,32 @@
</element>
</define>
<define name="elem.ugarit">
<element name="ugarit">
<interleave>
<zeroOrMore>
<ref name="model.transcriptional"/>
</zeroOrMore>
<zeroOrMore>
<ref name="elem.hi"/>
</zeroOrMore>
<zeroOrMore>
<ref name="elem.lb"/>
</zeroOrMore>
<zeroOrMore>
<ref name="elem.phr"/>
</zeroOrMore>
<zeroOrMore>
<ref name="elem.w"/>
</zeroOrMore>
<zeroOrMore>
<ref name="elem.meta.bibl"/>
</zeroOrMore>
<text/>
</interleave>
</element>
</define>
<define name="elem.unit">
<element name="unit">
<ref name="attr.xml.id"/>
......@@ -870,11 +958,13 @@
</choice>
<sch:pattern>
<sch:rule context="edxml:philology//edxml:unit/@corresp">
<sch:let name="ids" value="for $id in tokenize(., ' ') return substring-after($id, '#')"/>
<sch:let name="ids"
value="for $id in tokenize(., ' ') return substring-after($id, '#')"/>
<sch:let name="wrong-ids"
value="for $id in $ids return (if ( not(//edxml:line[@xml:id = $id] or //*[@xml:id = $id][ancestor::edxml:line]) ) then ($id) else () )"/>
<sch:assert test="empty($wrong-ids)" role="error">(Falsche ID) In @corresp von Philology Units dürfen nur IDs aus dem facsimiles
Block stehen (<sch:value-of select="$wrong-ids"/>)!</sch:assert>
<sch:assert test="empty($wrong-ids)" role="error">(Falsche ID) In @corresp von
Philology Units dürfen nur IDs aus dem facsimiles Block stehen
(<sch:value-of select="$wrong-ids"/>)!</sch:assert>
</sch:rule>
</sch:pattern>
</element>
......@@ -924,7 +1014,8 @@
<ref name="elem.units"/>
<sch:pattern>
<sch:rule context="edxml:verse/edxml:units/element()">
<sch:report test="not(./local-name() = ('kolon', 'choice'))" role="error">(Kola): In Versen können nur Kola stehen!</sch:report>
<sch:report test="not(./local-name() = ('kolon', 'choice'))" role="error"
>(Kola): In Versen können nur Kola stehen!</sch:report>
</sch:rule>
</sch:pattern>
</element>
......@@ -958,8 +1049,9 @@
</interleave>
<sch:pattern>
<sch:rule context="edxml:w">
<sch:assert test="@xml:id or not(empty(@xml:id))" role="warning">('<sch:value-of select=".//text()"/>' hat keine ID): Jedes Wort
sollte durch eine ID (@xml:id) eindeutig identifiziert sein!</sch:assert>
<sch:assert test="@xml:id or not(empty(@xml:id))" role="warning">('<sch:value-of
select=".//text()"/>' hat keine ID): Jedes Wort sollte durch eine ID
(@xml:id) eindeutig identifiziert sein!</sch:assert>
</sch:rule>
</sch:pattern>
</element>
......@@ -1072,7 +1164,7 @@
</zeroOrMore>
</interleave>
</define>-->
<define name="model.include">
<optional>
<ref name="attr.xml.id"/>
......@@ -1081,7 +1173,7 @@
<ref name="attr.xml.base"/>
</optional>
</define>
<define name="model.analysis">
<interleave>
<zeroOrMore>
......@@ -1172,7 +1264,7 @@
<ref name="elem.lb"/>
</choice>
</define>
<define name="model.external-resources">
<attribute name="prefix"/>
<choice>
......@@ -1181,7 +1273,7 @@
</choice>
<text/>
</define>
<define name="model.poetology.annotation">
<interleave>
<optional>
......@@ -1488,7 +1580,7 @@
<text/>
</element>
</define>
<define name="elem.tei.choice">
<element name="tei:choice">
<interleave>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment