diff --git a/schema/edxml.rng b/schema/edxml.rng index 1532125f6fccde1ac99815a007f298ae41540fd8..0f913fa1e0d8b613c5f5b3e32e2979723e2b75c2 100644 --- a/schema/edxml.rng +++ b/schema/edxml.rng @@ -1,7 +1,9 @@ <?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"/> @@ -13,11 +15,16 @@ <define name="attr.ana"> <attribute name="ana"/> </define> - + <define name="attr.cert"> - <attribute name="cert"> - <list> - <value>uncertain</value> + <attribute name="cert"> + <list> + <choice> + <value>high</value> + <a:documentation>(default) Die Aussage ist sicher und lässt sich zweifelsfrei belegen.</a:documentation> + <value>low</value> + <a:documentation>Die Aussage ist unsicher. Sie lässt sich nicht zweifelsfrei belegen.</a:documentation> + </choice> </list> </attribute> </define> @@ -37,11 +44,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> @@ -50,13 +59,14 @@ <define name="attr.lemma"> <attribute name="lemma"> - + <sch:pattern> - + <sch:rule context="@lemma[count(tokenize(., ':')) < 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)"/> @@ -121,13 +131,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> @@ -140,7 +150,7 @@ <element name="ana"> <interleave> <zeroOrMore> - <ref name="elem.term"/> + <ref name="elem.term"/> </zeroOrMore> <text/> </interleave> @@ -215,8 +225,8 @@ <text/> </element> </define> - - + + <define name="elem.div"> <element name="div"> @@ -243,7 +253,7 @@ </choice> </element> </define> - + <define name="elem.encodingDesc"> <element name="encodingDesc"> <optional> @@ -251,7 +261,7 @@ </optional> </element> </define> - + <define name="elem.externalResources"> <element name="externalResources"> <interleave> @@ -302,7 +312,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> @@ -397,11 +408,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> @@ -462,9 +475,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> @@ -476,7 +490,7 @@ <element name="motif"> <interleave> <zeroOrMore> - <ref name="elem.term"/> + <ref name="elem.term"/> </zeroOrMore> <text/> </interleave> @@ -535,9 +549,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> @@ -623,8 +638,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> @@ -633,8 +649,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> @@ -677,7 +694,7 @@ </interleave> </element> </define> - + <define name="elem.rendition"> <element name="rendition"> <ref name="attr.xml.id"/> @@ -685,9 +702,9 @@ <attribute name="scheme"/> </optional> <text/> - </element> + </element> </define> - + <define name="elem.revisionDesc"> <element name="revisionDesc"> <oneOrMore> @@ -698,7 +715,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> @@ -737,8 +755,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> @@ -764,7 +782,7 @@ </optional> <interleave> <zeroOrMore> - <ref name="elem.term"/> + <ref name="elem.term"/> </zeroOrMore> <text/> </interleave> @@ -809,7 +827,7 @@ </optional> </element> </define> - + <define name="elem.tagsDecl"> <element name="tagsDecl"> <zeroOrMore> @@ -817,7 +835,7 @@ </zeroOrMore> </element> </define> - + <define name="elem.term"> <element name="term"> <optional> @@ -842,11 +860,15 @@ <define name="elem.translation"> <element name="translation"> <ref name="attr.xml.lang"/> - <optional><ref name="attr.cert"/></optional> + <optional> + <ref name="attr.cert"/> + </optional> <interleave> <!--<ref name="group.inline.elements"/>--> <ref name="model.philological.translit"/> - <zeroOrMore><ref name="elem.hi"/></zeroOrMore> + <zeroOrMore> + <ref name="elem.hi"/> + </zeroOrMore> <text/> </interleave> </element> @@ -889,11 +911,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> @@ -943,7 +967,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> @@ -980,8 +1005,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> @@ -1094,7 +1120,7 @@ </zeroOrMore> </interleave> </define>--> - + <define name="model.include"> <optional> <ref name="attr.xml.id"/> @@ -1103,7 +1129,7 @@ <ref name="attr.xml.base"/> </optional> </define> - + <define name="model.analysis"> <interleave> <zeroOrMore> @@ -1194,7 +1220,7 @@ <ref name="elem.lb"/> </choice> </define> - + <define name="model.external-resources"> <attribute name="prefix"/> <choice> @@ -1203,7 +1229,7 @@ </choice> <text/> </define> - + <define name="model.poetology.annotation"> <interleave> <optional> @@ -1501,16 +1527,16 @@ </optional> </element> </define> - + <define name="elem.tei.availability"> <element name="tei:availability"> - <ref name="elem.tei.licence"></ref> + <ref name="elem.tei.licence"/> </element> </define> - + <define name="elem.tei.licence"> <element name="tei:licence"> - <ref name="attr.tei.target"></ref> + <ref name="attr.tei.target"/> </element> </define> @@ -1520,12 +1546,16 @@ <ref name="attr.xml.id"/> </optional> <oneOrMore> - <optional><ref name="elem.g"></ref></optional> - <optional><text/></optional> + <optional> + <ref name="elem.g"/> + </optional> + <optional> + <text/> + </optional> </oneOrMore> </element> </define> - + <define name="elem.tei.choice"> <element name="tei:choice"> <interleave> @@ -1541,9 +1571,13 @@ <ref name="attr.xml.id"/> </optional> <oneOrMore> - <optional><ref name="elem.g"></ref></optional> - <optional><text/></optional> - </oneOrMore> + <optional> + <ref name="elem.g"/> + </optional> + <optional> + <text/> + </optional> + </oneOrMore> </element> </define> @@ -1553,8 +1587,12 @@ <ref name="attr.xml.id"/> </optional> <oneOrMore> - <optional><ref name="elem.g"></ref></optional> - <optional><text/></optional> + <optional> + <ref name="elem.g"/> + </optional> + <optional> + <text/> + </optional> </oneOrMore> </element> </define> @@ -1565,8 +1603,12 @@ <ref name="attr.xml.id"/> </optional> <oneOrMore> - <optional><ref name="elem.g"></ref></optional> - <optional><text/></optional> + <optional> + <ref name="elem.g"/> + </optional> + <optional> + <text/> + </optional> </oneOrMore> </element> </define> @@ -1577,8 +1619,12 @@ <ref name="attr.xml.id"/> </optional> <oneOrMore> - <optional><ref name="elem.g"></ref></optional> - <optional><text/></optional> + <optional> + <ref name="elem.g"/> + </optional> + <optional> + <text/> + </optional> </oneOrMore> </element> </define> @@ -1589,8 +1635,12 @@ <ref name="attr.xml.id"/> </optional> <oneOrMore> - <optional><ref name="elem.g"></ref></optional> - <optional><text/></optional> + <optional> + <ref name="elem.g"/> + </optional> + <optional> + <text/> + </optional> </oneOrMore> </element> </define> @@ -1601,8 +1651,12 @@ <ref name="attr.xml.id"/> </optional> <oneOrMore> - <optional><ref name="elem.g"></ref></optional> - <optional><text/></optional> + <optional> + <ref name="elem.g"/> + </optional> + <optional> + <text/> + </optional> </oneOrMore> </element> </define> @@ -1614,10 +1668,14 @@ </optional> <optional> <ref name="attr.tei.degree"/> - </optional> + </optional> <oneOrMore> - <optional><ref name="elem.g"></ref></optional> - <optional><text/></optional> + <optional> + <ref name="elem.g"/> + </optional> + <optional> + <text/> + </optional> </oneOrMore> <!-- Hier könnte man noch eine Schematron-Validierung einbauen: Wenn ein ancestor-Element surface/textBlock/transcription ist, dann darf tei.damage kein text() enthalten, sondern nur elem.g --> </element> @@ -1629,8 +1687,12 @@ <ref name="attr.xml.id"/> </optional> <oneOrMore> - <optional><ref name="elem.g"></ref></optional> - <optional><text/></optional> + <optional> + <ref name="elem.g"/> + </optional> + <optional> + <text/> + </optional> </oneOrMore> </element> </define> @@ -1641,8 +1703,12 @@ <ref name="attr.xml.id"/> </optional> <oneOrMore> - <optional><ref name="elem.g"></ref></optional> - <optional><text/></optional> + <optional> + <ref name="elem.g"/> + </optional> + <optional> + <text/> + </optional> </oneOrMore> </element> </define> @@ -1653,8 +1719,12 @@ <ref name="attr.xml.id"/> </optional> <oneOrMore> - <optional><ref name="elem.g"></ref></optional> - <optional><text/></optional> + <optional> + <ref name="elem.g"/> + </optional> + <optional> + <text/> + </optional> </oneOrMore> </element> </define> @@ -1665,8 +1735,12 @@ <ref name="attr.xml.id"/> </optional> <oneOrMore> - <optional><ref name="elem.g"></ref></optional> - <optional><text/></optional> + <optional> + <ref name="elem.g"/> + </optional> + <optional> + <text/> + </optional> </oneOrMore> </element> </define> @@ -1677,8 +1751,12 @@ <ref name="attr.xml.id"/> </optional> <oneOrMore> - <optional><ref name="elem.g"></ref></optional> - <optional><text/></optional> + <optional> + <ref name="elem.g"/> + </optional> + <optional> + <text/> + </optional> </oneOrMore> </element> </define> @@ -1689,8 +1767,12 @@ <ref name="attr.xml.id"/> </optional> <oneOrMore> - <optional><ref name="elem.g"></ref></optional> - <optional><text/></optional> + <optional> + <ref name="elem.g"/> + </optional> + <optional> + <text/> + </optional> </oneOrMore> </element> </define> @@ -1701,8 +1783,12 @@ <ref name="attr.xml.id"/> </optional> <oneOrMore> - <optional><ref name="elem.g"></ref></optional> - <optional><text/></optional> + <optional> + <ref name="elem.g"/> + </optional> + <optional> + <text/> + </optional> </oneOrMore> </element> </define> @@ -1713,8 +1799,12 @@ <ref name="attr.xml.id"/> </optional> <oneOrMore> - <optional><ref name="elem.g"></ref></optional> - <optional><text/></optional> + <optional> + <ref name="elem.g"/> + </optional> + <optional> + <text/> + </optional> </oneOrMore> </element> </define> @@ -1728,9 +1818,9 @@ </choice> </attribute> </define> - + <define name="attr.tei.target"> - <attribute name="target"/> + <attribute name="target"/> </define> </grammar>