Skip to content

Instantly share code, notes, and snippets.

@cboulanger
Last active February 14, 2026 07:30
Show Gist options
  • Select an option

  • Save cboulanger/ead6db80699f99c64d9230adf15806ed to your computer and use it in GitHub Desktop.

Select an option

Save cboulanger/ead6db80699f99c64d9230adf15806ed to your computer and use it in GitHub Desktop.
RNG Schema for validating GROBID *.training.segmentation.tei.xml files
<?xml version="1.0" encoding="UTF-8"?>
<?xml-model href="https://relaxng.org/relaxng.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
<!--
RNG Schema for validating GROBID *.training.segmentation.tei.xml files
-->
<grammar xmlns="http://relaxng.org/ns/structure/1.0"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
ns="http://www.tei-c.org/ns/1.0">
<start>
<ref name="TEI"/>
</start>
<define name="TEI">
<element name="TEI">
<zeroOrMore>
<choice>
<ref name="teiHeader"/>
<ref name="text"/>
</choice>
</zeroOrMore>
</element>
</define>
<define name="teiHeader">
<element name="teiHeader">
<zeroOrMore>
<choice>
<ref name="encodingDesc"/>
<ref name="fileDesc"/>
<ref name="revisionDesc"/>
</choice>
</zeroOrMore>
</element>
</define>
<define name="fileDesc">
<element name="fileDesc">
<optional>
<attribute name="id" ns="http://www.w3.org/XML/1998/namespace"/>
</optional>
<zeroOrMore>
<choice>
<ref name="editionStmt"/>
<ref name="publicationStmt"/>
<ref name="sourceDesc"/>
<ref name="titleStmt"/>
</choice>
</zeroOrMore>
</element>
</define>
<define name="titleStmt">
<element name="titleStmt">
<zeroOrMore>
<choice>
<ref name="author"/>
<ref name="respStmt"/>
<ref name="title"/>
</choice>
</zeroOrMore>
</element>
</define>
<define name="respStmt">
<element name="respStmt">
<zeroOrMore>
<choice>
<ref name="persName"/>
<ref name="resp"/>
</choice>
</zeroOrMore>
</element>
</define>
<define name="resp">
<element name="resp">
<text/>
</element>
</define>
<define name="editionStmt">
<element name="editionStmt">
<zeroOrMore>
<ref name="edition"/>
</zeroOrMore>
</element>
</define>
<define name="publicationStmt">
<element name="publicationStmt">
<zeroOrMore>
<choice>
<ref name="availability"/>
<ref name="date"/>
<ref name="idno"/>
<ref name="publisher"/>
</choice>
</zeroOrMore>
</element>
</define>
<define name="licence">
<element name="licence">
<optional>
<attribute name="target"/>
</optional>
<empty/>
</element>
</define>
<define name="sourceDesc">
<element name="sourceDesc">
<zeroOrMore>
<ref name="bibl"/>
<ref name="biblStruct"/>
</zeroOrMore>
</element>
</define>
<define name="bibl">
<element name="bibl">
<text/>
</element>
</define>
<define name="encodingDesc">
<element name="encodingDesc">
<zeroOrMore>
<ref name="appInfo"/>
</zeroOrMore>
</element>
</define>
<define name="appInfo">
<element name="appInfo">
<zeroOrMore>
<ref name="application"/>
</zeroOrMore>
</element>
</define>
<define name="application">
<element name="application">
<optional>
<attribute name="ident"/>
</optional>
<optional>
<attribute name="type"/>
</optional>
<optional>
<attribute name="version"/>
</optional>
<optional>
<attribute name="when"/>
</optional>
<zeroOrMore>
<choice>
<ref name="desc"/>
<ref name="label"/>
<ref name="ref"/>
</choice>
</zeroOrMore>
</element>
</define>
<define name="desc">
<element name="desc">
<text/>
</element>
</define>
<define name="label">
<element name="label">
<optional>
<attribute name="type"/>
</optional>
<text/>
</element>
</define>
<define name="revisionDesc">
<element name="revisionDesc">
<zeroOrMore>
<ref name="change"/>
</zeroOrMore>
</element>
</define>
<define name="change">
<element name="change">
<optional>
<attribute name="status"/>
</optional>
<optional>
<attribute name="when"/>
</optional>
<optional>
<attribute name="who"/>
</optional>
<interleave>
<text/>
<zeroOrMore>
<ref name="desc"/>
</zeroOrMore>
</interleave>
</element>
</define>
<define name="text">
<element name="text">
<optional>
<attribute name="lang" ns="http://www.w3.org/XML/1998/namespace"/>
</optional>
<interleave>
<text/>
<zeroOrMore>
<ref name="titlePage" />
</zeroOrMore>
<zeroOrMore>
<ref name="toc" />
</zeroOrMore>
<zeroOrMore>
<ref name="div" />
</zeroOrMore>
<zeroOrMore>
<ref name="body"/>
</zeroOrMore>
<zeroOrMore>
<ref name="front"/>
</zeroOrMore>
<zeroOrMore>
<ref name="lb"/>
</zeroOrMore>
<zeroOrMore>
<ref name="listBibl"/>
</zeroOrMore>
<zeroOrMore>
<ref name="note"/>
</zeroOrMore>
<zeroOrMore>
<ref name="page"/>
</zeroOrMore>
</interleave>
</element>
</define>
<define name="titlePage">
<element name="titlePage">
<interleave>
<text/>
<zeroOrMore>
<ref name="lb"/>
</zeroOrMore>
<zeroOrMore>
<ref name="page"/>
</zeroOrMore>
</interleave>
</element>
</define>
<define name="toc">
<element name="toc">
<interleave>
<text/>
<zeroOrMore>
<ref name="lb"/>
</zeroOrMore>
<zeroOrMore>
<ref name="page"/>
</zeroOrMore>
</interleave>
</element>
</define>
<define name="div">
<element name="div">
<optional>
<attribute name="type">
<choice>
<value>toc</value>
<value>acknowledgement</value>
<value>availability</value>
<value>funding</value>
<value>annex</value>
<value>conflict</value>
</choice>
</attribute>
</optional>
<interleave>
<text/>
<zeroOrMore>
<ref name="lb"/>
</zeroOrMore>
<zeroOrMore>
<ref name="page"/>
</zeroOrMore>
</interleave>
</element>
</define>
<define name="front">
<element name="front">
<interleave>
<text/>
<zeroOrMore>
<ref name="lb"/>
</zeroOrMore>
<zeroOrMore>
<ref name="page"/>
</zeroOrMore>
</interleave>
</element>
</define>
<define name="lb">
<element name="lb">
<empty/>
</element>
</define>
<define name="page">
<element name="page">
<interleave>
<text/>
<zeroOrMore>
<ref name="lb"/>
</zeroOrMore>
</interleave>
</element>
</define>
<define name="body">
<element name="body">
<interleave>
<text/>
<zeroOrMore>
<ref name="lb"/>
</zeroOrMore>
</interleave>
</element>
</define>
<define name="listBibl">
<element name="listBibl">
<interleave>
<text/>
<zeroOrMore>
<ref name="lb"/>
</zeroOrMore>
</interleave>
</element>
</define>
<!-- ============================================================ -->
<!-- Main biblStruct Definition -->
<!-- ============================================================ -->
<define name="biblStruct">
<element name="biblStruct">
<optional>
<attribute name="type"/>
</optional>
<optional>
<attribute name="id" ns="http://www.w3.org/XML/1998/namespace"/>
</optional>
<group>
<!-- Zero or more analytic elements (for articles, chapters, etc.) -->
<zeroOrMore>
<ref name="analytic"/>
</zeroOrMore>
<!-- One or more monogr elements (for books, journals, etc.) -->
<oneOrMore>
<ref name="monogr"/>
<!-- Each monogr can optionally be followed by series elements -->
<zeroOrMore>
<ref name="series"/>
</zeroOrMore>
</oneOrMore>
<!-- Trailing elements -->
<zeroOrMore>
<choice>
<ref name="note"/>
<ref name="ptr"/>
<ref name="ref"/>
<ref name="idno"/>
</choice>
</zeroOrMore>
</group>
</element>
</define>
<!-- ============================================================ -->
<!-- Bibliographic Level Elements -->
<!-- ============================================================ -->
<define name="analytic">
<element name="analytic">
<zeroOrMore>
<choice>
<ref name="author"/>
<ref name="editor"/>
<ref name="title"/>
<ref name="meeting"/>
<ref name="date"/>
<ref name="idno"/>
<ref name="ptr"/>
<ref name="ref"/>
<ref name="availability"/>
</choice>
</zeroOrMore>
</element>
</define>
<define name="monogr">
<element name="monogr">
<zeroOrMore>
<choice>
<ref name="author"/>
<ref name="editor"/>
<ref name="title"/>
<ref name="imprint"/>
<ref name="biblScope"/>
<ref name="edition"/>
<ref name="date"/>
<ref name="idno"/>
<ref name="ptr"/>
<ref name="ref"/>
<ref name="availability"/>
<ref name="note"/>
</choice>
</zeroOrMore>
</element>
</define>
<define name="series">
<element name="series">
<interleave>
<text/>
<zeroOrMore>
<choice>
<ref name="title"/>
<ref name="editor"/>
<ref name="biblScope"/>
<ref name="idno"/>
<ref name="availability"/>
</choice>
</zeroOrMore>
</interleave>
</element>
</define>
<!-- ============================================================ -->
<!-- Responsibility Elements (Authors, Editors) -->
<!-- ============================================================ -->
<define name="author">
<element name="author">
<optional>
<attribute name="role"/>
</optional>
<optional>
<attribute name="id" ns="http://www.w3.org/XML/1998/namespace"/>
</optional>
<interleave>
<text/>
<zeroOrMore>
<choice>
<ref name="persName"/>
<ref name="forename"/>
<ref name="surname"/>
<ref name="middlename"/>
</choice>
</zeroOrMore>
</interleave>
</element>
</define>
<define name="editor">
<element name="editor">
<optional>
<attribute name="role"/>
</optional>
<optional>
<attribute name="id" ns="http://www.w3.org/XML/1998/namespace"/>
</optional>
<interleave>
<text/>
<zeroOrMore>
<choice>
<ref name="persName"/>
<ref name="forename"/>
<ref name="surname"/>
<ref name="middlename"/>
</choice>
</zeroOrMore>
</interleave>
</element>
</define>
<!-- ============================================================ -->
<!-- Personal Name Elements -->
<!-- ============================================================ -->
<define name="persName">
<element name="persName">
<optional>
<attribute name="id" ns="http://www.w3.org/XML/1998/namespace"/>
</optional>
<interleave>
<text/>
<zeroOrMore>
<ref name="forename"/>
</zeroOrMore>
<zeroOrMore>
<ref name="surname"/>
</zeroOrMore>
<zeroOrMore>
<ref name="middlename"/>
</zeroOrMore>
</interleave>
</element>
</define>
<define name="forename">
<element name="forename">
<optional>
<attribute name="type"/>
</optional>
<text/>
</element>
</define>
<define name="surname">
<element name="surname">
<optional>
<attribute name="type"/>
</optional>
<text/>
</element>
</define>
<define name="middlename">
<element name="middlename">
<optional>
<attribute name="type"/>
</optional>
<text/>
</element>
</define>
<!-- ============================================================ -->
<!-- Title Element -->
<!-- ============================================================ -->
<define name="title">
<element name="title">
<optional>
<attribute name="type"/>
</optional>
<optional>
<attribute name="level">
<choice>
<value>a</value> <!-- analytic -->
<value>m</value> <!-- monographic -->
<value>j</value> <!-- journal -->
<value>s</value> <!-- series -->
<value>u</value> <!-- unpublished -->
</choice>
</attribute>
</optional>
<text/>
</element>
</define>
<!-- ============================================================ -->
<!-- Imprint and Publication Elements -->
<!-- ============================================================ -->
<define name="imprint">
<element name="imprint">
<zeroOrMore>
<choice>
<ref name="publisher"/>
<ref name="pubPlace"/>
<ref name="date"/>
</choice>
</zeroOrMore>
</element>
</define>
<define name="publisher">
<element name="publisher">
<optional>
<attribute name="id" ns="http://www.w3.org/XML/1998/namespace"/>
</optional>
<text/>
</element>
</define>
<define name="pubPlace">
<element name="pubPlace">
<text/>
</element>
</define>
<!-- ============================================================ -->
<!-- Bibliographic Scope and Range Elements -->
<!-- ============================================================ -->
<define name="biblScope">
<element name="biblScope">
<optional>
<attribute name="unit"/>
</optional>
<optional>
<attribute name="from"/>
</optional>
<optional>
<attribute name="to"/>
</optional>
<text/>
</element>
</define>
<!-- ============================================================ -->
<!-- Date and Identifier Elements -->
<!-- ============================================================ -->
<define name="date">
<element name="date">
<optional>
<attribute name="type"/>
</optional>
<optional>
<attribute name="when"/>
</optional>
<text/>
</element>
</define>
<define name="idno">
<element name="idno">
<optional>
<attribute name="type"/>
</optional>
<text/>
</element>
</define>
<!-- ============================================================ -->
<!-- Edition and Availability Elements -->
<!-- ============================================================ -->
<define name="edition">
<element name="edition">
<interleave>
<text/>
<zeroOrMore>
<choice>
<ref name="date"/>
<ref name="idno"/>
</choice>
</zeroOrMore>
</interleave>
</element>
</define>
<define name="availability">
<element name="availability">
<optional>
<attribute name="status"/>
</optional>
<text/>
</element>
</define>
<!-- ============================================================ -->
<!-- Note and Reference Elements -->
<!-- ============================================================ -->
<define name="note">
<element name="note">
<optional>
<attribute name="type"/>
</optional>
<optional>
<attribute name="place"/>
</optional>
<zeroOrMore>
<ref name="lb"/>
</zeroOrMore>
<text/>
</element>
</define>
<define name="ptr">
<element name="ptr">
<attribute name="target"/>
<empty/>
</element>
</define>
<define name="ref">
<element name="ref">
<optional>
<attribute name="target"/>
</optional>
<text/>
</element>
</define>
<!-- ============================================================ -->
<!-- Meeting Element (for conference proceedings) -->
<!-- ============================================================ -->
<define name="meeting">
<element name="meeting">
<optional>
<attribute name="id" ns="http://www.w3.org/XML/1998/namespace"/>
</optional>
<text/>
</element>
</define>
</grammar>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment