mirror: 初始快照
This commit is contained in:
commit
bf87c99809
1011 files changed
+18247530
No files matched your search
@@ -0,0 +1,289 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- vim: set expandtab sts=2 ts=2 sw=2 tw=88: -->
|
||||
<?oxygen RNGSchema="tei_odds.rng" type="xml"?>
|
||||
<TEI xmlns="http://www.tei-c.org/ns/1.0"
|
||||
xmlns:sch="http://purl.oclc.org/dsdl/schematron"
|
||||
xmlns:rng="http://relaxng.org/ns/structure/1.0"
|
||||
xml:lang="en" n="freedict">
|
||||
<teiHeader>
|
||||
<fileDesc>
|
||||
<titleStmt>
|
||||
<title>TEI Customization for the FreeDict project (basic), version 0.10</title>
|
||||
<respStmt>
|
||||
<resp>maintained by</resp>
|
||||
<name xml:id="bansp">Piotr Bański (bansp in the domain of o2.pl)</name>
|
||||
</respStmt>
|
||||
</titleStmt>
|
||||
<publicationStmt>
|
||||
<publisher>FreeDict</publisher>
|
||||
<availability status="free">
|
||||
<p>This file is released as part of the FreeDict package (https://freedict.org/). It is licensed under the GNU Public License version 2.0 or later.</p>
|
||||
</availability>
|
||||
</publicationStmt>
|
||||
<sourceDesc>
|
||||
<p>Initial version created with Roma, the ODD generator, version 3.6.</p>
|
||||
<p>This file is the basic schema for Freedict dictionaries encoded in TEI P5.</p>
|
||||
</sourceDesc>
|
||||
</fileDesc>
|
||||
</teiHeader>
|
||||
<text>
|
||||
<body>
|
||||
<head>ODD for FreeDict dictionaries, basic level of conformance.</head>
|
||||
<p>This is the ODD driver for generating schemas and documentation for
|
||||
dictionaries in the FreeDict project (see https://freedict.org/). It is
|
||||
meant primarily for dictionaries with a basic structure.
|
||||
More advanced dictionaries require an extended ODD schema.
|
||||
See a TEI Conference and Members' Meeting presentation by Piotr Bański
|
||||
and Beata Wójtowicz, which should be available from
|
||||
https://www.lib.umich.edu/spo/teimeeting09/program.html.</p>
|
||||
<list n="changelog" type="glossed">
|
||||
<item><label>Version 0.11, <date when="2026-07-05">5th of July 2026</date>,
|
||||
by <name>Sebastian Humenda</name></label>:
|
||||
<list type="numbered">
|
||||
<item>Require at least one licence paragraph in <gi>availability</gi>.</item>
|
||||
<item>Allow normal TEI model.p-like content before and after that
|
||||
required licence paragraph, instead of only plain-text
|
||||
<gi>p</gi> paragraphs.</item>
|
||||
<item>Allow multiple licence refs inside the required paragraph
|
||||
(<gi>oneOrMore</gi> refs), not just a single one.</item>
|
||||
<item>Restrict <gi>edition</gi> to FreeDict version strings, based
|
||||
on semantic versioning:
|
||||
<code>major.minor</code>, <code>major.minor.patch</code>, and the
|
||||
three-part form with SemVer build metadata.</item>
|
||||
</list>
|
||||
</item>
|
||||
<item><label>Version 0.10, <date when="2011-09-09">9 September 2011</date>, by <name>Piotr Bański</name></label>: Added the <gi>cell</gi>, <gi>row</gi>, and <gi>table</gi> elements, to handle front matter better.</item>
|
||||
<item><label>Version 0.9, <date when="2010-11-08">8 November 2010</date>, by <name>Piotr Bański</name></label>:
|
||||
<list type="bulleted">
|
||||
<item>Added further Schematron constraints on the contents of <gi>tagUsage</gi>: when the <att>rend</att> on an ancestor is set to <val>anchored</val>, the <att>ana</att> attributes are traced to the FreeDict ontology interface (off by default, because it needs a checkout of the shared/ directory. See kha-deu for an example in action.</item>
|
||||
<item>Commented out the 'figures' module, until it is ever? needed.</item>
|
||||
<item>Removed <gi>tagUsage</gi> from the att.typed class added earlier in v. 0.8, because I decided to forcefully abuse the elements and attributes involved (mostly <gi>namespace</gi>, <att>n</att> and <att>rend</att>).</item>
|
||||
<item>TODO: extend this system for <gi>subcat</gi> elements.</item>
|
||||
</list>
|
||||
</item>
|
||||
<item><label>Version 0.8, <date when="2010-11-06">6 November 2010</date>, by <name>Piotr Bański</name></label>:
|
||||
<list type="bulleted">
|
||||
<item>Added Schematron constraints on <gi>tagUsage</gi> (so this may be the beginning of the end of DTDs for Freedict, and consequently the xinclude extension will be able to go);</item>
|
||||
<item>added <gi>tagUsage</gi> to the att.typed class (need to distinguish between tags used in the <gi>gramGroup</gi> describing the source language forms from those describing the target language (inside <gi>cit</gi>);</item>
|
||||
<item>added <gi>gramGrp</gi> to the att.typed class (in order to be able to talk about 'discharged' grammatical properties, in elements that trigger agreement on other elements (think noun classes));</item>
|
||||
<item>Took out module "iso-fs" - I think it was here while I still thought of ontology interfaces being plugged more directly into dictionaries, not via tagUsage (or maybe I'm forgetting something now...).</item>
|
||||
</list>
|
||||
</item>
|
||||
<item><label>Version 0.7, <date when="2010-04-25">25 April 2010</date>, by <name>Piotr Bański</name></label>: Added the xinclude extension from the approoriate Roma template, changed it to be able to occur as a child of front (I can't validate xinclusions with xmllint if a DTD is used, so this is for the sake of DTDs only)</item>
|
||||
<item><label>Version 0.6, <date when="2010-04-24">24 April 2010</date>, by <name>Piotr Bański</name></label>: Added the "iso-fs" and "analysis" modules, the latter for the sake of @ana only...</item>
|
||||
<item><label>Version 0.5, <date when="2010-04-16">16 April 2010</date>, edited by <name>Piotr Bański</name></label>
|
||||
<list type="bulleted">
|
||||
<item>Changed the responsibility type from the Roma-generated <gi>author</gi> to <gi>respStmt</gi> and called myself a maintainer.</item>
|
||||
<item>Made the changelog dates machine-readable.</item>
|
||||
<item>Added the linking module (merged changes by <name>Stuart Yeates</name>). This is to enable the <att>corresp</att> attributes.</item>
|
||||
</list>
|
||||
</item>
|
||||
<item><label>Version 0.4, <date when="2009-12-31">31 December 2009</date> by <name>Piotr Bański</name></label>
|
||||
<list type="bulleted">
|
||||
<item>Commited to the Freedict CVS (still in version 0.3).</item>
|
||||
<item>Properly re-titled and described.</item>
|
||||
<item>Added the "figures" module, for tables in the front matter.</item>
|
||||
</list>
|
||||
</item>
|
||||
<item><label>Version 0.3, <date when="2008-12-30">30 December 2008</date> by <name>Piotr Bański</name></label>
|
||||
<list type="bulleted">
|
||||
<item>Removed <gi>dictScrap</gi> and <gi>entryFree</gi> and the mysterious header elements that cause Sanity Checker warnings.</item>
|
||||
<item>Removed numbered divs (with a view towards tailoring this ODD for all FreeDict dictionaries).</item>
|
||||
</list>
|
||||
</item>
|
||||
</list>
|
||||
|
||||
<schemaSpec ident="freedict-P5" docLang="en" prefix="tei_">
|
||||
<moduleRef key="core"/>
|
||||
<elementSpec module="core" ident="teiCorpus" mode="delete"/>
|
||||
|
||||
<moduleRef key="tei"/>
|
||||
|
||||
<moduleRef key="header"/>
|
||||
<elementSpec module="header" ident="handNote" mode="delete"/>
|
||||
<elementSpec module="header" ident="typeNote" mode="delete"/>
|
||||
|
||||
<elementSpec module="header" ident="availability" mode="change">
|
||||
<content>
|
||||
<!-- Make sure that at least one <p> contains one or more <ref target="">...</ref>. This should be the licence name and URL. -->
|
||||
<rng:group>
|
||||
<rng:zeroOrMore>
|
||||
<rng:ref name="tei_model.pLike"/>
|
||||
</rng:zeroOrMore>
|
||||
<rng:element name="p">
|
||||
<rng:text/>
|
||||
<rng:oneOrMore>
|
||||
<rng:element name="ref">
|
||||
<rng:attribute name="target"/>
|
||||
<rng:text/>
|
||||
</rng:element>
|
||||
<rng:text/>
|
||||
</rng:oneOrMore>
|
||||
</rng:element>
|
||||
<rng:zeroOrMore>
|
||||
<rng:ref name="tei_model.pLike"/>
|
||||
</rng:zeroOrMore>
|
||||
</rng:group>
|
||||
</content>
|
||||
</elementSpec>
|
||||
|
||||
<elementSpec module="header" ident="edition" mode="change">
|
||||
<content>
|
||||
<rng:data type="token">
|
||||
<rng:param name="pattern">[0-9]+\.[0-9]+(\.[0-9]+(\+[0-9A-Za-z][0-9A-Za-z\-]*(\.[0-9A-Za-z][0-9A-Za-z\-]*)*)?|-fd[0-9]+)?</rng:param>
|
||||
</rng:data>
|
||||
</content>
|
||||
</elementSpec>
|
||||
|
||||
<elementSpec module="header" ident="tagUsage" mode="change">
|
||||
<constraintSpec ident="tagUsage_stuff" scheme="isoschematron">
|
||||
<desc>Make sure that the content of gramGrp (of various sorts) corresponds to whatever is defined in tagUsage *if* it is defined there.</desc>
|
||||
<constraint>
|
||||
<sch:pattern id="gramGrp-tagUsage_conformance">
|
||||
<sch:rule context="/tei:TEI/tei:text/tei:body//tei:*[local-name() eq 'entry' or local-name() eq 'sense']/tei:gramGrp/tei:*">
|
||||
<sch:let name="loc_name" value="local-name()"/>
|
||||
<sch:assert test="not(/tei:TEI/tei:teiHeader/tei:encodingDesc/tei:tagsDecl/tei:namespace[@name eq 'https://www.tei-c.org/ns/1.0']/tei:tagUsage[@gi eq $loc_name]/tei:list/tei:item) or (. = /tei:TEI/tei:teiHeader/tei:encodingDesc/tei:tagsDecl/tei:namespace[@name eq 'http://www.tei-c.org/ns/1.0']/tei:tagUsage[@gi eq $loc_name]/tei:list/tei:item)">The values of gramGrp/<sch:name/> must belong to the set identified in tagUsage for this element.</sch:assert>
|
||||
</sch:rule>
|
||||
<sch:rule context="/tei:TEI/tei:text/tei:body//tei:cit[@type eq 'trans']/tei:gramGrp/tei:*">
|
||||
<!-- big question: is the context here stated properly? is it not too narrow now? -->
|
||||
<sch:let name="loc_name" value="local-name()"/>
|
||||
<sch:assert test="not(/tei:TEI/tei:teiHeader/tei:encodingDesc/tei:tagsDecl/tei:namespace[@name eq 'http://www.tei-c.org/ns/1.0'][@n eq 'equiv']/tei:tagUsage[@gi eq $loc_name]/tei:list/tei:item) or (. = /tei:TEI/tei:teiHeader/tei:encodingDesc/tei:tagsDecl/tei:namespace[@name eq 'http://www.tei-c.org/ns/1.0'][@n eq 'equiv']/tei:tagUsage[@gi eq $loc_name]/tei:list/tei:item)">The values of cit[@type='trans']/gramGrp/<sch:name/> must belong to the set identified in tagUsage for this element, in the 'equiv' section.</sch:assert>
|
||||
</sch:rule>
|
||||
<sch:rule context="/tei:TEI/tei:text/tei:body//tei:*[local-name() eq 'entry' or local-name() eq 'sense']/tei:gramGrp/tei:gramGrp[@type='agr']/tei:*">
|
||||
<sch:let name="loc_name" value="local-name()"/>
|
||||
<sch:assert test="not(/tei:TEI/tei:teiHeader/tei:encodingDesc/tei:tagsDecl/tei:namespace[@name eq 'http://www.tei-c.org/ns/1.0'][@n eq 'agr']/tei:tagUsage[@gi eq $loc_name]/tei:list/tei:item) or (. = /tei:TEI/tei:teiHeader/tei:encodingDesc/tei:tagsDecl/tei:namespace[@name eq 'http://www.tei-c.org/ns/1.0'][@n eq 'agr']/tei:tagUsage[@gi eq $loc_name]/tei:list/tei:item)">The values of gramGrp[@type='agr']/<sch:name/> must belong to the set identified in tagUsage for this element, in the 'agr' section.</sch:assert>
|
||||
</sch:rule>
|
||||
</sch:pattern>
|
||||
</constraint>
|
||||
</constraintSpec>
|
||||
<constraintSpec ident="tagUsage-item-external" scheme="isoschematron">
|
||||
<desc>if this is an anchored description, for each item check if it identifies a resource in the FreeDict ontology interface</desc>
|
||||
<constraint>
|
||||
<sch:pattern id="tagUsage_item_check">
|
||||
<sch:rule context="tei:list/tei:item">
|
||||
<sch:let name="targ_res" value="document(@ana)"/>
|
||||
<sch:assert test="if(ancestor::tei:tagsDecl[@rend eq 'anchored'] or ancestor::tei:namespace[@rend eq 'anchored'] or ancestor::tei:tagUsage[@rend eq 'anchored']) then (exists($targ_res) and string-length($targ_res)) else true()">The @ana attributes should identify a resource fragment in the FreeDict ontology interface.</sch:assert>
|
||||
</sch:rule>
|
||||
</sch:pattern>
|
||||
</constraint>
|
||||
</constraintSpec>
|
||||
</elementSpec>
|
||||
|
||||
<moduleRef key="textstructure"/>
|
||||
<elementSpec module="textstructure" ident="div1" mode="delete"/>
|
||||
<elementSpec module="textstructure" ident="div2" mode="delete"/>
|
||||
<elementSpec module="textstructure" ident="div3" mode="delete"/>
|
||||
<elementSpec module="textstructure" ident="div4" mode="delete"/>
|
||||
<elementSpec module="textstructure" ident="div5" mode="delete"/>
|
||||
<elementSpec module="textstructure" ident="div6" mode="delete"/>
|
||||
<elementSpec module="textstructure" ident="div7" mode="delete"/>
|
||||
|
||||
<moduleRef key="dictionaries"/>
|
||||
<elementSpec module="dictionaries" ident="dictScrap" mode="delete"/>
|
||||
<elementSpec module="dictionaries" ident="entryFree" mode="delete"/>
|
||||
<elementSpec ident="gramGrp" module="dictionaries" mode="change">
|
||||
<classes mode="replace">
|
||||
<memberOf key="model.entryPart"/>
|
||||
<memberOf key="model.entryPart.top"/>
|
||||
<memberOf key="model.gramPart"/>
|
||||
<memberOf key="att.lexicographic"/>
|
||||
<memberOf key="att.typed" mode="add"/>
|
||||
</classes>
|
||||
</elementSpec>
|
||||
|
||||
<moduleRef key="figures" include="cell row table"/>
|
||||
|
||||
<moduleRef key="analysis"/>
|
||||
<elementSpec module="analysis" ident="c" mode="delete"/>
|
||||
<elementSpec module="analysis" ident="cl" mode="delete"/>
|
||||
<elementSpec module="analysis" ident="interp" mode="delete"/>
|
||||
<elementSpec module="analysis" ident="interpGrp" mode="delete"/>
|
||||
<elementSpec module="analysis" ident="m" mode="delete"/>
|
||||
<elementSpec module="analysis" ident="pc" mode="delete"/>
|
||||
<elementSpec module="analysis" ident="phr" mode="delete"/>
|
||||
<elementSpec module="analysis" ident="s" mode="delete"/>
|
||||
<elementSpec module="analysis" ident="span" mode="delete"/>
|
||||
<elementSpec module="analysis" ident="spanGrp" mode="delete"/>
|
||||
<elementSpec module="analysis" ident="w" mode="delete"/>
|
||||
|
||||
<moduleRef key="linking"/>
|
||||
<elementSpec module="linking" ident="ab" mode="delete"/>
|
||||
<elementSpec module="linking" ident="alt" mode="delete"/>
|
||||
<elementSpec module="linking" ident="altGrp" mode="delete"/>
|
||||
<elementSpec module="linking" ident="anchor" mode="delete"/>
|
||||
<elementSpec module="linking" ident="join" mode="delete"/>
|
||||
<elementSpec module="linking" ident="joinGrp" mode="delete"/>
|
||||
<elementSpec module="linking" ident="link" mode="delete"/>
|
||||
<elementSpec module="linking" ident="linkGrp" mode="delete"/>
|
||||
<elementSpec module="linking" ident="seg" mode="delete"/>
|
||||
<elementSpec module="linking" ident="timeline" mode="delete"/>
|
||||
<elementSpec module="linking" ident="when" mode="delete"/>
|
||||
<classSpec ident="att.global.linking" mode="change" type="atts" module="linking">
|
||||
<attList>
|
||||
<attDef ident="synch" mode="delete"/>
|
||||
<attDef ident="sameAs" mode="delete"/>
|
||||
<attDef ident="copyOf" mode="delete"/>
|
||||
<attDef ident="next" mode="delete"/>
|
||||
<attDef ident="prev" mode="delete"/>
|
||||
<attDef ident="exclude" mode="delete"/>
|
||||
<attDef ident="select" mode="delete"/>
|
||||
</attList>
|
||||
</classSpec>
|
||||
|
||||
<elementSpec ident="include" ns="http://www.w3.org/2001/XInclude" mode="add">
|
||||
<desc>The W3C XInclude element</desc>
|
||||
<classes>
|
||||
<!--<memberOf key="model.common"/>-->
|
||||
<memberOf key="model.pLike.front"/>
|
||||
<memberOf key="model.headerPart"/>
|
||||
</classes>
|
||||
<content>
|
||||
<rng:optional>
|
||||
<rng:ref name="fallback"/>
|
||||
</rng:optional>
|
||||
</content>
|
||||
<attList>
|
||||
<attDef ident="href">
|
||||
<desc>pointer to the resource being included</desc>
|
||||
<datatype>
|
||||
<rng:ref name="data.pointer"/>
|
||||
</datatype>
|
||||
</attDef>
|
||||
<attDef ident="parse" usage="opt">
|
||||
<defaultVal>xml</defaultVal>
|
||||
<valList type="closed">
|
||||
<valItem ident="xml"/>
|
||||
<valItem ident="text"/>
|
||||
</valList>
|
||||
</attDef>
|
||||
<attDef ident="xpointer" usage="opt">
|
||||
<datatype>
|
||||
<rng:text/>
|
||||
</datatype>
|
||||
</attDef>
|
||||
<attDef ident="encoding" usage="opt">
|
||||
<datatype>
|
||||
<rng:text/>
|
||||
</datatype>
|
||||
</attDef>
|
||||
<attDef ident="accept" usage="opt">
|
||||
<datatype>
|
||||
<rng:text/>
|
||||
</datatype>
|
||||
</attDef>
|
||||
<attDef ident="accept-charset" usage="opt">
|
||||
<datatype>
|
||||
<rng:text/>
|
||||
</datatype>
|
||||
</attDef>
|
||||
<attDef ident="accept-language" usage="opt">
|
||||
<datatype>
|
||||
<rng:text/>
|
||||
</datatype>
|
||||
</attDef>
|
||||
</attList>
|
||||
</elementSpec>
|
||||
</schemaSpec>
|
||||
</body>
|
||||
</text>
|
||||
</TEI>
|
||||
Reference in new issue
Block a user