<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.tei-c.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mholmes</id>
	<title>TEIWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.tei-c.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mholmes"/>
	<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=Special:Contributions/Mholmes"/>
	<updated>2026-04-18T21:08:34Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.32.0</generator>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=EXist&amp;diff=16890</id>
		<title>EXist</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=EXist&amp;diff=16890"/>
		<updated>2022-05-12T17:20:03Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: /* Sample implementations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Tools]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Querying tools]]&lt;br /&gt;
[[Category:Publishing and delivery tools]]&lt;br /&gt;
[[Category:XQuery]]&lt;br /&gt;
&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
&lt;br /&gt;
[http://exist-db.org eXist-db] is an open source database management system built using [http://en.wikipedia.org/wiki/XML XML] technology.  It stores XML data according to the XML data model and features efficient, index-based XQuery processing.&lt;br /&gt;
&lt;br /&gt;
eXist-db supports many [http://en.wikipedia.org/wiki/Web_2 Web 2.0] technology standards, making&lt;br /&gt;
it an excellent platform for developing web-based applications: &lt;br /&gt;
&lt;br /&gt;
*Technologies: [http://www.w3.org/TR/xquery-30/ XQuery 3.0], [http://www.w3.org/TR/xpath-30/ XPath 3.0], [http://www.w3.org/TR/xslt20/ XSLT 2.0] (based on [http://www.saxonica.com/ Saxon]), XForms 1.1 (based on [http://www.betterForm.de betterForm], [http://www.orbeon.com Orbeon] or [http://www.agencexml.com/xsltforms XSLTForms]) XProc, JSON and JSONP.&lt;br /&gt;
&lt;br /&gt;
*Interfaces: [http://en.wikipedia.org/wiki/Representational_State_Transfer REST], [http://exquery.github.io/exquery/exquery-restxq-specification/restxq-1.0-specification.html RESTXQ], [http://www.webdav.org/ WebDAV], [http://www.w3.org/TR/soap/ SOAP], [http://en.wikipedia.org/wiki/XML-RPC XML-RPC], and [http://en.wikipedia.org/wiki/Atom_(standard) Atom Publishing Protocol]&lt;br /&gt;
&lt;br /&gt;
*XML database specific features: [http://xmldb-org.sourceforge.net/xupdate/index.html XML:DB], [http://xmldb-org.sourceforge.net/xupdate/ XUpdate],  [http://exist.sourceforge.net/update_ext.html XQuery update extensions] (to be aligned with the new [http://www.w3.org/TR/xquery-update-10/ XQuery Update Facility 1.0]).&lt;br /&gt;
            &lt;br /&gt;
The 1.4 version added a new full text index based on  [http://lucene.apache.org/java/docs/index.html Apache Lucene], a lightweight [http://en.wikipedia.org/wiki/Rewrite_engine URL rewriting] and [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller Model–view–controller] framework, as well as support for [http://xproc.org/ XProc]. With version 1.4, the XQuery engine has seen a major redesign, resulting in improved performance.&lt;br /&gt;
&lt;br /&gt;
The [http://exist.sourceforge.net/download.html 2.0 version] completely redesigned the Security subsystem introducing Access Control Lists and multiple realm authentication, and also introduced a re-write of the WebDAV Server making it more widely compatible with clients. In addition hundreds of bugfixes and performance improvements have been made since the 1.4 release.&lt;br /&gt;
                &lt;br /&gt;
eXist-db is highly compliant with the [http://www.w3.org/TR/xquery/ XQuery standard] (current [http://www.w3.org/XML/Query/test-suite/ XQuery Test Suite] score is [http://www.w3.org/XML/Query/test-suite/XQTSReportSimple.html 99.4%]).&lt;br /&gt;
 &lt;br /&gt;
The query engine is extensible and features a large collection of [http://demo.exist-db.org/exist/xquery/functions.xql XQuery Function Modules].&lt;br /&gt;
 &lt;br /&gt;
eXist-db provides a powerful environment for the development of web applications&lt;br /&gt;
based on XQuery and related standards. Entire web applications can be written in&lt;br /&gt;
XQuery, using XSLT, XHTML, CSS and Javascript (for AJAX functionality). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--            &lt;br /&gt;
[http://exist.sourceforge.net/ eXist] is a Native XML Database, used for storing and querying XML files. Since the first versions, made available between 2000 and 2001, eXist has considerably evolved, thanks also to an active community of developers and users, and in its latest releases, it has several functions, such as support for [http://www.w3.org/TR/xquery/ XQuery], [http://www.w3.org/2001/XInclude XInclude] and [http://xmldb-org.sourceforge.net/xupdate/ XUpdate]. Through an integration with [[ApacheCocoon]], [http://www.w3.org/TR/xslt XSLT] processing can be added to the whole workflow, using the pipeline concept of the [http://cocoon.apache.org/2.1/userdocs/concepts/sitemap.html Sitemap]. In this way data and documents can be queried and transformed using together, in the same process, [http://www.w3.org/TR/xquery/ XQuery] and [http://www.w3.org/TR/xslt XSLT]. Moreover [http://exist.sourceforge.net/ eXist] can be integrated as a block in [[ApacheCocoon]], so to use all the modules of this framework, and not the limited version shipped with this database. Recently, starting from version 1.1, [http://exist.sourceforge.net/ eXist] has changed the indexing core, becoming more efficient in being used with complex document-centric files, such as TEI encoded texts.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Persistent storing and indexing of the XML documents&lt;br /&gt;
* Database administration functions (data management, backup, recoveries) &lt;br /&gt;
* Management of the stored documents in collections&lt;br /&gt;
* XQuery engine with extentions for full-text search&lt;br /&gt;
* Support for XQuery, XSLT, XInclude and XPointer (partial), XUpdate, XSLT and XProc&lt;br /&gt;
* [http://xmldb-org.sourceforge.net/xapi/ XML:DB API]&lt;br /&gt;
* Use of network protocols (HTTP/REST, XML-RPC, SOAP, WebDAV)&lt;br /&gt;
* Security Access Control Lists on Documents and Collections&lt;br /&gt;
* Optional multi-realm integration with LDAP and Active Directory&lt;br /&gt;
* Integration with [[ApacheCocoon]]&lt;br /&gt;
&lt;br /&gt;
== User commentary ==&lt;br /&gt;
'''Please sign all comments.'''&lt;br /&gt;
&lt;br /&gt;
Can be very sensitive to placement of certain files, in particular collection.xconf. Silently ignores config files in the wrong place. [[User:Stuartyeates|Stuartyeates]] 18:15, 26 April 2011 (EDT)&lt;br /&gt;
&lt;br /&gt;
There is a [[XML_Whitespace#Bug_in_eXist|bug in eXist's handling of whitespace]]. [[User:Kshawkin|Kshawkin]] 15:48, 10 March 2015 (CET)&lt;br /&gt;
&lt;br /&gt;
== System requirements ==&lt;br /&gt;
eXist is written in Java, and therefore requires a [http://java.oracle.com JRE] ≥ 6. Being a Java application it can be used on most operating systems, including Windows, Linux, Mac OS X, Solaris and FreeBSD and it can be deployed in several ways, as a standalone server application, as a web application inside a servlet container (such as [http://tomcat.apache.org/ Apache Tomcat] or [http://www.mortbay.org/ Jetty]) or as a Java library embedded in a larger application.&lt;br /&gt;
&lt;br /&gt;
== Source code and licensing ==&lt;br /&gt;
eXist is open-source, released under the [http://www.gnu.org/licenses/lgpl-2.1.html GNU LGPL 2.1] license.&lt;br /&gt;
&lt;br /&gt;
== Support for TEI ==&lt;br /&gt;
Joe Wicentowski has a step-by-step introduction with full example files on how to publish TEI texts with eXist, presented at the Digital.Humanities@Oxford Summer School in 2011; see the [http://digital.humanities.ox.ac.uk/dhoxss/2011/sessions.html#xmldb session description] with links to slides and sample material.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
From the Package Manager, accessed through the eXist Dashboard, one can install the application Shakespeare's Works in TEI from the eXist Public Repository. All Shakespeare's plays from the [http://wordhoard.northwestern.edu/ WordHoard Shakespeare] can be queried with search results displayed in the hit list in KWIC format. See also the [https://github.com/wolfgangmm/ShakespeareDemo GitHub repo] for this application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A TEI module called Matumi is distributed as an eXist application. Matumi is still under development. It requires eXist version 1.5 and is installed from within eXist's Package Reposistory. After installation, it can be accessed from [http://localhost:8080/exist/apps/encyclopedia/ http://localhost:8080/exist/apps/encyclopedia/] on a default installation.&lt;br /&gt;
&lt;br /&gt;
Matumi is not a full-blown TEI module yet, but it has some notable features, such as the ability to browse by filtering texts and core parts of the markup. It contains faceted search feeding off the markup, making possible &amp;quot;translingual&amp;quot; searches that utilise references added to name forms.&lt;br /&gt;
&lt;br /&gt;
The app uses XQuery only.&lt;br /&gt;
&lt;br /&gt;
Installation will store a number of basic TEI documents in the data directory. These files are excepts from encyclopaedias, whence the present orientation of the app.&lt;br /&gt;
&lt;br /&gt;
If you access through browsing, you can arrange the data by four criteria - books, entry title, subjects and names.&lt;br /&gt;
&lt;br /&gt;
If you access through search, in order to retrieve some sample results, select lemma and search for &amp;quot;nation&amp;quot;, select term and search for &amp;quot;ars&amp;quot;, select name and search for &amp;quot;marx&amp;quot;, select text and search for &amp;quot;gouvernement&amp;quot;, or select key and search for &amp;quot;http://dbpedia.org/page/French_Revolution&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is a comprehensive discussion of optimising eXist/XQuery for TEI on  [http://exist.2174344.n4.nabble.com/eXist-optimisation-and-large-TEI-collections-td3487406.html the eXist-open mailing list]&lt;br /&gt;
&lt;br /&gt;
== Language(s) ==&lt;br /&gt;
As detailed above, eXist is itself written in the Java language. However, it enables complete applications to be created without writing any programming code, by just using only XQuery, XSLT, (X)HTML, CSS, XForms, XProc and Javascript. Using the available network interfaces is possible to query eXist not only with Java, and there are already available several modules for other languages ([http://www.bmuskalla.de/DB_eXist/ PHP], [http://query-exist.sourceforge.net/ Perl]) and frameworks ([http://sourceforge.net/projects/springxmldb/ Spring], [http://www.throwingbeans.org/tech/xml_databases_with_exist_and_coldfusion.html ColdFusion], [http://www.zope.org/Members/spilloz/existda Zope]).&lt;br /&gt;
The [http://exist-db.org/documentation.html documentation] is available only in english.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
[http://exist-db.org/exist/apps/doc/ eXist Documentation]&lt;br /&gt;
&lt;br /&gt;
== Tech support ==&lt;br /&gt;
Technical support for the Open Source product is provided mainly through the [http://sourceforge.net/mail/?group_id=17691 eXist-db mailing list]. Being open-source all kind of support and help is made voluntarily and with no obligations. Anyway the support it is very efficient, and almost all the requests are answered in a complete and qualified way.&lt;br /&gt;
&lt;br /&gt;
Commercial support, consultancy and training is also available from the creators of eXist through [http://www.existsolutions.com eXist Solutions]. eXist Solutions directly support and further the development of eXist.&lt;br /&gt;
&lt;br /&gt;
== User community ==&lt;br /&gt;
The user community is very active and, as for the technical support, the main way of communication is the [http://sourceforge.net/mail/?group_id=17691 eXist-db mailing list]. Many participants of this list are also part of the TEI Community. There is also a [http://wiki.exist-db.org wiki] and an IRC channel: #existdb at irc.freenode.net.&lt;br /&gt;
&lt;br /&gt;
In August 2011, a dedicated email list was created on using eXist with TEI resources. For information or to subscribe, go to the [https://lists.sourceforge.net/lists/listinfo/exist-teixml eXist-TEIXML] information page.&lt;br /&gt;
&lt;br /&gt;
== Sample implementations ==&lt;br /&gt;
* [http://www.weber-gesamtausgabe.de/ Carl-Maria-von-Weber-Gesamtausgabe (WeGA)] The correspondence, diaries, writings and works of Carl Maria von Weber &lt;br /&gt;
* [http://syriaca.org/ Syrica.org] publishes online reference works concerning the culture, history, and literature of Syriac communities from antiquity to the present. Public repo at [https://github.com/srophe/srophe-eXist-app GitHub].&lt;br /&gt;
&amp;lt;!--* [http://193.204.255.27/operaliber/index.php?page=/operaLiber/home OperaLiber]--&amp;gt;&lt;br /&gt;
* [http://www.anglo-norman.net/ The Anglo-Norman Dictionary]&lt;br /&gt;
* [http://mith2.umd.edu/eada/ Early Americas Digital Archive]&lt;br /&gt;
* [http://buddhistinformatics.ddbc.edu.tw/BZA/ A Digital Comparative Edition and Translation of the Shorter Chinese Saṃyukta Āgama]&lt;br /&gt;
* [http://history.state.gov/ Foreign Relations of the United States and other publications of the Office of the Historian, U.S. Department of State]&lt;br /&gt;
* [https://github.com/stuartyeates/He-Kupu-Tawhito Multilingual Concordances with TEI]&lt;br /&gt;
* [http://vnsletters.org/VNS/ VNS letters online]: digital edition of letters concerning the Belgian literary journal 'Van nu en Straks'&lt;br /&gt;
* [http://ctb.kantl.be/corpora/CPWNL/ Corpus Pieter Willems]: searchable facsimile edition of the first Dutch dialect survey ever&lt;br /&gt;
* [http://tbe.kantl.be/TBE/xquery/TBEvalidator.xq TEI validator]: interactive validating app for TEI documents using eXist's XML validation functions&lt;br /&gt;
* [http://sermones.net/thesaurus/ Sermones.net : éditions électroniques de sermons latins médiévaux]: l’édition électronique de corpus de sermons, dont le premier est la série de sermons de Carême de Jacques de Voragine.&lt;br /&gt;
&amp;lt;!--* [http://ciham.ish-lyon.cnrs.fr/paleographie/index.php?l=en Interactive Album of Mediaeval Palaeography]: website for training in practical palaeographical skills.--&amp;gt;&lt;br /&gt;
* [http://voice.univie.ac.at Vienna-Oxford International Corpus of English]: a corpus of transcripts of spoken ELF interactions in TEI format.&lt;br /&gt;
* [http://www.manuscripta.se// Greek Manuscripts in Sweden]&lt;br /&gt;
&amp;lt;!--http://macgreevy.org?--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Current version number and date of release ==&lt;br /&gt;
Current stable release: eXist 3.0 (2017-02-10)&lt;br /&gt;
&lt;br /&gt;
== How to download ==&lt;br /&gt;
Download an installer for the current stable version (version 2.1, July 2013) from the [http://www.exist-db.org/exist/apps/homepage/index.html#subscriptions eXist Home Page]; clone or download the current trunk version from the [https://github.com/eXist-db/exist eXist GitHub Page].&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Berkeley DB XML]]&lt;br /&gt;
* [[Base-X]]&lt;br /&gt;
* [[TEI Web Publishing]]&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=EXist&amp;diff=16889</id>
		<title>EXist</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=EXist&amp;diff=16889"/>
		<updated>2022-05-12T17:19:43Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: /* Sample implementations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Tools]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Querying tools]]&lt;br /&gt;
[[Category:Publishing and delivery tools]]&lt;br /&gt;
[[Category:XQuery]]&lt;br /&gt;
&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
&lt;br /&gt;
[http://exist-db.org eXist-db] is an open source database management system built using [http://en.wikipedia.org/wiki/XML XML] technology.  It stores XML data according to the XML data model and features efficient, index-based XQuery processing.&lt;br /&gt;
&lt;br /&gt;
eXist-db supports many [http://en.wikipedia.org/wiki/Web_2 Web 2.0] technology standards, making&lt;br /&gt;
it an excellent platform for developing web-based applications: &lt;br /&gt;
&lt;br /&gt;
*Technologies: [http://www.w3.org/TR/xquery-30/ XQuery 3.0], [http://www.w3.org/TR/xpath-30/ XPath 3.0], [http://www.w3.org/TR/xslt20/ XSLT 2.0] (based on [http://www.saxonica.com/ Saxon]), XForms 1.1 (based on [http://www.betterForm.de betterForm], [http://www.orbeon.com Orbeon] or [http://www.agencexml.com/xsltforms XSLTForms]) XProc, JSON and JSONP.&lt;br /&gt;
&lt;br /&gt;
*Interfaces: [http://en.wikipedia.org/wiki/Representational_State_Transfer REST], [http://exquery.github.io/exquery/exquery-restxq-specification/restxq-1.0-specification.html RESTXQ], [http://www.webdav.org/ WebDAV], [http://www.w3.org/TR/soap/ SOAP], [http://en.wikipedia.org/wiki/XML-RPC XML-RPC], and [http://en.wikipedia.org/wiki/Atom_(standard) Atom Publishing Protocol]&lt;br /&gt;
&lt;br /&gt;
*XML database specific features: [http://xmldb-org.sourceforge.net/xupdate/index.html XML:DB], [http://xmldb-org.sourceforge.net/xupdate/ XUpdate],  [http://exist.sourceforge.net/update_ext.html XQuery update extensions] (to be aligned with the new [http://www.w3.org/TR/xquery-update-10/ XQuery Update Facility 1.0]).&lt;br /&gt;
            &lt;br /&gt;
The 1.4 version added a new full text index based on  [http://lucene.apache.org/java/docs/index.html Apache Lucene], a lightweight [http://en.wikipedia.org/wiki/Rewrite_engine URL rewriting] and [http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller Model–view–controller] framework, as well as support for [http://xproc.org/ XProc]. With version 1.4, the XQuery engine has seen a major redesign, resulting in improved performance.&lt;br /&gt;
&lt;br /&gt;
The [http://exist.sourceforge.net/download.html 2.0 version] completely redesigned the Security subsystem introducing Access Control Lists and multiple realm authentication, and also introduced a re-write of the WebDAV Server making it more widely compatible with clients. In addition hundreds of bugfixes and performance improvements have been made since the 1.4 release.&lt;br /&gt;
                &lt;br /&gt;
eXist-db is highly compliant with the [http://www.w3.org/TR/xquery/ XQuery standard] (current [http://www.w3.org/XML/Query/test-suite/ XQuery Test Suite] score is [http://www.w3.org/XML/Query/test-suite/XQTSReportSimple.html 99.4%]).&lt;br /&gt;
 &lt;br /&gt;
The query engine is extensible and features a large collection of [http://demo.exist-db.org/exist/xquery/functions.xql XQuery Function Modules].&lt;br /&gt;
 &lt;br /&gt;
eXist-db provides a powerful environment for the development of web applications&lt;br /&gt;
based on XQuery and related standards. Entire web applications can be written in&lt;br /&gt;
XQuery, using XSLT, XHTML, CSS and Javascript (for AJAX functionality). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--            &lt;br /&gt;
[http://exist.sourceforge.net/ eXist] is a Native XML Database, used for storing and querying XML files. Since the first versions, made available between 2000 and 2001, eXist has considerably evolved, thanks also to an active community of developers and users, and in its latest releases, it has several functions, such as support for [http://www.w3.org/TR/xquery/ XQuery], [http://www.w3.org/2001/XInclude XInclude] and [http://xmldb-org.sourceforge.net/xupdate/ XUpdate]. Through an integration with [[ApacheCocoon]], [http://www.w3.org/TR/xslt XSLT] processing can be added to the whole workflow, using the pipeline concept of the [http://cocoon.apache.org/2.1/userdocs/concepts/sitemap.html Sitemap]. In this way data and documents can be queried and transformed using together, in the same process, [http://www.w3.org/TR/xquery/ XQuery] and [http://www.w3.org/TR/xslt XSLT]. Moreover [http://exist.sourceforge.net/ eXist] can be integrated as a block in [[ApacheCocoon]], so to use all the modules of this framework, and not the limited version shipped with this database. Recently, starting from version 1.1, [http://exist.sourceforge.net/ eXist] has changed the indexing core, becoming more efficient in being used with complex document-centric files, such as TEI encoded texts.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Persistent storing and indexing of the XML documents&lt;br /&gt;
* Database administration functions (data management, backup, recoveries) &lt;br /&gt;
* Management of the stored documents in collections&lt;br /&gt;
* XQuery engine with extentions for full-text search&lt;br /&gt;
* Support for XQuery, XSLT, XInclude and XPointer (partial), XUpdate, XSLT and XProc&lt;br /&gt;
* [http://xmldb-org.sourceforge.net/xapi/ XML:DB API]&lt;br /&gt;
* Use of network protocols (HTTP/REST, XML-RPC, SOAP, WebDAV)&lt;br /&gt;
* Security Access Control Lists on Documents and Collections&lt;br /&gt;
* Optional multi-realm integration with LDAP and Active Directory&lt;br /&gt;
* Integration with [[ApacheCocoon]]&lt;br /&gt;
&lt;br /&gt;
== User commentary ==&lt;br /&gt;
'''Please sign all comments.'''&lt;br /&gt;
&lt;br /&gt;
Can be very sensitive to placement of certain files, in particular collection.xconf. Silently ignores config files in the wrong place. [[User:Stuartyeates|Stuartyeates]] 18:15, 26 April 2011 (EDT)&lt;br /&gt;
&lt;br /&gt;
There is a [[XML_Whitespace#Bug_in_eXist|bug in eXist's handling of whitespace]]. [[User:Kshawkin|Kshawkin]] 15:48, 10 March 2015 (CET)&lt;br /&gt;
&lt;br /&gt;
== System requirements ==&lt;br /&gt;
eXist is written in Java, and therefore requires a [http://java.oracle.com JRE] ≥ 6. Being a Java application it can be used on most operating systems, including Windows, Linux, Mac OS X, Solaris and FreeBSD and it can be deployed in several ways, as a standalone server application, as a web application inside a servlet container (such as [http://tomcat.apache.org/ Apache Tomcat] or [http://www.mortbay.org/ Jetty]) or as a Java library embedded in a larger application.&lt;br /&gt;
&lt;br /&gt;
== Source code and licensing ==&lt;br /&gt;
eXist is open-source, released under the [http://www.gnu.org/licenses/lgpl-2.1.html GNU LGPL 2.1] license.&lt;br /&gt;
&lt;br /&gt;
== Support for TEI ==&lt;br /&gt;
Joe Wicentowski has a step-by-step introduction with full example files on how to publish TEI texts with eXist, presented at the Digital.Humanities@Oxford Summer School in 2011; see the [http://digital.humanities.ox.ac.uk/dhoxss/2011/sessions.html#xmldb session description] with links to slides and sample material.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
From the Package Manager, accessed through the eXist Dashboard, one can install the application Shakespeare's Works in TEI from the eXist Public Repository. All Shakespeare's plays from the [http://wordhoard.northwestern.edu/ WordHoard Shakespeare] can be queried with search results displayed in the hit list in KWIC format. See also the [https://github.com/wolfgangmm/ShakespeareDemo GitHub repo] for this application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A TEI module called Matumi is distributed as an eXist application. Matumi is still under development. It requires eXist version 1.5 and is installed from within eXist's Package Reposistory. After installation, it can be accessed from [http://localhost:8080/exist/apps/encyclopedia/ http://localhost:8080/exist/apps/encyclopedia/] on a default installation.&lt;br /&gt;
&lt;br /&gt;
Matumi is not a full-blown TEI module yet, but it has some notable features, such as the ability to browse by filtering texts and core parts of the markup. It contains faceted search feeding off the markup, making possible &amp;quot;translingual&amp;quot; searches that utilise references added to name forms.&lt;br /&gt;
&lt;br /&gt;
The app uses XQuery only.&lt;br /&gt;
&lt;br /&gt;
Installation will store a number of basic TEI documents in the data directory. These files are excepts from encyclopaedias, whence the present orientation of the app.&lt;br /&gt;
&lt;br /&gt;
If you access through browsing, you can arrange the data by four criteria - books, entry title, subjects and names.&lt;br /&gt;
&lt;br /&gt;
If you access through search, in order to retrieve some sample results, select lemma and search for &amp;quot;nation&amp;quot;, select term and search for &amp;quot;ars&amp;quot;, select name and search for &amp;quot;marx&amp;quot;, select text and search for &amp;quot;gouvernement&amp;quot;, or select key and search for &amp;quot;http://dbpedia.org/page/French_Revolution&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is a comprehensive discussion of optimising eXist/XQuery for TEI on  [http://exist.2174344.n4.nabble.com/eXist-optimisation-and-large-TEI-collections-td3487406.html the eXist-open mailing list]&lt;br /&gt;
&lt;br /&gt;
== Language(s) ==&lt;br /&gt;
As detailed above, eXist is itself written in the Java language. However, it enables complete applications to be created without writing any programming code, by just using only XQuery, XSLT, (X)HTML, CSS, XForms, XProc and Javascript. Using the available network interfaces is possible to query eXist not only with Java, and there are already available several modules for other languages ([http://www.bmuskalla.de/DB_eXist/ PHP], [http://query-exist.sourceforge.net/ Perl]) and frameworks ([http://sourceforge.net/projects/springxmldb/ Spring], [http://www.throwingbeans.org/tech/xml_databases_with_exist_and_coldfusion.html ColdFusion], [http://www.zope.org/Members/spilloz/existda Zope]).&lt;br /&gt;
The [http://exist-db.org/documentation.html documentation] is available only in english.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
[http://exist-db.org/exist/apps/doc/ eXist Documentation]&lt;br /&gt;
&lt;br /&gt;
== Tech support ==&lt;br /&gt;
Technical support for the Open Source product is provided mainly through the [http://sourceforge.net/mail/?group_id=17691 eXist-db mailing list]. Being open-source all kind of support and help is made voluntarily and with no obligations. Anyway the support it is very efficient, and almost all the requests are answered in a complete and qualified way.&lt;br /&gt;
&lt;br /&gt;
Commercial support, consultancy and training is also available from the creators of eXist through [http://www.existsolutions.com eXist Solutions]. eXist Solutions directly support and further the development of eXist.&lt;br /&gt;
&lt;br /&gt;
== User community ==&lt;br /&gt;
The user community is very active and, as for the technical support, the main way of communication is the [http://sourceforge.net/mail/?group_id=17691 eXist-db mailing list]. Many participants of this list are also part of the TEI Community. There is also a [http://wiki.exist-db.org wiki] and an IRC channel: #existdb at irc.freenode.net.&lt;br /&gt;
&lt;br /&gt;
In August 2011, a dedicated email list was created on using eXist with TEI resources. For information or to subscribe, go to the [https://lists.sourceforge.net/lists/listinfo/exist-teixml eXist-TEIXML] information page.&lt;br /&gt;
&lt;br /&gt;
== Sample implementations ==&lt;br /&gt;
* [http://www.weber-gesamtausgabe.de/ Carl-Maria-von-Weber-Gesamtausgabe (WeGA)] The correspondence, diaries, writings and works of Carl Maria von Weber &lt;br /&gt;
* [http://syriaca.org/ Syrica.org] publishes online reference works concerning the culture, history, and literature of Syriac communities from antiquity to the present. Public repo at [https://github.com/srophe/srophe-eXist-app GitHub].&lt;br /&gt;
&amp;lt;!--* [http://193.204.255.27/operaliber/index.php?page=/operaLiber/home OperaLiber]--&amp;gt;&lt;br /&gt;
* [http://www.anglo-norman.net/ The Anglo-Norman Dictionary]&lt;br /&gt;
* [http://mith2.umd.edu/eada/ Early Americas Digital Archive]&lt;br /&gt;
* [http://buddhistinformatics.ddbc.edu.tw/BZA/ A Digital Comparative Edition and Translation of the Shorter Chinese Saṃyukta Āgama]&lt;br /&gt;
* [http://history.state.gov/ Foreign Relations of the United States and other publications of the Office of the Historian, U.S. Department of State]&lt;br /&gt;
* [https://github.com/stuartyeates/He-Kupu-Tawhito Multilingual Concordances with TEI]&lt;br /&gt;
* [http://vnsletters.org/VNS/ VNS letters online]: digital edition of letters concerning the Belgian literary journal 'Van nu en Straks'&lt;br /&gt;
* [http://ctb.kantl.be/corpora/CPWNL/ Corpus Pieter Willems]: searchable facsimile edition of the first Dutch dialect survey ever&lt;br /&gt;
* [http://tbe.kantl.be/TBE/xquery/TBEvalidator.xq TEI validator]: interactive validating app for TEI documents using eXist's XML validation functions&lt;br /&gt;
* [http://sermones.net/thesaurus/ Sermones.net : éditions électroniques de sermons latins médiévaux]: l’édition électronique de corpus de sermons, dont le premier est la série de sermons de Carême de Jacques de Voragine.&lt;br /&gt;
&amp;lt;!--* [http://ciham.ish-lyon.cnrs.fr/paleographie/index.php?l=en Interactive Album of Mediaeval Palaeography]: website for training in practical palaeographical skills.--&amp;gt;&lt;br /&gt;
* [http://scancan.net/ Scandinavian-Canadian Studies / Études scandinaves au Canada]&lt;br /&gt;
* [http://voice.univie.ac.at Vienna-Oxford International Corpus of English]: a corpus of transcripts of spoken ELF interactions in TEI format.&lt;br /&gt;
* [http://www.manuscripta.se// Greek Manuscripts in Sweden]&lt;br /&gt;
&amp;lt;!--http://macgreevy.org?--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Current version number and date of release ==&lt;br /&gt;
Current stable release: eXist 3.0 (2017-02-10)&lt;br /&gt;
&lt;br /&gt;
== How to download ==&lt;br /&gt;
Download an installer for the current stable version (version 2.1, July 2013) from the [http://www.exist-db.org/exist/apps/homepage/index.html#subscriptions eXist Home Page]; clone or download the current trunk version from the [https://github.com/eXist-db/exist eXist GitHub Page].&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Berkeley DB XML]]&lt;br /&gt;
* [[Base-X]]&lt;br /&gt;
* [[TEI Web Publishing]]&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=New_ODD_processing&amp;diff=16888</id>
		<title>New ODD processing</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=New_ODD_processing&amp;diff=16888"/>
		<updated>2022-04-06T15:24:08Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: /* ATOP: Another TEI ODD Processor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is where Syd Bauman, Martin Holmes, and others are keeping notes on their plans for building a new PureODD processor.&lt;br /&gt;
&lt;br /&gt;
==ATOP: Another TEI ODD Processor==&lt;br /&gt;
&lt;br /&gt;
NOTE: This content has been migrated to the ATOP repo wiki:&lt;br /&gt;
&lt;br /&gt;
https://github.com/TEIC/atop/wiki&lt;br /&gt;
&lt;br /&gt;
=== goals ===&lt;br /&gt;
&lt;br /&gt;
We are planning a re-write of current Stylesheets aimed solely at converting ODD to the Guidelines, schemas, and customization ODDs into schemas and customized output.&lt;br /&gt;
Thoughts, in no particular order:&lt;br /&gt;
* Written in XSLT 3, only&lt;br /&gt;
* Eventually we hope it will reside in TEI/TEIC/ repo, but development will be in a separate repo under TEIC; some Council members believe the ODD processing should be kept distinct from the P5 source.&lt;br /&gt;
* Driven by &amp;lt;tt&amp;gt;ant&amp;lt;/tt&amp;gt;, with the hope, but not requirement, that it will run in Windows (requirement that it runs in oXygen)&lt;br /&gt;
* Probably best to build an oXygen plug-in as we go (or at least as soon as there is a transform that works)&lt;br /&gt;
* No support for DTDs&lt;br /&gt;
* Should we attempt to flag up scenarios which will generate ambiguity that will not convert to XML Schema? Perhaps if we have ODD-to-XSD, we should follow it with Xerces validation of the resulting schema to catch ambiguity issues.&lt;br /&gt;
* Support for Schematron (ISO or the new community Schematron, but not both) via putting rules into RELAX NG, then extracting to separate .sch file from there&lt;br /&gt;
* Plan to use HTML5, rather than a bastardized TEI_Lite, as intermediate stage&lt;br /&gt;
* Well documented (using xd: elements and comments — at least partially enforced by Schematron), using consistent naming conventions, typed variables, etc.&lt;br /&gt;
* naming conventions: camelCase for variables, hyphenation-for-functions().&lt;br /&gt;
* For vars/params: use a prefix of v for variables and p for params, so that it's easy to see whether a symbol is supplied or constructed in context.&lt;br /&gt;
* Require @as everywhere.&lt;br /&gt;
* For vars/params: consider devising a sort of Hungarian notation but based on suffixes, that would show the type of a symbol. This would need to distinguish all datatypes and include a sequence component, without being too unwieldy.&lt;br /&gt;
* Probably a good idea to have a single “coding conventions” document that discusses these issues, and perhaps some Schematron to enforce them.&lt;br /&gt;
* SB thinks we should lean away from iterations and “loops”, preferring apply-templates; MH less strong on this point&lt;br /&gt;
* MH prefers functions over named templates; SB less strong on this point&lt;br /&gt;
* We agree we would prefer to rely on XSLT 3 maps as opposed to XSLT 1 keys, re-visiting this decision if maps turn out to be problematic (i.e., too slow)&lt;br /&gt;
* In order to make running XSpec easier, functions and named templates should be in separate library files.&lt;br /&gt;
* We should consider using XSLT modules rather than old-style includes.&lt;br /&gt;
* We want to support chained ODDs right from the start&lt;br /&gt;
* Generate a test suite (including of chaining) as we go&lt;br /&gt;
* We are still debating whether to support PureODD only, or RELAX NG inside &amp;amp;lt;content&amp;gt; as well&lt;br /&gt;
* We are considering an approach where processing of a customization ODD (whether initial or chained) is to generate an XSLT program from it that gets run against P5(subset) or its precursor ODD. This would make debugging easier, but presumably would be a bit slower than an in-memory multistage transformation.&lt;br /&gt;
* Filenames should use only lower-case ascii and underscores, only use hyphens in hyphenated words, only use the dot for an extension, and only have one extension. XSLT files should have the extension .xslt, non-ODD TEI files (such as test files) should be .tei, ODD files (i.e. TEI files containing a &amp;lt;schemaSpec&amp;gt;) should be .odd, and non-TEI XML should be .xml unless there is another more suitable extension for their type.&lt;br /&gt;
&lt;br /&gt;
=== plans ===&lt;br /&gt;
Not ''necessarily'' in this order, but it is a reasonable one.&lt;br /&gt;
&lt;br /&gt;
# Create Schematron to police our XSLT.&lt;br /&gt;
# Create an Oxygen project to associate the Schematron with XSLT files.&lt;br /&gt;
# Create a testing infrastructure (location(s) for XSpec files; Ant driver for XSpec; location(s) for other tests if we have any).&lt;br /&gt;
# Nail down the rules for PureODD tagdocs elements so that we know what we need to process.&lt;br /&gt;
# Start with the processing of end-of-chain ODD content (what was processed_odd) into RELAXNG.&lt;br /&gt;
# Move on to ODD chaining.&lt;br /&gt;
# Nail down the subset of TEI that we plan to process (by tangling into RELAX NG and weaving into XHTML 5) by creating a new ODD, or by modifying p5odds.odd.&lt;br /&gt;
# Work on the documentation rendering component.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== thoughts ===&lt;br /&gt;
&lt;br /&gt;
# Use named templates where elements are being constructed; use functions where more primitive datatypes are the output.&lt;br /&gt;
&lt;br /&gt;
=== unresolved questions ===&lt;br /&gt;
&lt;br /&gt;
The issue of how to handle multiple languages when ODD chaining is problematic:&lt;br /&gt;
&lt;br /&gt;
1. Imagine:&lt;br /&gt;
&lt;br /&gt;
p5subset.xml has all the languages (as it does);&lt;br /&gt;
customization1.odd specifies @docLang=&amp;quot;en&amp;quot;&lt;br /&gt;
customization2.odd, which points to customization1.odd, specifies @docLang=&amp;quot;it&amp;quot;&lt;br /&gt;
What language should the output schema use?&lt;br /&gt;
&lt;br /&gt;
2. Imagine:&lt;br /&gt;
&lt;br /&gt;
customization1.odd modifies an element, replacing the English gloss with something different.&lt;br /&gt;
customization2.off specifies @docLang=&amp;quot;es&amp;quot;&lt;br /&gt;
Where should the gloss be taken from in the output of the chain?&lt;br /&gt;
&lt;br /&gt;
3. Should it be part of the system that you can specify a series of languages in order of preference, from which text will be taken if something is not available in the main docLang?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# POSSIBLY NOT RELEVANT GIVEN OUR MANDATE: Re-write generation of p5subset, likely relying heavily on existing code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:New ODD Processing]]&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=New_ODD_processing&amp;diff=16887</id>
		<title>New ODD processing</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=New_ODD_processing&amp;diff=16887"/>
		<updated>2022-04-04T16:24:40Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: /* plans */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is where Syd Bauman, Martin Holmes, and others are keeping notes on their plans for building a new PureODD processor.&lt;br /&gt;
&lt;br /&gt;
==ATOP: Another TEI ODD Processor==&lt;br /&gt;
&lt;br /&gt;
=== goals ===&lt;br /&gt;
&lt;br /&gt;
We are planning a re-write of current Stylesheets aimed solely at converting ODD to the Guidelines, schemas, and customization ODDs into schemas and customized output.&lt;br /&gt;
Thoughts, in no particular order:&lt;br /&gt;
* Written in XSLT 3, only&lt;br /&gt;
* Eventually we hope it will reside in TEI/TEIC/ repo, but development will be in a separate repo under TEIC; some Council members believe the ODD processing should be kept distinct from the P5 source.&lt;br /&gt;
* Driven by &amp;lt;tt&amp;gt;ant&amp;lt;/tt&amp;gt;, with the hope, but not requirement, that it will run in Windows (requirement that it runs in oXygen)&lt;br /&gt;
* Probably best to build an oXygen plug-in as we go (or at least as soon as there is a transform that works)&lt;br /&gt;
* No support for DTDs&lt;br /&gt;
* Should we attempt to flag up scenarios which will generate ambiguity that will not convert to XML Schema? Perhaps if we have ODD-to-XSD, we should follow it with Xerces validation of the resulting schema to catch ambiguity issues.&lt;br /&gt;
* Support for Schematron (ISO or the new community Schematron, but not both) via putting rules into RELAX NG, then extracting to separate .sch file from there&lt;br /&gt;
* Plan to use HTML5, rather than a bastardized TEI_Lite, as intermediate stage&lt;br /&gt;
* Well documented (using xd: elements and comments — at least partially enforced by Schematron), using consistent naming conventions, typed variables, etc.&lt;br /&gt;
* naming conventions: camelCase for variables, hyphenation-for-functions().&lt;br /&gt;
* For vars/params: use a prefix of v for variables and p for params, so that it's easy to see whether a symbol is supplied or constructed in context.&lt;br /&gt;
* Require @as everywhere.&lt;br /&gt;
* For vars/params: consider devising a sort of Hungarian notation but based on suffixes, that would show the type of a symbol. This would need to distinguish all datatypes and include a sequence component, without being too unwieldy.&lt;br /&gt;
* Probably a good idea to have a single “coding conventions” document that discusses these issues, and perhaps some Schematron to enforce them.&lt;br /&gt;
* SB thinks we should lean away from iterations and “loops”, preferring apply-templates; MH less strong on this point&lt;br /&gt;
* MH prefers functions over named templates; SB less strong on this point&lt;br /&gt;
* We agree we would prefer to rely on XSLT 3 maps as opposed to XSLT 1 keys, re-visiting this decision if maps turn out to be problematic (i.e., too slow)&lt;br /&gt;
* In order to make running XSpec easier, functions and named templates should be in separate library files.&lt;br /&gt;
* We should consider using XSLT modules rather than old-style includes.&lt;br /&gt;
* We want to support chained ODDs right from the start&lt;br /&gt;
* Generate a test suite (including of chaining) as we go&lt;br /&gt;
* We are still debating whether to support PureODD only, or RELAX NG inside &amp;amp;lt;content&amp;gt; as well&lt;br /&gt;
* We are considering an approach where processing of a customization ODD (whether initial or chained) is to generate an XSLT program from it that gets run against P5(subset) or its precursor ODD. This would make debugging easier, but presumably would be a bit slower than an in-memory multistage transformation.&lt;br /&gt;
* Filenames should use only lower-case ascii and underscores, only use hyphens in hyphenated words, only use the dot for an extension, and only have one extension. XSLT files should have the extension .xslt, non-ODD TEI files (such as test files) should be .tei, ODD files (i.e. TEI files containing a &amp;lt;schemaSpec&amp;gt;) should be .odd, and non-TEI XML should be .xml unless there is another more suitable extension for their type.&lt;br /&gt;
&lt;br /&gt;
=== plans ===&lt;br /&gt;
Not ''necessarily'' in this order, but it is a reasonable one.&lt;br /&gt;
&lt;br /&gt;
# Create Schematron to police our XSLT.&lt;br /&gt;
# Create an Oxygen project to associate the Schematron with XSLT files.&lt;br /&gt;
# Create a testing infrastructure (location(s) for XSpec files; Ant driver for XSpec; location(s) for other tests if we have any).&lt;br /&gt;
# Nail down the rules for PureODD tagdocs elements so that we know what we need to process.&lt;br /&gt;
# Start with the processing of end-of-chain ODD content (what was processed_odd) into RELAXNG.&lt;br /&gt;
# Move on to ODD chaining.&lt;br /&gt;
# Nail down the subset of TEI that we plan to process (by tangling into RELAX NG and weaving into XHTML 5) by creating a new ODD, or by modifying p5odds.odd.&lt;br /&gt;
# Work on the documentation rendering component.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== thoughts ===&lt;br /&gt;
&lt;br /&gt;
# Use named templates where elements are being constructed; use functions where more primitive datatypes are the output.&lt;br /&gt;
&lt;br /&gt;
=== unresolved questions ===&lt;br /&gt;
&lt;br /&gt;
The issue of how to handle multiple languages when ODD chaining is problematic:&lt;br /&gt;
&lt;br /&gt;
1. Imagine:&lt;br /&gt;
&lt;br /&gt;
p5subset.xml has all the languages (as it does);&lt;br /&gt;
customization1.odd specifies @docLang=&amp;quot;en&amp;quot;&lt;br /&gt;
customization2.odd, which points to customization1.odd, specifies @docLang=&amp;quot;it&amp;quot;&lt;br /&gt;
What language should the output schema use?&lt;br /&gt;
&lt;br /&gt;
2. Imagine:&lt;br /&gt;
&lt;br /&gt;
customization1.odd modifies an element, replacing the English gloss with something different.&lt;br /&gt;
customization2.off specifies @docLang=&amp;quot;es&amp;quot;&lt;br /&gt;
Where should the gloss be taken from in the output of the chain?&lt;br /&gt;
&lt;br /&gt;
3. Should it be part of the system that you can specify a series of languages in order of preference, from which text will be taken if something is not available in the main docLang?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# POSSIBLY NOT RELEVANT GIVEN OUR MANDATE: Re-write generation of p5subset, likely relying heavily on existing code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:New ODD Processing]]&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=New_ODD_processing&amp;diff=16886</id>
		<title>New ODD processing</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=New_ODD_processing&amp;diff=16886"/>
		<updated>2022-03-28T15:26:26Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: /* plans */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is where Syd Bauman, Martin Holmes, and others are keeping notes on their plans for building a new PureODD processor.&lt;br /&gt;
&lt;br /&gt;
==ATOP: Another TEI ODD Processor==&lt;br /&gt;
&lt;br /&gt;
=== goals ===&lt;br /&gt;
&lt;br /&gt;
We are planning a re-write of current Stylesheets aimed solely at converting ODD to the Guidelines, schemas, and customization ODDs into schemas and customized output.&lt;br /&gt;
Thoughts, in no particular order:&lt;br /&gt;
* Written in XSLT 3, only&lt;br /&gt;
* Eventually we hope it will reside in TEI/TEIC/ repo, but development will be in a separate repo under TEIC; some Council members believe the ODD processing should be kept distinct from the P5 source.&lt;br /&gt;
* Driven by &amp;lt;tt&amp;gt;ant&amp;lt;/tt&amp;gt;, with the hope, but not requirement, that it will run in Windows (requirement that it runs in oXygen)&lt;br /&gt;
* Probably best to build an oXygen plug-in as we go (or at least as soon as there is a transform that works)&lt;br /&gt;
* No support for DTDs&lt;br /&gt;
* Should we attempt to flag up scenarios which will generate ambiguity that will not convert to XML Schema? Perhaps if we have ODD-to-XSD, we should follow it with Xerces validation of the resulting schema to catch ambiguity issues.&lt;br /&gt;
* Support for Schematron (ISO or the new community Schematron, but not both) via putting rules into RELAX NG, then extracting to separate .sch file from there&lt;br /&gt;
* Plan to use HTML5, rather than a bastardized TEI_Lite, as intermediate stage&lt;br /&gt;
* Well documented (using xd: elements and comments — at least partially enforced by Schematron), using consistent naming conventions, typed variables, etc.&lt;br /&gt;
* naming conventions: camelCase for variables, hyphenation-for-functions().&lt;br /&gt;
* For vars/params: use a prefix of v for variables and p for params, so that it's easy to see whether a symbol is supplied or constructed in context.&lt;br /&gt;
* Require @as everywhere.&lt;br /&gt;
* For vars/params: consider devising a sort of Hungarian notation but based on suffixes, that would show the type of a symbol. This would need to distinguish all datatypes and include a sequence component, without being too unwieldy.&lt;br /&gt;
* Probably a good idea to have a single “coding conventions” document that discusses these issues, and perhaps some Schematron to enforce them.&lt;br /&gt;
* SB thinks we should lean away from iterations and “loops”, preferring apply-templates; MH less strong on this point&lt;br /&gt;
* MH prefers functions over named templates; SB less strong on this point&lt;br /&gt;
* We agree we would prefer to rely on XSLT 3 maps as opposed to XSLT 1 keys, re-visiting this decision if maps turn out to be problematic (i.e., too slow)&lt;br /&gt;
* In order to make running XSpec easier, functions and named templates should be in separate library files.&lt;br /&gt;
* We should consider using XSLT modules rather than old-style includes.&lt;br /&gt;
* We want to support chained ODDs right from the start&lt;br /&gt;
* Generate a test suite (including of chaining) as we go&lt;br /&gt;
* We are still debating whether to support PureODD only, or RELAX NG inside &amp;amp;lt;content&amp;gt; as well&lt;br /&gt;
* We are considering an approach where processing of a customization ODD (whether initial or chained) is to generate an XSLT program from it that gets run against P5(subset) or its precursor ODD. This would make debugging easier, but presumably would be a bit slower than an in-memory multistage transformation.&lt;br /&gt;
* Filenames should use only lower-case ascii and underscores, only use hyphens in hyphenated words, only use the dot for an extension, and only have one extension. XSLT files should have the extension .xslt, non-ODD TEI files (such as test files) should be .tei, ODD files (i.e. TEI files containing a &amp;lt;schemaSpec&amp;gt;) should be .odd, and non-TEI XML should be .xml unless there is another more suitable extension for their type.&lt;br /&gt;
&lt;br /&gt;
=== plans ===&lt;br /&gt;
Not ''necessarily'' in this order, but it is a reasonable one.&lt;br /&gt;
&lt;br /&gt;
# Create Schematron to police our XSLT.&lt;br /&gt;
# Create an Oxygen project to associate the Schematron with XSLT files.&lt;br /&gt;
# Create a testing infrastructure (location(s) for XSpec files; Ant driver for XSpec; location(s) for other tests if we have any).&lt;br /&gt;
# Nail down the rules for PureODD tagdocs elements so that we know what we need to process.&lt;br /&gt;
# Start with the processing of end-of-chain ODD content (what was processed_odd) into RELAXNG.&lt;br /&gt;
# Move on to ODD chaining.&lt;br /&gt;
# Nail down the subset of TEI that we plan to process (by tangling into RELAX NG and weaving into XHTML 5) by creating a new ODD, or by modifying p5odds.odd.&lt;br /&gt;
# Work on the documentation rendering component.&lt;br /&gt;
&lt;br /&gt;
=== unresolved questions ===&lt;br /&gt;
&lt;br /&gt;
The issue of how to handle multiple languages when ODD chaining is problematic:&lt;br /&gt;
&lt;br /&gt;
1. Imagine:&lt;br /&gt;
&lt;br /&gt;
p5subset.xml has all the languages (as it does);&lt;br /&gt;
customization1.odd specifies @docLang=&amp;quot;en&amp;quot;&lt;br /&gt;
customization2.odd, which points to customization1.odd, specifies @docLang=&amp;quot;it&amp;quot;&lt;br /&gt;
What language should the output schema use?&lt;br /&gt;
&lt;br /&gt;
2. Imagine:&lt;br /&gt;
&lt;br /&gt;
customization1.odd modifies an element, replacing the English gloss with something different.&lt;br /&gt;
customization2.off specifies @docLang=&amp;quot;es&amp;quot;&lt;br /&gt;
Where should the gloss be taken from in the output of the chain?&lt;br /&gt;
&lt;br /&gt;
3. Should it be part of the system that you can specify a series of languages in order of preference, from which text will be taken if something is not available in the main docLang?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# POSSIBLY NOT RELEVANT GIVEN OUR MANDATE: Re-write generation of p5subset, likely relying heavily on existing code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:New ODD Processing]]&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=New_ODD_processing&amp;diff=16885</id>
		<title>New ODD processing</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=New_ODD_processing&amp;diff=16885"/>
		<updated>2022-03-21T16:58:18Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: /* goals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is where Syd Bauman, Martin Holmes, and others are keeping notes on their plans for building a new PureODD processor.&lt;br /&gt;
&lt;br /&gt;
==ATOP: Another TEI ODD Processor==&lt;br /&gt;
&lt;br /&gt;
=== goals ===&lt;br /&gt;
&lt;br /&gt;
We are planning a re-write of current Stylesheets aimed solely at converting ODD to the Guidelines, schemas, and customization ODDs into schemas and customized output.&lt;br /&gt;
Thoughts, in no particular order:&lt;br /&gt;
* Written in XSLT 3, only&lt;br /&gt;
* Eventually we hope it will reside in TEI/TEIC/ repo, but development will be in a separate repo under TEIC; some Council members believe the ODD processing should be kept distinct from the P5 source.&lt;br /&gt;
* Driven by &amp;lt;tt&amp;gt;ant&amp;lt;/tt&amp;gt;, with the hope, but not requirement, that it will run in Windows (requirement that it runs in oXygen)&lt;br /&gt;
* Probably best to build an oXygen plug-in as we go (or at least as soon as there is a transform that works)&lt;br /&gt;
* No support for DTDs&lt;br /&gt;
* Should we attempt to flag up scenarios which will generate ambiguity that will not convert to XML Schema? Perhaps if we have ODD-to-XSD, we should follow it with Xerces validation of the resulting schema to catch ambiguity issues.&lt;br /&gt;
* Support for Schematron (ISO or the new community Schematron, but not both) via putting rules into RELAX NG, then extracting to separate .sch file from there&lt;br /&gt;
* Plan to use HTML5, rather than a bastardized TEI_Lite, as intermediate stage&lt;br /&gt;
* Well documented (using xd: elements and comments — at least partially enforced by Schematron), using consistent naming conventions, typed variables, etc.&lt;br /&gt;
* naming conventions: camelCase for variables, hyphenation-for-functions().&lt;br /&gt;
* For vars/params: use a prefix of v for variables and p for params, so that it's easy to see whether a symbol is supplied or constructed in context.&lt;br /&gt;
* Require @as everywhere.&lt;br /&gt;
* For vars/params: consider devising a sort of Hungarian notation but based on suffixes, that would show the type of a symbol. This would need to distinguish all datatypes and include a sequence component, without being too unwieldy.&lt;br /&gt;
* Probably a good idea to have a single “coding conventions” document that discusses these issues, and perhaps some Schematron to enforce them.&lt;br /&gt;
* SB thinks we should lean away from iterations and “loops”, preferring apply-templates; MH less strong on this point&lt;br /&gt;
* MH prefers functions over named templates; SB less strong on this point&lt;br /&gt;
* We agree we would prefer to rely on XSLT 3 maps as opposed to XSLT 1 keys, re-visiting this decision if maps turn out to be problematic (i.e., too slow)&lt;br /&gt;
* In order to make running XSpec easier, functions and named templates should be in separate library files.&lt;br /&gt;
* We should consider using XSLT modules rather than old-style includes.&lt;br /&gt;
* We want to support chained ODDs right from the start&lt;br /&gt;
* Generate a test suite (including of chaining) as we go&lt;br /&gt;
* We are still debating whether to support PureODD only, or RELAX NG inside &amp;amp;lt;content&amp;gt; as well&lt;br /&gt;
* We are considering an approach where processing of a customization ODD (whether initial or chained) is to generate an XSLT program from it that gets run against P5(subset) or its precursor ODD. This would make debugging easier, but presumably would be a bit slower than an in-memory multistage transformation.&lt;br /&gt;
* Filenames should use only lower-case ascii and underscores, only use hyphens in hyphenated words, only use the dot for an extension, and only have one extension. XSLT files should have the extension .xslt, non-ODD TEI files (such as test files) should be .tei, ODD files (i.e. TEI files containing a &amp;lt;schemaSpec&amp;gt;) should be .odd, and non-TEI XML should be .xml unless there is another more suitable extension for their type.&lt;br /&gt;
&lt;br /&gt;
=== plans ===&lt;br /&gt;
Not ''necessarily'' in this order, but it is a reasonable one.&lt;br /&gt;
&lt;br /&gt;
# Create Schematron to police our XSLT.&lt;br /&gt;
# Create an Oxygen project to associate the Schematron with XSLT files.&lt;br /&gt;
# Create a testing infrastructure (location(s) for XSpec files; Ant driver for XSpec; location(s) for other tests if we have any).&lt;br /&gt;
# Nail down the rules for PureODD tagdocs elements so that we know what we need to process.&lt;br /&gt;
# Start with the processing of end-of-chain ODD content (what was processed_odd) into RELAXNG.&lt;br /&gt;
# Move on to ODD chaining.&lt;br /&gt;
# Nail down the subset of TEI that we plan to process (by tangling into RELAX NG and weaving into XHTML 5) by creating a new ODD, or by modifying p5odds.odd.&lt;br /&gt;
# Work on the documentation rendering component.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# POSSIBLY NOT RELEVANT GIVEN OUR MANDATE: Re-write generation of p5subset, likely relying heavily on existing code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:New ODD Processing]]&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=New_ODD_processing&amp;diff=16871</id>
		<title>New ODD processing</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=New_ODD_processing&amp;diff=16871"/>
		<updated>2022-02-28T22:12:33Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: /* plans */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is where Syd Bauman, Martin Holmes, and others are keeping notes on their plans for building a new PureODD processor.&lt;br /&gt;
&lt;br /&gt;
==ATOP: Another TEI ODD Processor==&lt;br /&gt;
&lt;br /&gt;
=== goals ===&lt;br /&gt;
&lt;br /&gt;
We are planning a re-write of current Stylesheets aimed solely at converting ODD to the Guidelines, schemas, and customization ODDs into schemas and customized output.&lt;br /&gt;
Thoughts, in no particular order:&lt;br /&gt;
* Written in XSLT 3, only&lt;br /&gt;
* Eventually we hope it will reside in TEI/TEIC/ repo, but development will be in a separate repo under TEIC; some Council members believe the ODD processing should be kept distinct from the P5 source.&lt;br /&gt;
* Driven by &amp;lt;tt&amp;gt;ant&amp;lt;/tt&amp;gt;, with the hope, but not requirement, that it will run in Windows (requirement that it runs in oXygen)&lt;br /&gt;
* Probably best to build an oXygen plug-in as we go (or at least as soon as there is a transform that works)&lt;br /&gt;
* No support for DTDs&lt;br /&gt;
* Support for Schematron (ISO or the new community Schematron, but not both) via putting rules into RELAX NG, then extracting to separate .sch file from there&lt;br /&gt;
* Plan to use HTML5, rather than a bastardized TEI_Lite, as intermediate stage&lt;br /&gt;
* Well documented (using xd: elements and comments — at least partially enforced by Schematron), using consistent naming conventions, typed variables, etc.&lt;br /&gt;
* naming conventions: camelCase for variables, hyphenation-for-functions().&lt;br /&gt;
* For vars/params: use a prefix of v for variables and p for params, so that it's easy to see whether a symbol is supplied or constructed in context.&lt;br /&gt;
* Require @as everywhere.&lt;br /&gt;
* For vars/params: consider devising a sort of Hungarian notation but based on suffixes, that would show the type of a symbol. This would need to distinguish all datatypes and include a sequence component, without being too unwieldy.&lt;br /&gt;
* Probably a good idea to have a single “coding conventions” document that discusses these issues, and perhaps some Schematron to enforce them.&lt;br /&gt;
* SB thinks we should lean away from iterations and “loops”, preferring apply-templates; MH less strong on this point&lt;br /&gt;
* MH prefers functions over named templates; SB less strong on this point&lt;br /&gt;
* We agree we would prefer to rely on XSLT 3 maps as opposed to XSLT 1 keys, re-visiting this decision if maps turn out to be problematic (i.e., too slow)&lt;br /&gt;
* In order to make running XSpec easier, functions and named templates should be in separate library files.&lt;br /&gt;
* We should consider using XSLT modules rather than old-style includes.&lt;br /&gt;
* We want to support chained ODDs right from the start&lt;br /&gt;
* Generate a test suite (including of chaining) as we go&lt;br /&gt;
* We are still debating whether to support PureODD only, or RELAX NG inside &amp;amp;lt;content&amp;gt; as well&lt;br /&gt;
* We are considering an approach where processing of a customization ODD (whether initial or chained) is to generate an XSLT program from it that gets run against P5(subset) or its precursor ODD. This would make debugging easier, but presumably would be a bit slower than an in-memory multistage transformation.&lt;br /&gt;
* Filenames should use only lower-case ascii and underscores, only use hyphens in hyphenated words, only use the dot for an extension, and only have one extension. XSLT files should have the extension .xslt, non-ODD TEI files (such as test files) should be .tei, ODD files (i.e. TEI files containing a &amp;lt;schemaSpec&amp;gt;) should be .odd, and non-TEI XML should be .xml unless there is another more suitable extension for their type.&lt;br /&gt;
&lt;br /&gt;
=== plans ===&lt;br /&gt;
Not ''necessarily'' in this order, but it is a reasonable one.&lt;br /&gt;
&lt;br /&gt;
# Create Schematron to police our XSLT.&lt;br /&gt;
# Create an Oxygen project to associate the Schematron with XSLT files.&lt;br /&gt;
# Create a testing infrastructure (location(s) for XSpec files; Ant driver for XSpec; location(s) for other tests if we have any).&lt;br /&gt;
# Nail down the rules for PureODD tagdocs elements so that we know what we need to process.&lt;br /&gt;
# Start with the processing of end-of-chain ODD content (what was processed_odd) into RELAXNG.&lt;br /&gt;
# Move on to ODD chaining.&lt;br /&gt;
# Nail down the subset of TEI that we plan to process (by tangling into RELAX NG and weaving into XHTML 5) by creating a new ODD, or by modifying p5odds.odd.&lt;br /&gt;
# Work on the documentation rendering component.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# POSSIBLY NOT RELEVANT GIVEN OUR MANDATE: Re-write generation of p5subset, likely relying heavily on existing code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:New ODD Processing]]&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=New_ODD_processing&amp;diff=16870</id>
		<title>New ODD processing</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=New_ODD_processing&amp;diff=16870"/>
		<updated>2022-02-28T22:07:11Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: /* goals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is where Syd Bauman, Martin Holmes, and others are keeping notes on their plans for building a new PureODD processor.&lt;br /&gt;
&lt;br /&gt;
==ATOP: Another TEI ODD Processor==&lt;br /&gt;
&lt;br /&gt;
=== goals ===&lt;br /&gt;
&lt;br /&gt;
We are planning a re-write of current Stylesheets aimed solely at converting ODD to the Guidelines, schemas, and customization ODDs into schemas and customized output.&lt;br /&gt;
Thoughts, in no particular order:&lt;br /&gt;
* Written in XSLT 3, only&lt;br /&gt;
* Eventually we hope it will reside in TEI/TEIC/ repo, but development will be in a separate repo under TEIC; some Council members believe the ODD processing should be kept distinct from the P5 source.&lt;br /&gt;
* Driven by &amp;lt;tt&amp;gt;ant&amp;lt;/tt&amp;gt;, with the hope, but not requirement, that it will run in Windows (requirement that it runs in oXygen)&lt;br /&gt;
* Probably best to build an oXygen plug-in as we go (or at least as soon as there is a transform that works)&lt;br /&gt;
* No support for DTDs&lt;br /&gt;
* Support for Schematron (ISO or the new community Schematron, but not both) via putting rules into RELAX NG, then extracting to separate .sch file from there&lt;br /&gt;
* Plan to use HTML5, rather than a bastardized TEI_Lite, as intermediate stage&lt;br /&gt;
* Well documented (using xd: elements and comments — at least partially enforced by Schematron), using consistent naming conventions, typed variables, etc.&lt;br /&gt;
* naming conventions: camelCase for variables, hyphenation-for-functions().&lt;br /&gt;
* For vars/params: use a prefix of v for variables and p for params, so that it's easy to see whether a symbol is supplied or constructed in context.&lt;br /&gt;
* Require @as everywhere.&lt;br /&gt;
* For vars/params: consider devising a sort of Hungarian notation but based on suffixes, that would show the type of a symbol. This would need to distinguish all datatypes and include a sequence component, without being too unwieldy.&lt;br /&gt;
* Probably a good idea to have a single “coding conventions” document that discusses these issues, and perhaps some Schematron to enforce them.&lt;br /&gt;
* SB thinks we should lean away from iterations and “loops”, preferring apply-templates; MH less strong on this point&lt;br /&gt;
* MH prefers functions over named templates; SB less strong on this point&lt;br /&gt;
* We agree we would prefer to rely on XSLT 3 maps as opposed to XSLT 1 keys, re-visiting this decision if maps turn out to be problematic (i.e., too slow)&lt;br /&gt;
* In order to make running XSpec easier, functions and named templates should be in separate library files.&lt;br /&gt;
* We should consider using XSLT modules rather than old-style includes.&lt;br /&gt;
* We want to support chained ODDs right from the start&lt;br /&gt;
* Generate a test suite (including of chaining) as we go&lt;br /&gt;
* We are still debating whether to support PureODD only, or RELAX NG inside &amp;amp;lt;content&amp;gt; as well&lt;br /&gt;
* We are considering an approach where processing of a customization ODD (whether initial or chained) is to generate an XSLT program from it that gets run against P5(subset) or its precursor ODD. This would make debugging easier, but presumably would be a bit slower than an in-memory multistage transformation.&lt;br /&gt;
* Filenames should use only lower-case ascii and underscores, only use hyphens in hyphenated words, only use the dot for an extension, and only have one extension. XSLT files should have the extension .xslt, non-ODD TEI files (such as test files) should be .tei, ODD files (i.e. TEI files containing a &amp;lt;schemaSpec&amp;gt;) should be .odd, and non-TEI XML should be .xml unless there is another more suitable extension for their type.&lt;br /&gt;
&lt;br /&gt;
=== plans ===&lt;br /&gt;
Not ''necessarily'' in this order, but it is a reasonable one.&lt;br /&gt;
# Nail down the rules for PureODD&lt;br /&gt;
# Nail down the subset of TEI that we plan to process (by tangling into RELAX NG and weaving into XHTML 5) by creating a new ODD, or by modifying p5odds.odd.&lt;br /&gt;
# Agree upon and document XSLT coding conventions. Keep this in a live document to be updated PRN.&lt;br /&gt;
# Re-write generation of p5subset, likely relying heavily on existing code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:New ODD Processing]]&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=New_ODD_processing&amp;diff=16868</id>
		<title>New ODD processing</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=New_ODD_processing&amp;diff=16868"/>
		<updated>2022-02-28T17:16:06Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: /* goals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is where Syd Bauman, Martin Holmes, and others are keeping notes on their plans for building a new PureODD processor.&lt;br /&gt;
&lt;br /&gt;
=== goals ===&lt;br /&gt;
&lt;br /&gt;
We are planning a re-write of current Stylesheets aimed solely at converting ODD to the Guidelines, schemas, and customization ODDs into schemas and customized output.&lt;br /&gt;
Thoughts, in no particular order:&lt;br /&gt;
* Written in XSLT 3, only&lt;br /&gt;
* Eventually we hope it will reside in TEI/TEIC/ repo, but development will be in a separate repo under TEIC; some Council members believe the ODD processing should be kept distinct from the P5 source.&lt;br /&gt;
* Driven by &amp;lt;tt&amp;gt;ant&amp;lt;/tt&amp;gt;, with the hope, but not requirement, that it will run in Windows (requirement that it runs in oXygen)&lt;br /&gt;
* Probably best to build an oXygen plug-in as we go (or at least as soon as there is a transform that works)&lt;br /&gt;
* No support for DTDs&lt;br /&gt;
* Support for Schematron (ISO or the new community Schematron, but not both) via putting rules into RELAX NG, then extracting to separate .sch file from there&lt;br /&gt;
* Plan to use HTML5, rather than a bastardized TEI_Lite, as intermediate stage&lt;br /&gt;
* Well documented (using xd: elements and comments — at least partially enforced by Schematron), using consistent naming conventions, typed variables, etc.&lt;br /&gt;
* naming conventions: camelCase for variables, hyphenation-for-functions().&lt;br /&gt;
* For vars/params: use a prefix of v for variables and p for params, so that it's easy to see whether a symbol is supplied or constructed in context.&lt;br /&gt;
* Require @as everywhere.&lt;br /&gt;
* For vars/params: consider devising a sort of Hungarian notation but based on suffixes, that would show the type of a symbol. This would need to distinguish all datatypes and include a sequence component, without being too unwieldy.&lt;br /&gt;
* Probably a good idea to have a single “coding conventions” document that discusses these issues, and perhaps some Schematron to enforce them.&lt;br /&gt;
* SB thinks we should lean away from iterations and “loops”, preferring apply-templates; MH less strong on this point&lt;br /&gt;
* MH prefers functions over named templates; SB less strong on this point&lt;br /&gt;
* We agree we would prefer to rely on XSLT 3 maps as opposed to XSLT 1 keys, re-visiting this decision if maps turn out to be problematic (i.e., too slow)&lt;br /&gt;
* In order to make running XSpec easier, functions and named templates should be in separate library files.&lt;br /&gt;
* We should consider using XSLT modules rather than old-style includes.&lt;br /&gt;
* We want to support chained ODDs right from the start&lt;br /&gt;
* Generate a test suite (including of chaining) as we go&lt;br /&gt;
* We are still debating whether to support PureODD only, or RELAX NG inside &amp;amp;lt;content&amp;gt; as well&lt;br /&gt;
* We are considering an approach where processing of a customization ODD (whether initial or chained) is to generate an XSLT program from it that gets run against P5(subset) or its precursor ODD. This would make debugging easier, but presumably would be a bit slower than an in-memory multistage transformation.&lt;br /&gt;
* Filenames should use only lower-case ascii and underscores, only use hyphens in hyphenated words, only use the dot for an extension, and only have one extension. XSLT files should have the extension .xslt, non-ODD TEI files (such as test files) should be .tei, ODD files (i.e. TEI files containing a &amp;lt;schemaSpec&amp;gt;) should be .odd, and non-TEI XML should be .xml unless there is another more suitable extension for their type.&lt;br /&gt;
&lt;br /&gt;
=== plans ===&lt;br /&gt;
Not ''necessarily'' in this order, but it is a reasonable one.&lt;br /&gt;
# Nail down the rules for PureODD&lt;br /&gt;
# Nail down the subset of TEI that we plan to process (by tangling into RELAX NG and weaving into XHTML 5) by creating a new ODD, or by modifying p5odds.odd.&lt;br /&gt;
# Agree upon and document XSLT coding conventions. Keep this in a live document to be updated PRN.&lt;br /&gt;
# Re-write generation of p5subset, likely relying heavily on existing code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:New ODD Processing]]&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=New_ODD_processing&amp;diff=16867</id>
		<title>New ODD processing</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=New_ODD_processing&amp;diff=16867"/>
		<updated>2022-02-28T17:15:46Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: /* goals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is where Syd Bauman, Martin Holmes, and others are keeping notes on their plans for building a new PureODD processor.&lt;br /&gt;
&lt;br /&gt;
=== goals ===&lt;br /&gt;
&lt;br /&gt;
We are planning a re-write of current Stylesheets aimed solely at converting ODD to the Guidelines, schemas, and customization ODDs into schemas and customized output.&lt;br /&gt;
Thoughts, in no particular order:&lt;br /&gt;
* Written in XSLT 3, only&lt;br /&gt;
* Eventually we hope it will reside in TEI/TEIC/ repo, but development will be in a separate repo under TEIC; some Council members believe the ODD processing should be kept distinct from the P5 source.&lt;br /&gt;
* Driven by &amp;lt;tt&amp;gt;ant&amp;lt;/tt&amp;gt;, with the hope, but not requirement, that it will run in Windows (requirement that it runs in oXygen)&lt;br /&gt;
* Probably best to build an oXygen plug-in as we go (or at least as soon as there is a transform that works)&lt;br /&gt;
* No support for DTDs&lt;br /&gt;
* Support for Schematron (ISO or the new community Schematron, but not both) via putting rules into RELAX NG, then extracting to separate .sch file from there&lt;br /&gt;
* Plan to use HTML5, rather than a bastardized TEI_Lite, as intermediate stage&lt;br /&gt;
* Well documented (using xd: elements and comments — at least partially enforced by Schematron), using consistent naming conventions, typed variables, etc.&lt;br /&gt;
* naming conventions: camelCase for variables, hyphenation-for-functions().&lt;br /&gt;
* For vars/params: use a prefix of v for variables and p for params, so that it's easy to see whether a symbol is supplied or constructed in context.&lt;br /&gt;
* Require @as everywhere.&lt;br /&gt;
* For vars/params: consider devising a sort of Hungarian notation but based on suffixes, that would show the type of a symbol. This would need to distinguish all datatypes and include a sequence component, without being too unwieldy.&lt;br /&gt;
* Probably a good idea to have a single “coding conventions” document that discusses these issues, and perhaps some Schematron to enforce them.&lt;br /&gt;
* SB thinks we should lean away from iterations and “loops”, preferring apply-templates; MH less strong on this point&lt;br /&gt;
* MH prefers functions over named templates; SB less strong on this point&lt;br /&gt;
* We agree we would prefer to rely on XSLT 3 maps as opposed to XSLT 1 keys, re-visiting this decision if maps turn out to be problematic (i.e., too slow)&lt;br /&gt;
* In order to make running XSpec easier, functions and named templates should be in separate library files.&lt;br /&gt;
* We should consider using XSLT modules rather than old-style includes.&lt;br /&gt;
* We want to support chained ODDs right from the start&lt;br /&gt;
* Generate a test suite (including of chaining) as we go&lt;br /&gt;
* We are still debating whether to support PureODD only, or RELAX NG inside &amp;amp;lt;content&amp;gt; as well&lt;br /&gt;
* We are considering an approach where processing of a customization ODD (whether initial or chained) is to generate an XSLT program from it that gets run against P5(subset) or its precursor ODD. This would make debugging easier, but presumably would be a bit slower than an in-memory multistage transformation.&lt;br /&gt;
* Filenames should use only lower-case ascii and underscores, only use hyphens in hyphenated words, only use the dot for an extension, and only have one extension. XSLT files should have the extension .xslt, non-ODD TEI files (such as test files) should be .tei, ODD files (i.e. TEI files containing a schemaSpec) should be .odd, and non-TEI XML should be .xml unless there is another more suitable extension for their type.&lt;br /&gt;
&lt;br /&gt;
=== plans ===&lt;br /&gt;
Not ''necessarily'' in this order, but it is a reasonable one.&lt;br /&gt;
# Nail down the rules for PureODD&lt;br /&gt;
# Nail down the subset of TEI that we plan to process (by tangling into RELAX NG and weaving into XHTML 5) by creating a new ODD, or by modifying p5odds.odd.&lt;br /&gt;
# Agree upon and document XSLT coding conventions. Keep this in a live document to be updated PRN.&lt;br /&gt;
# Re-write generation of p5subset, likely relying heavily on existing code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:New ODD Processing]]&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=New_ODD_processing&amp;diff=16866</id>
		<title>New ODD processing</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=New_ODD_processing&amp;diff=16866"/>
		<updated>2022-02-28T17:14:45Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: /* goals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is where Syd Bauman, Martin Holmes, and others are keeping notes on their plans for building a new PureODD processor.&lt;br /&gt;
&lt;br /&gt;
=== goals ===&lt;br /&gt;
&lt;br /&gt;
We are planning a re-write of current Stylesheets aimed solely at converting ODD to the Guidelines, schemas, and customization ODDs into schemas and customized output.&lt;br /&gt;
Thoughts, in no particular order:&lt;br /&gt;
* Written in XSLT 3, only&lt;br /&gt;
* Eventually we hope it will reside in TEI/TEIC/ repo, but development will be in a separate repo under TEIC; some Council members believe the ODD processing should be kept distinct from the P5 source.&lt;br /&gt;
* Driven by &amp;lt;tt&amp;gt;ant&amp;lt;/tt&amp;gt;, with the hope, but not requirement, that it will run in Windows (requirement that it runs in oXygen)&lt;br /&gt;
* Probably best to build an oXygen plug-in as we go (or at least as soon as there is a transform that works)&lt;br /&gt;
* No support for DTDs&lt;br /&gt;
* Support for Schematron (ISO or the new community Schematron, but not both) via putting rules into RELAX NG, then extracting to separate .sch file from there&lt;br /&gt;
* Plan to use HTML5, rather than a bastardized TEI_Lite, as intermediate stage&lt;br /&gt;
* Well documented (using xd: elements and comments — at least partially enforced by Schematron), using consistent naming conventions, typed variables, etc.&lt;br /&gt;
* naming conventions: camelCase for variables, hyphenation-for-functions().&lt;br /&gt;
* For vars/params: use a prefix of v for variables and p for params, so that it's easy to see whether a symbol is supplied or constructed in context.&lt;br /&gt;
* Require @as everywhere.&lt;br /&gt;
* For vars/params: consider devising a sort of Hungarian notation but based on suffixes, that would show the type of a symbol. This would need to distinguish all datatypes and include a sequence component, without being too unwieldy.&lt;br /&gt;
* Probably a good idea to have a single “coding conventions” document that discusses these issues, and perhaps some Schematron to enforce them.&lt;br /&gt;
* SB thinks we should lean away from iterations and “loops”, preferring apply-templates; MH less strong on this point&lt;br /&gt;
* MH prefers functions over named templates; SB less strong on this point&lt;br /&gt;
* We agree we would prefer to rely on XSLT 3 maps as opposed to XSLT 1 keys, re-visiting this decision if maps turn out to be problematic (i.e., too slow)&lt;br /&gt;
* In order to make running XSpec easier, functions and named templates should be in separate library files.&lt;br /&gt;
* We should consider using XSLT modules rather than old-style includes.&lt;br /&gt;
* We want to support chained ODDs right from the start&lt;br /&gt;
* Generate a test suite (including of chaining) as we go&lt;br /&gt;
* We are still debating whether to support PureODD only, or RELAX NG inside &amp;amp;lt;content&amp;gt; as well&lt;br /&gt;
* We are considering an approach where processing of a customization ODD (whether initial or chained) is to generate an XSLT program from it that gets run against P5(subset) or its precursor ODD. This would make debugging easier, but presumably would be a bit slower than an in-memory multistage transformation.&lt;br /&gt;
* Filenames should use only lower-case ascii and underscores, only use hyphens in hyphenated words, only use the dot for an extension, and only have one extension. XSLT files should have the extension .xslt, pure non-ODD TEI files (such as test files) should be .tei, ODD files (i.e. TEI files containing a schemaSpec) should be .odd, and non-TEI XML should be .xml unless there is another more suitable extension for their type.&lt;br /&gt;
&lt;br /&gt;
=== plans ===&lt;br /&gt;
Not ''necessarily'' in this order, but it is a reasonable one.&lt;br /&gt;
# Nail down the rules for PureODD&lt;br /&gt;
# Nail down the subset of TEI that we plan to process (by tangling into RELAX NG and weaving into XHTML 5) by creating a new ODD, or by modifying p5odds.odd.&lt;br /&gt;
# Agree upon and document XSLT coding conventions. Keep this in a live document to be updated PRN.&lt;br /&gt;
# Re-write generation of p5subset, likely relying heavily on existing code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:New ODD Processing]]&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=New_ODD_processing&amp;diff=16865</id>
		<title>New ODD processing</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=New_ODD_processing&amp;diff=16865"/>
		<updated>2022-02-26T17:43:25Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: /* goals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is where Syd Bauman, Martin Holmes, and others are keeping notes on their plans for building a new PureODD processor.&lt;br /&gt;
&lt;br /&gt;
=== goals ===&lt;br /&gt;
&lt;br /&gt;
We are planning a re-write of current Stylesheets aimed solely at converting ODD to the Guidelines, schemas, and customization ODDs into schemas and customized output.&lt;br /&gt;
Thoughts, in no particular order:&lt;br /&gt;
* Written in XSLT 3, only&lt;br /&gt;
* Eventually we hope it will reside in TEI/TEIC/ repo, but development will be in a separate repo under TEIC; some Council members believe the ODD processing should be kept distinct from the P5 source.&lt;br /&gt;
* Driven by &amp;lt;tt&amp;gt;ant&amp;lt;/tt&amp;gt;, with the hope, but not requirement, that it will run in Windows (requirement that it runs in oXygen)&lt;br /&gt;
* Probably best to build an oXygen plug-in as we go (or at least as soon as there is a transform that works)&lt;br /&gt;
* No support for DTDs&lt;br /&gt;
* Support for Schematron (ISO or the new community Schematron, but not both) via putting rules into RELAX NG, then extracting to separate .sch file from there&lt;br /&gt;
* Plan to use HTML5, rather than a bastardized TEI_Lite, as intermediate stage&lt;br /&gt;
* Well documented (using xd: elements and comments — at least partially enforced by Schematron), using consistent naming conventions, typed variables, etc.&lt;br /&gt;
* naming conventions: camelCase for variables, hyphenation-for-functions().&lt;br /&gt;
* For vars/params: use a prefix of v for variables and p for params, so that it's easy to see whether a symbol is supplied or constructed in context.&lt;br /&gt;
* Require @as everywhere.&lt;br /&gt;
* For vars/params: consider devising a sort of Hungarian notation but based on suffixes, that would show the type of a symbol. This would need to distinguish all datatypes and include a sequence component, without being too unwieldy.&lt;br /&gt;
* Probably a good idea to have a single “coding conventions” document that discusses these issues, and perhaps some Schematron to enforce them.&lt;br /&gt;
* SB thinks we should lean away from iterations and “loops”, preferring apply-templates; MH less strong on this point&lt;br /&gt;
* MH prefers functions over named templates; SB less strong on this point&lt;br /&gt;
* We agree we would prefer to rely on XSLT 3 maps as opposed to XSLT 1 keys, re-visiting this decision if maps turn out to be problematic (i.e., too slow)&lt;br /&gt;
* In order to make running XSpec easier, functions and named templates should be in separate library files.&lt;br /&gt;
* We should consider using XSLT modules rather than old-style includes.&lt;br /&gt;
* We want to support chained ODDs right from the start&lt;br /&gt;
* Generate a test suite (including of chaining) as we go&lt;br /&gt;
* We are still debating whether to support PureODD only, or RELAX NG inside &amp;amp;lt;content&amp;gt; as well&lt;br /&gt;
* We are considering an approach where processing of a customization ODD (whether initial or chained) is to generate an XSLT program from it that gets run against P5(subset) or its precursor ODD. This would make debugging easier, but presumably would be a bit slower than an in-memory multistage transformation.&lt;br /&gt;
&lt;br /&gt;
=== plans ===&lt;br /&gt;
Not ''necessarily'' in this order, but it is a reasonable one.&lt;br /&gt;
# Nail down the rules for PureODD&lt;br /&gt;
# Nail down the subset of TEI that we plan to process (by tangling into RELAX NG and weaving into XHTML 5) by creating a new ODD, or by modifying p5odds.odd.&lt;br /&gt;
# Agree upon and document XSLT coding conventions. Keep this in a live document to be updated PRN.&lt;br /&gt;
# Re-write generation of p5subset, likely relying heavily on existing code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:New ODD Processing]]&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=New_ODD_processing&amp;diff=16864</id>
		<title>New ODD processing</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=New_ODD_processing&amp;diff=16864"/>
		<updated>2022-02-26T17:42:12Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: /* goals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is where Syd Bauman, Martin Holmes, and others are keeping notes on their plans for building a new PureODD processor.&lt;br /&gt;
&lt;br /&gt;
=== goals ===&lt;br /&gt;
&lt;br /&gt;
We are planning a re-write of current Stylesheets aimed solely at converting ODD to the Guidelines, schemas, and customization ODDs into schemas and customized output.&lt;br /&gt;
Thoughts, in no particular order:&lt;br /&gt;
* Written in XSLT 3, only&lt;br /&gt;
* Eventually to reside in TEI/TEIC/ repo, but development will be on a fork of said repo (this will allow us to frequently merge in changes from TEIC/TEI/, but to stay out of everyone’s way)&lt;br /&gt;
* Driven by &amp;lt;tt&amp;gt;ant&amp;lt;/tt&amp;gt;, with the hope, but not requirement, that it will run in Windows (requirement that it runs in oXygen)&lt;br /&gt;
* Probably best to build an oXygen plug-in as we go (or at least as soon as there is a transform that works)&lt;br /&gt;
* No support for DTDs&lt;br /&gt;
* Support for Schematron (ISO or the new community Schematron, but not both) via putting rules into RELAX NG, then extracting to separate .sch file from there&lt;br /&gt;
* Plan to use HTML5, rather than a bastardized TEI_Lite, as intermediate stage&lt;br /&gt;
* Well documented (using xd: elements and comments — at least partially enforced by Schematron), using consistent naming conventions, typed variables, etc.&lt;br /&gt;
* naming conventions: camelCase for variables, hyphenation-for-functions().&lt;br /&gt;
* For vars/params: use a prefix of v for variables and p for params, so that it's easy to see whether a symbol is supplied or constructed in context.&lt;br /&gt;
* Require @as everywhere.&lt;br /&gt;
* For vars/params: consider devising a sort of Hungarian notation but based on suffixes, that would show the type of a symbol. This would need to distinguish all datatypes and include a sequence component, without being too unwieldy.&lt;br /&gt;
* Probably a good idea to have a single “coding conventions” document that discusses these issues, and perhaps some Schematron to enforce them.&lt;br /&gt;
* SB thinks we should lean away from iterations and “loops”, preferring apply-templates; MH less strong on this point&lt;br /&gt;
* MH prefers functions over named templates; SB less strong on this point&lt;br /&gt;
* We agree we would prefer to rely on XSLT 3 maps as opposed to XSLT 1 keys, re-visiting this decision if maps turn out to be problematic (i.e., too slow)&lt;br /&gt;
* In order to make running XSpec easier, functions and named templates should be in separate library files.&lt;br /&gt;
* We should consider using XSLT modules rather than old-style includes.&lt;br /&gt;
* We want to support chained ODDs right from the start&lt;br /&gt;
* Generate a test suite (including of chaining) as we go&lt;br /&gt;
* We are still debating whether to support PureODD only, or RELAX NG inside &amp;amp;lt;content&amp;gt; as well&lt;br /&gt;
* We are considering an approach where processing of a customization ODD (whether initial or chained) is to generate an XSLT program from it that gets run against P5(subset) or its precursor ODD. This would make debugging easier, but presumably would be a bit slower than an in-memory multistage transformation.&lt;br /&gt;
&lt;br /&gt;
=== plans ===&lt;br /&gt;
Not ''necessarily'' in this order, but it is a reasonable one.&lt;br /&gt;
# Nail down the rules for PureODD&lt;br /&gt;
# Nail down the subset of TEI that we plan to process (by tangling into RELAX NG and weaving into XHTML 5) by creating a new ODD, or by modifying p5odds.odd.&lt;br /&gt;
# Agree upon and document XSLT coding conventions. Keep this in a live document to be updated PRN.&lt;br /&gt;
# Re-write generation of p5subset, likely relying heavily on existing code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:New ODD Processing]]&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=Mapping_language_processing&amp;diff=16847</id>
		<title>Mapping language processing</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=Mapping_language_processing&amp;diff=16847"/>
		<updated>2020-11-20T17:13:56Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page follows the model of Mapping ODD Processing in trying to provide a clear general introduction to the way that different language inputs are processed in the building of Guidelines/documentation.&lt;br /&gt;
&lt;br /&gt;
=TEI Guidelines=&lt;br /&gt;
&lt;br /&gt;
This section deals with the Guidelines build process specifically.&lt;br /&gt;
&lt;br /&gt;
==Input parameters==&lt;br /&gt;
&lt;br /&gt;
The Guidelines Makefile originally provided the following set of parameters related to language processing when building the Guidelines:&lt;br /&gt;
&lt;br /&gt;
 - ALLLANGUAGES=en&lt;br /&gt;
 - LANGUAGE=en (now deleted)&lt;br /&gt;
 - INPUTLANGUAGE=en&lt;br /&gt;
 - DOCUMENTATIONLANGUAGE=en (now deleted)&lt;br /&gt;
&lt;br /&gt;
ALLLANGUAGES is a parameter which can take multiple values, space-separated; for each of those values, a separate version of the Guidelines will be built in its own folder by using the ant macro &amp;lt;code&amp;gt;buildweb&amp;lt;/code&amp;gt;. This calls the Stylesheets &amp;lt;code&amp;gt;Utilities/Guidelines.xsl&amp;lt;/code&amp;gt;, passing the current value of the language in all three of the following parameters:&lt;br /&gt;
&lt;br /&gt;
 - lang&lt;br /&gt;
 - doclang&lt;br /&gt;
 - documentationLanguage&lt;br /&gt;
&lt;br /&gt;
(These will be documented later.) This parameter is automatically set to the following list of languages for a number of Makefile targets, including &amp;lt;code&amp;gt;teiwebsiteguidelines&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
INPUTLANGUAGE governs which source tree for the Guidelines specifically is used; it governs the name of the source file,[1] setting the variable DRIVER to this file. As far as we can tell, the only effect of this is to copy the Images directory from the language subdirectory to the output directory.&lt;br /&gt;
&lt;br /&gt;
[1]:P5/Source/en/Guidelines-en.xml or P5/Source/fr/Guidelines-fr.xml are the only two available right now, and the French chapter points only to English source files anyway, because the French header chapter is out of date and will not build.&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=Mapping_language_processing&amp;diff=16846</id>
		<title>Mapping language processing</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=Mapping_language_processing&amp;diff=16846"/>
		<updated>2020-11-20T17:06:14Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page follows the model of Mapping ODD Processing in trying to provide a clear general introduction to the way that different language inputs are processed in the building of Guidelines/documentation.&lt;br /&gt;
&lt;br /&gt;
=TEI Guidelines=&lt;br /&gt;
&lt;br /&gt;
This section deals with the Guidelines build process specifically.&lt;br /&gt;
&lt;br /&gt;
==Input parameters==&lt;br /&gt;
&lt;br /&gt;
The Guidelines Makefile originally provided the following set of parameters related to language processing when building the Guidelines:&lt;br /&gt;
&lt;br /&gt;
 - ALLLANGUAGES=en&lt;br /&gt;
 - LANGUAGE=en (now deleted)&lt;br /&gt;
 - INPUTLANGUAGE=en&lt;br /&gt;
 - DOCUMENTATIONLANGUAGE=en (now deleted)&lt;br /&gt;
&lt;br /&gt;
ALLLANGUAGES is a parameter which can take multiple values, space-separated; for each of those values, a separate version of the Guidelines will be built in its own folder by using the ant macro &amp;lt;code&amp;gt;buildweb&amp;lt;/code&amp;gt;. This calls the Stylesheets &amp;lt;code&amp;gt;utilties/Guidelines.xsl&amp;lt;/code&amp;gt;, passing the current value of the language in all three of the following parameters:&lt;br /&gt;
&lt;br /&gt;
 - lang&lt;br /&gt;
 - doclang&lt;br /&gt;
 - documentationLanguage&lt;br /&gt;
&lt;br /&gt;
(These will be documented later.) This parameter is automatically set to the following list of languages for a number of Makefile targets, including &amp;lt;code&amp;gt;teiwebsiteguidelines&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
INPUTLANGUAGE governs which source tree for the Guidelines specifically is used; it governs the name of the source file,[1] setting the variable DRIVER to this file. As far as we can tell, the only effect of this is to copy the Images directory from the language subdirectory to the output directory.&lt;br /&gt;
&lt;br /&gt;
[1]:P5/Source/en/Guidelines-en.xml or P5/Source/fr/Guidelines-fr.xml are the only two available right now, and the French chapter points only to English source files anyway, because the French header chapter is out of date and will not build.&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=Mapping_language_processing&amp;diff=16845</id>
		<title>Mapping language processing</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=Mapping_language_processing&amp;diff=16845"/>
		<updated>2020-11-06T17:39:56Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: /* Input parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page follows the model of Mapping ODD Processing in trying to provide a clear general introduction to the way that different language inputs are processed in the building of Guidelines/documentation.&lt;br /&gt;
&lt;br /&gt;
=TEI Guidelines=&lt;br /&gt;
&lt;br /&gt;
This section deals with the Guidelines build process specifically.&lt;br /&gt;
&lt;br /&gt;
==Input parameters==&lt;br /&gt;
&lt;br /&gt;
The Guidelines Makefile provides the following set of parameters related to language processing when building the Guidlines:&lt;br /&gt;
&lt;br /&gt;
 - ALLLANGUAGES=en&lt;br /&gt;
 - LANGUAGE=en&lt;br /&gt;
 - INPUTLANGUAGE=en&lt;br /&gt;
 - DOCUMENTATIONLANGUAGE=en&lt;br /&gt;
&lt;br /&gt;
ALLLANGUAGES is a parameter which can take multiple values, space-separated; for each of those values, a separate version of the Guidelines will be built in its own folder by using the ant macro &amp;lt;code&amp;gt;buildweb&amp;lt;/code&amp;gt;. This calls the Stylesheets &amp;lt;code&amp;gt;utilties/Guidelines.xsl&amp;lt;/code&amp;gt;, passing the current value of the language in all three of the following parameters:&lt;br /&gt;
&lt;br /&gt;
 - lang&lt;br /&gt;
 - doclang&lt;br /&gt;
 - documentationLanguage&lt;br /&gt;
&lt;br /&gt;
(These will be documented later.) This parameter is automatically set to the following list of languages for a number of Makefile targets, including &amp;lt;code&amp;gt;teiwebsiteguidelines&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
LANGUAGE is an apparently unused parameter; it appears in both the P5/Makefile and the P5/Test/Makefile, but is never used in either. ''We recommend deleting this confusing parameter.''&lt;br /&gt;
&lt;br /&gt;
INPUTLANGUAGE governs which source tree for the Guidelines specifically is used; it governs the name of the source file,[1] setting the variable DRIVER to this file. As far as we can tell, the only effect of this is to copy the Images directory from the language subdirectory to the output directory.&lt;br /&gt;
&lt;br /&gt;
DOCUMENTATIONLANGUAGE does not get used at all as far as we can see. ''We recommend deleting this confusing parameter.''&lt;br /&gt;
&lt;br /&gt;
[1]:P5/Source/en/Guidelines-en.xml or P5/Source/fr/Guidelines-fr.xml are the only two available right now, and the French chapter points only to English source files anyway, because the French header chapter is out of date and will not build.&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=Mapping_language_processing&amp;diff=16844</id>
		<title>Mapping language processing</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=Mapping_language_processing&amp;diff=16844"/>
		<updated>2020-11-06T17:39:40Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: /* Input parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page follows the model of Mapping ODD Processing in trying to provide a clear general introduction to the way that different language inputs are processed in the building of Guidelines/documentation.&lt;br /&gt;
&lt;br /&gt;
=TEI Guidelines=&lt;br /&gt;
&lt;br /&gt;
This section deals with the Guidelines build process specifically.&lt;br /&gt;
&lt;br /&gt;
==Input parameters==&lt;br /&gt;
&lt;br /&gt;
The Guidelines Makefile provides the following set of parameters related to language processing when building the Guidlines:&lt;br /&gt;
&lt;br /&gt;
 - ALLLANGUAGES=en&lt;br /&gt;
 - LANGUAGE=en&lt;br /&gt;
 - INPUTLANGUAGE=en&lt;br /&gt;
 - DOCUMENTATIONLANGUAGE=en&lt;br /&gt;
&lt;br /&gt;
ALLLANGUAGES is a parameter which can take multiple values, space-separated; for each of those values, a separate version of the Guidelines will be built in its own folder by using the ant macro &amp;lt;code&amp;gt;buildweb&amp;lt;/code&amp;gt;. This calls the Stylesheets &amp;lt;code&amp;gt;utilties/Guidelines.xsl&amp;lt;/code&amp;gt;, passing the current value of the language in all three of the following parameters:&lt;br /&gt;
&lt;br /&gt;
 - lang&lt;br /&gt;
 - doclang&lt;br /&gt;
 - documentationLanguage&lt;br /&gt;
&lt;br /&gt;
(These will be documented later.) This parameter is automatically set to the following list of languages for a number of Makefile targets, including &amp;lt;code&amp;gt;teiwebsiteguidelines&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
LANGUAGE is an apparently unused parameter; it appears in both the P5/Makefile and the P5/Test/Makefile, but is never used in either. ''We recommend deleting this confusing parameter''&lt;br /&gt;
&lt;br /&gt;
INPUTLANGUAGE governs which source tree for the Guidelines specifically is used; it governs the name of the source file,[1] setting the variable DRIVER to this file. As far as we can tell, the only effect of this is to copy the Images directory from the language subdirectory to the output directory.&lt;br /&gt;
&lt;br /&gt;
DOCUMENTATIONLANGUAGE does not get used at all as far as we can see. ''We recommend deleting this confusing parameter.''&lt;br /&gt;
&lt;br /&gt;
[1]:P5/Source/en/Guidelines-en.xml or P5/Source/fr/Guidelines-fr.xml are the only two available right now, and the French chapter points only to English source files anyway, because the French header chapter is out of date and will not build.&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=Mapping_language_processing&amp;diff=16843</id>
		<title>Mapping language processing</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=Mapping_language_processing&amp;diff=16843"/>
		<updated>2020-11-06T17:39:17Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: /* Input parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page follows the model of Mapping ODD Processing in trying to provide a clear general introduction to the way that different language inputs are processed in the building of Guidelines/documentation.&lt;br /&gt;
&lt;br /&gt;
=TEI Guidelines=&lt;br /&gt;
&lt;br /&gt;
This section deals with the Guidelines build process specifically.&lt;br /&gt;
&lt;br /&gt;
==Input parameters==&lt;br /&gt;
&lt;br /&gt;
The Guidelines Makefile provides the following set of parameters related to language processing when building the Guidlines:&lt;br /&gt;
&lt;br /&gt;
 - ALLLANGUAGES=en&lt;br /&gt;
 - LANGUAGE=en&lt;br /&gt;
 - INPUTLANGUAGE=en&lt;br /&gt;
 - DOCUMENTATIONLANGUAGE=en&lt;br /&gt;
&lt;br /&gt;
ALLLANGUAGES is a parameter which can take multiple values, space-separated; for each of those values, a separate version of the Guidelines will be built in its own folder by using the ant macro &amp;lt;code&amp;gt;buildweb&amp;lt;/code&amp;gt;. This calls the Stylesheets &amp;lt;code&amp;gt;utilties/Guidelines.xsl&amp;lt;/code&amp;gt;, passing the current value of the language in all three of the following parameters:&lt;br /&gt;
&lt;br /&gt;
 - lang&lt;br /&gt;
 - doclang&lt;br /&gt;
 - documentationLanguage&lt;br /&gt;
&lt;br /&gt;
(These will be documented later.) This parameter is automatically set to the following list of languages for a number of Makefile targets, including &amp;lt;code&amp;gt;teiwebsiteguidelines&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
LANGUAGE is an apparently unused parameter; it appears in both the P5/Makefile and the P5/Test/Makefile, but is never used in either. &amp;quot;&amp;quot;We recommend deleting this confusing parameter&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
INPUTLANGUAGE governs which source tree for the Guidelines specifically is used; it governs the name of the source file,[1] setting the variable DRIVER to this file. As far as we can tell, the only effect of this is to copy the Images directory from the language subdirectory to the output directory.&lt;br /&gt;
&lt;br /&gt;
DOCUMENTATIONLANGUAGE does not get used at all as far as we can see. &amp;quot;&amp;quot;We recommend deleting this confusing parameter.&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[1]:P5/Source/en/Guidelines-en.xml or P5/Source/fr/Guidelines-fr.xml are the only two available right now, and the French chapter points only to English source files anyway, because the French header chapter is out of date and will not build.&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=Mapping_language_processing&amp;diff=16842</id>
		<title>Mapping language processing</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=Mapping_language_processing&amp;diff=16842"/>
		<updated>2020-11-06T17:38:32Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: /* Input parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page follows the model of Mapping ODD Processing in trying to provide a clear general introduction to the way that different language inputs are processed in the building of Guidelines/documentation.&lt;br /&gt;
&lt;br /&gt;
=TEI Guidelines=&lt;br /&gt;
&lt;br /&gt;
This section deals with the Guidelines build process specifically.&lt;br /&gt;
&lt;br /&gt;
==Input parameters==&lt;br /&gt;
&lt;br /&gt;
The Guidelines Makefile provides the following set of parameters related to language processing when building the Guidlines:&lt;br /&gt;
&lt;br /&gt;
 - ALLLANGUAGES=en&lt;br /&gt;
 - LANGUAGE=en&lt;br /&gt;
 - INPUTLANGUAGE=en&lt;br /&gt;
 - DOCUMENTATIONLANGUAGE=en&lt;br /&gt;
&lt;br /&gt;
ALLLANGUAGES is a parameter which can take multiple values, space-separated; for each of those values, a separate version of the Guidelines will be built in its own folder by using the ant macro &amp;lt;code&amp;gt;buildweb&amp;lt;/code&amp;gt;. This calls the Stylesheets &amp;lt;code&amp;gt;utilties/Guidelines.xsl&amp;lt;/code&amp;gt;, passing the current value of the language in all three of the following parameters:&lt;br /&gt;
&lt;br /&gt;
 - lang&lt;br /&gt;
 - doclang&lt;br /&gt;
 - documentationLanguage&lt;br /&gt;
&lt;br /&gt;
(These will be documented later.) This parameter is automatically set to the following list of languages for a number of Makefile targets, including &amp;lt;code&amp;gt;teiwebsiteguidelines&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
LANGUAGE is an apparently unused parameter; it appears in both the P5/Makefile and the P5/Test/Makefile, but is never used in either. _We recommend deleting this confusing parameter._&lt;br /&gt;
&lt;br /&gt;
INPUTLANGUAGE governs which source tree for the Guidelines specifically is used; it governs the name of the source file,[1] setting the variable DRIVER to this file. As far as we can tell, the only effect of this is to copy the Images directory from the language subdirectory to the output directory.&lt;br /&gt;
&lt;br /&gt;
DOCUMENTATIONLANGUAGE does not get used at all as far as we can see. _We recommend deleting this confusing parameter._ &lt;br /&gt;
&lt;br /&gt;
[1]:P5/Source/en/Guidelines-en.xml or P5/Source/fr/Guidelines-fr.xml are the only two available right now, and the French chapter points only to English source files anyway, because the French header chapter is out of date and will not build.&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=Mapping_language_processing&amp;diff=16841</id>
		<title>Mapping language processing</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=Mapping_language_processing&amp;diff=16841"/>
		<updated>2020-11-06T17:37:44Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: /* Input parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page follows the model of Mapping ODD Processing in trying to provide a clear general introduction to the way that different language inputs are processed in the building of Guidelines/documentation.&lt;br /&gt;
&lt;br /&gt;
=TEI Guidelines=&lt;br /&gt;
&lt;br /&gt;
This section deals with the Guidelines build process specifically.&lt;br /&gt;
&lt;br /&gt;
==Input parameters==&lt;br /&gt;
&lt;br /&gt;
The Guidelines Makefile provides the following set of parameters related to language processing when building the Guidlines:&lt;br /&gt;
&lt;br /&gt;
 - ALLLANGUAGES=en&lt;br /&gt;
 - LANGUAGE=en&lt;br /&gt;
 - INPUTLANGUAGE=en&lt;br /&gt;
 - DOCUMENTATIONLANGUAGE=en&lt;br /&gt;
&lt;br /&gt;
ALLLANGUAGES is a parameter which can take multiple values, space-separated; for each of those values, a separate version of the Guidelines will be built in its own folder by using the ant macro &amp;lt;code&amp;gt;buildweb&amp;lt;/code&amp;gt;. This calls the Stylesheets &amp;lt;code&amp;gt;utilties/Guidelines.xsl&amp;lt;/code&amp;gt;, passing the current value of the language in all three of the following parameters:&lt;br /&gt;
&lt;br /&gt;
 - lang&lt;br /&gt;
 - doclang&lt;br /&gt;
 - documentationLanguage&lt;br /&gt;
&lt;br /&gt;
(These will be documented later.) This parameter is automatically set to the following list of languages for a number of Makefile targets, including &amp;lt;code&amp;gt;teiwebsiteguidelines&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
LANGUAGE is an apparently unused parameter; it appears in both the P5/Makefile and the P5/Test/Makefile, but is never used in either. _We recommend deleting this confusing parameter._&lt;br /&gt;
&lt;br /&gt;
INPUTLANGUAGE governs which source tree for the Guidelines specifically is used; it governs the name of the source file,[1] setting the variable DRIVER to this file. As far as we can tell, the only effect of this is to copy the Images directory from the language subdirectory to the output directory.&lt;br /&gt;
&lt;br /&gt;
[1]:P5/Source/en/Guidelines-en.xml or P5/Source/fr/Guidelines-fr.xml are the only two available right now, and the French chapter points only to English source files anyway, because the French header chapter is out of date and will not build&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=Mapping_language_processing&amp;diff=16840</id>
		<title>Mapping language processing</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=Mapping_language_processing&amp;diff=16840"/>
		<updated>2020-11-06T17:36:10Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page follows the model of Mapping ODD Processing in trying to provide a clear general introduction to the way that different language inputs are processed in the building of Guidelines/documentation.&lt;br /&gt;
&lt;br /&gt;
=TEI Guidelines=&lt;br /&gt;
&lt;br /&gt;
This section deals with the Guidelines build process specifically.&lt;br /&gt;
&lt;br /&gt;
==Input parameters==&lt;br /&gt;
&lt;br /&gt;
The Guidelines Makefile provides the following set of parameters related to language processing when building the Guidlines:&lt;br /&gt;
&lt;br /&gt;
 - ALLLANGUAGES=en&lt;br /&gt;
 - LANGUAGE=en&lt;br /&gt;
 - INPUTLANGUAGE=en&lt;br /&gt;
 - DOCUMENTATIONLANGUAGE=en&lt;br /&gt;
&lt;br /&gt;
ALLLANGUAGES is a parameter which can take multiple values, space-separated; for each of those values, a separate version of the Guidelines will be built in its own folder by using the ant macro &amp;lt;code&amp;gt;buildweb&amp;lt;/code&amp;gt;. This calls the Stylesheets &amp;lt;code&amp;gt;utilties/Guidelines.xsl&amp;lt;/code&amp;gt;, passing the current value of the language in all three of the following parameters:&lt;br /&gt;
&lt;br /&gt;
 - lang&lt;br /&gt;
 - doclang&lt;br /&gt;
 - documentationLanguage&lt;br /&gt;
&lt;br /&gt;
(These will be documented later.) This parameter is automatically set to the following list of languages for a number of Makefile targets, including &amp;lt;code&amp;gt;teiwebsiteguidelines&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
LANGUAGE is an apparently unused parameter; it appears in both the P5/Makefile and the P5/Test/Makefile, but is never used in either. _We recommend deleting this confusing parameter._&lt;br /&gt;
&lt;br /&gt;
INPUTLANGUAGE governs which source tree for the Guidelines specifically is used; it governs the name of the source file,[1] setting the variable DRIVER to this file. That makes the root language effectively the input language, and then when other language versions are built in the &amp;lt;code&amp;gt;html-web.stamp&amp;lt;/code&amp;gt; target, they are based on the input language rather than the default (en), assuming they are different.&lt;br /&gt;
&lt;br /&gt;
[1]:P5/Source/en/Guidelines-en.xml or P5/Source/fr/Guidelines-fr.xml are the only two available right now, and the French chapter points only to English source files anyway, because the French header chapter is out of date and will not build&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=Mapping_language_processing&amp;diff=16839</id>
		<title>Mapping language processing</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=Mapping_language_processing&amp;diff=16839"/>
		<updated>2020-11-06T17:34:23Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page follows the model of Mapping ODD Processing in trying to provide a clear general introduction to the way that different language inputs are processed in the building of Guidelines/documentation.&lt;br /&gt;
&lt;br /&gt;
=TEI Guidelines=&lt;br /&gt;
&lt;br /&gt;
This section deals with the Guidelines build process specifically.&lt;br /&gt;
&lt;br /&gt;
==Input parameters==&lt;br /&gt;
&lt;br /&gt;
The Guidelines Makefile provides the following set of parameters related to language processing when building the Guidlines:&lt;br /&gt;
&lt;br /&gt;
 - ALLLANGUAGES=en&lt;br /&gt;
 - LANGUAGE=en&lt;br /&gt;
 - INPUTLANGUAGE=en&lt;br /&gt;
 - DOCUMENTATIONLANGUAGE=en&lt;br /&gt;
&lt;br /&gt;
ALLLANGUAGES is a parameter which can take multiple values, space-separated; for each of those values, a separate version of the Guidelines will be built in its own folder by using the ant macro &amp;lt;code&amp;gt;buildweb&amp;lt;/code&amp;gt;. This calls the Stylesheets &amp;lt;code&amp;gt;utilties/Guidelines.xsl&amp;lt;/code&amp;gt;, passing the current value of the language in all three of the following parameters:&lt;br /&gt;
&lt;br /&gt;
 - lang&lt;br /&gt;
 - doclang&lt;br /&gt;
 - documentationLanguage&lt;br /&gt;
&lt;br /&gt;
(These will be documented later.) This parameter is automatically set to the following list of languages for a number of Makefile targets, including &amp;lt;code&amp;gt;teiwebsiteguidelines&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
LANGUAGE is an apparently unused parameter; it appears in both the P5/Makefile and the P5/Test/Makefile, but is never used in either. *We recommend deleting this confusing parameter.*&lt;br /&gt;
&lt;br /&gt;
INPUTLANGUAGE governs which source tree for the Guidelines specifically is used; it governs the name of the source file,[^1] setting the variable DRIVER to this file. That makes the root language effectively the input language, and then when other language versions are built in the &amp;lt;code&amp;gt;html-web.stamp&amp;lt;/code&amp;gt; target, they are based on the input language rather than the default (en), assuming they are different.&lt;br /&gt;
&lt;br /&gt;
[^1]:P5/Source/en/Guidelines-en.xml or P5/Source/fr/Guidelines-fr.xml are the only two available right now, and the French chapter points only to English source files anyway, because the French header chapter is out of date and will not build&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=Mapping_language_processing&amp;diff=16838</id>
		<title>Mapping language processing</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=Mapping_language_processing&amp;diff=16838"/>
		<updated>2020-11-06T16:41:04Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page follows the model of Mapping ODD Processing in trying to provide a clear general introduction to the way that different language inputs are processed in the building of Guidelines/documentation.&lt;br /&gt;
&lt;br /&gt;
=TEI Guidelines=&lt;br /&gt;
&lt;br /&gt;
This section deals with the Guidelines build process specifically.&lt;br /&gt;
&lt;br /&gt;
==Input parameters==&lt;br /&gt;
&lt;br /&gt;
The Guidelines Makefile provides the following set of parameters related to language processing when building the Guidlines:&lt;br /&gt;
&lt;br /&gt;
 - ALLLANGUAGES=en&lt;br /&gt;
 - LANGUAGE=en&lt;br /&gt;
 - INPUTLANGUAGE=en&lt;br /&gt;
 - DOCUMENTATIONLANGUAGE=en&lt;br /&gt;
&lt;br /&gt;
ALLLANGUAGES is a parameter which can take multiple values, space-separated; for each of those values, a separate version of the Guidelines will be built in its own folder by using the ant macro &amp;lt;code&amp;gt;buildweb&amp;lt;/code&amp;gt;. This calls the Stylesheets &amp;lt;code&amp;gt;utilties/Guidelines.xsl&amp;lt;/code&amp;gt;, passing the current value of the language in all three of the following parameters:&lt;br /&gt;
&lt;br /&gt;
 - lang&lt;br /&gt;
 - doclang&lt;br /&gt;
 - documentationLanguage&lt;br /&gt;
&lt;br /&gt;
(These will be documented later.) This parameter is automatically set to the following list of languages for a number of Makefile targets, including &amp;lt;code&amp;gt;teiwebsiteguidelines&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
LANGUAGE is a&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=Mapping_language_processing&amp;diff=16837</id>
		<title>Mapping language processing</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=Mapping_language_processing&amp;diff=16837"/>
		<updated>2020-11-06T16:36:58Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page follows the model of Mapping ODD Processing in trying to provide a clear general introduction to the way that different language inputs are processed in the building of Guidelines/documentation.&lt;br /&gt;
&lt;br /&gt;
=TEI Guidelines=&lt;br /&gt;
&lt;br /&gt;
This section deals with the Guidelines build process specifically.&lt;br /&gt;
&lt;br /&gt;
==Input parameters==&lt;br /&gt;
&lt;br /&gt;
The Guidelines Makefile provides the following set of parameters related to language processing when building the Guidlines:&lt;br /&gt;
&lt;br /&gt;
 - ALLLANGUAGES=en&lt;br /&gt;
 - LANGUAGE=en&lt;br /&gt;
 - INPUTLANGUAGE=en&lt;br /&gt;
 - DOCUMENTATIONLANGUAGE=en&lt;br /&gt;
&lt;br /&gt;
ALLLANGUAGES is a parameter which can take multiple values, space-separated; for each of those values, a separate version of the Guidelines will be built in its own folder by using the ant macro &amp;lt;code&amp;gt;buildweb&amp;lt;/code&amp;gt;. This calls the Stylesheets &amp;lt;code&amp;gt;utilties/Guidelines.xsl&amp;lt;/code&amp;gt;, passing the current value of the language in all three of the following parameters:&lt;br /&gt;
&lt;br /&gt;
 - lang&lt;br /&gt;
 - doclang&lt;br /&gt;
 - documenationLanguage&lt;br /&gt;
&lt;br /&gt;
(These will be documented later.)&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=Mapping_language_processing&amp;diff=16836</id>
		<title>Mapping language processing</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=Mapping_language_processing&amp;diff=16836"/>
		<updated>2020-11-06T16:30:17Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page follows the model of Mapping ODD Processing in trying to provide a clear general introduction to the way that different language inputs are processed in the building of Guidelines/documentation.&lt;br /&gt;
&lt;br /&gt;
=TEI Guidelines=&lt;br /&gt;
&lt;br /&gt;
This section deals with the Guidelines build process specifically.&lt;br /&gt;
&lt;br /&gt;
==Input parameters==&lt;br /&gt;
&lt;br /&gt;
The Guidelines Makefile provides the following set of parameters related to language processing when building the Guidlines:&lt;br /&gt;
&lt;br /&gt;
 - ALLLANGUAGES=en&lt;br /&gt;
 - LANGUAGE=en&lt;br /&gt;
 - INPUTLANGUAGE=en&lt;br /&gt;
 - DOCUMENTATIONLANGUAGE=en&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=Mapping_language_processing&amp;diff=16835</id>
		<title>Mapping language processing</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=Mapping_language_processing&amp;diff=16835"/>
		<updated>2020-11-06T16:28:34Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page follows the model of Mapping ODD Processing in trying to provide a clear general introduction to the way that different language inputs are processed in the building of Guidelines/documentation.&lt;br /&gt;
&lt;br /&gt;
#TEI Guidelines&lt;br /&gt;
&lt;br /&gt;
This section deals with the Guidelines build process specifically.&lt;br /&gt;
&lt;br /&gt;
##Input parameters&lt;br /&gt;
&lt;br /&gt;
The Guidelines Makefile provides the following set of parameters related to language processing when building the Guidlines:&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=Mapping_language_processing&amp;diff=16834</id>
		<title>Mapping language processing</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=Mapping_language_processing&amp;diff=16834"/>
		<updated>2020-11-06T16:28:04Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page follows the model of Mapping ODD Processing in trying to provide a clear general introduction to the way that different language inputs are processed in the building of Guidelines/documentation.&lt;br /&gt;
&lt;br /&gt;
-TEI Guidelines&lt;br /&gt;
&lt;br /&gt;
This section deals with the Guidelines build process specifically.&lt;br /&gt;
&lt;br /&gt;
--Input parameters&lt;br /&gt;
&lt;br /&gt;
The Guidelines Makefile provides the following set of parameters related to language processing when building the Guidlines:&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=Mapping_language_processing&amp;diff=16833</id>
		<title>Mapping language processing</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=Mapping_language_processing&amp;diff=16833"/>
		<updated>2020-11-06T16:27:40Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: Created page with &amp;quot;This page follows the model of Mapping ODD Processing in trying to provide a clear general introduction to the way that different language inputs are processed in the building...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page follows the model of Mapping ODD Processing in trying to provide a clear general introduction to the way that different language inputs are processed in the building of Guidelines/documentation.&lt;br /&gt;
&lt;br /&gt;
##TEI Guidelines&lt;br /&gt;
&lt;br /&gt;
This section deals with the Guidelines build process specifically.&lt;br /&gt;
&lt;br /&gt;
###Input parameters&lt;br /&gt;
&lt;br /&gt;
The Guidelines Makefile provides the following set of parameters related to language processing when building the Guidlines:&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=Mapping_ODD_processing&amp;diff=16794</id>
		<title>Mapping ODD processing</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=Mapping_ODD_processing&amp;diff=16794"/>
		<updated>2020-03-31T14:07:30Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: Remove obsolete reference to p5subsetDoctored.xml&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Customization]]&lt;br /&gt;
&lt;br /&gt;
This page is intended to help us map out and document the various processing steps that are applied to [[ODD]] files, both in the current Stylesheets and in a future alternative ODD processor. The main goal is to document the steps in generating TEI schemas from a TEI customization ODD file. However, processing P5 itself is part of that process. And although not our primary goal, we hope to also provide documentation for generating custom documentation from a TEI customization ODD file.&lt;br /&gt;
&lt;br /&gt;
An ''italicized'' name in column A (NAME) indicates a step that is performed for ''building P5'', but not necessarily for generating a customization.&lt;br /&gt;
&lt;br /&gt;
The '''bold''' upper-case term in the NAME column is the term we have agreed to use for the process in question in future documentation. There has been a great deal of confusion over nomenclature which impedes clear discussion of these steps, much of it resulting from the varied naming conventions in use in the Stylesheets code, so establishing a standard set of terms is important.&lt;br /&gt;
&lt;br /&gt;
The '''bold''' stylesheet name in the XSLT FILES column is the one that is called; the others are the ones that the called one imports or includes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! # || NAME || INPUT || OUTPUT FORM || PROCESSES INVOLVED || PREREQS || XSLT FILES || COMMENTS&lt;br /&gt;
|- &lt;br /&gt;
| 1 || ''Generate P5'' || guidelines-[lang].xml || p5.xml || Combine all chapter and spec files into a single document; processing instructions such as the generation of a table for chapter ST are handled. || There must be a repodate.xml file containing an XML representation of the git repo state. || '''TEI/P5/Utilities/expand.xsl''' || *Spec elements occur in specGrp and in div.&lt;br /&gt;
|- &lt;br /&gt;
| 2 || ''Generate P5 Subset'' || p5.xml (generated above) || p5subset.xml || Create a special cut-down version of P5 which has only divisions and their headers along with all the specs. || Complete guidelines || '''TEI/P5/Utilities/subset.xsl''' || Why are all the div/head elements included? Why is a schemaSpec not created? Is it the case that schemaSpec always and only represents a customization of an existing source, which must eventually chain back to p5subset? If so, ODD is not a generic language; it depends on P5. &lt;br /&gt;
|- &lt;br /&gt;
| 3 || ''Generate JSON from p5subset'' || p5subset.xml || p5subset.json || &amp;amp;#160; || &amp;amp;#160; || '''Stylesheets/odds/odd2json.xsl''', odds/teiodds.xsl, common/common_tagdocs.xsl, common/common_param.xsl, common/functions.xsl, common/i18n.xsl || &amp;amp;#160; &lt;br /&gt;
|- &lt;br /&gt;
| 4 || '''COMPILE ODD'''. Merge ODD customization with P5 source (SR calls this oddexpand; aka tangle aka compile aka process aka odd2odd aka flatten) || ODD customization; p5subset || file.processedodd ('''COMPILED ODD''') || The macrodef oddexpan is called, and that calls odd2odd.xsl with params || p5subset.xml; ODD customization || '''Stylesheets/odds/odd2odd.xsl''' ||  &lt;br /&gt;
|- &lt;br /&gt;
| 5 || '''[[ODD CHAINING]]''' || An ODD customization (#2) whose @source points to another customization (#1) || file.processedodd || #1 undergoes merging with p5subset.xml, then #2 undergoes merging with the result of that. || Both ODDs and p5subset.xml || [See above] || Wrinkle: either #1 or #2 might have components that point out to another source, which would then be imported. See Lou's tutorial [https://teic.github.io/TCW/howtoChain.html]&lt;br /&gt;
|- &lt;br /&gt;
| 6 || '''COMPILED ODD TO RELAXNG''' Generate RELAX NG from processed ODD || file.processedodd (output of rows above) || file.rng || Straight conversion, albeit complicated ||  || '''Stylesheets/odds/odd2relax.xsl'''; odds/teiodds.xsl; odds/classatts.xsl; common/functions.xsl; common/i18n.xsl; common/common_param.xsl || The output is used to generate rnc and xsd using trang. &lt;br /&gt;
|- &lt;br /&gt;
| 7 || '''COMPILED ODD TO DTD''' Generate DTD from ODD || file.processedodd || file.[odd.]dtd || Generate a DTD from the processed ODD file. || &amp;amp;#160; || '''Stylesheets/odds/odd2dtd.xsl''', odds/teiodds.xsl, odds/classatts.xsl, common/i18n.xsl, common/functions.xsl, common/common_param.xsl || &amp;amp;#160; &lt;br /&gt;
|- &lt;br /&gt;
| 8 || '''COMPILED ODD TO XSD''' || file.processedodd || file.xsd || Generate RelaxNG from compiled ODD; convert with Trang to XSD; post-process XSD. || file.processedodd; Trang. || Ant task: '''xsd/build-to.xml'''; xsd/postprocess.xsl || G &lt;br /&gt;
|- &lt;br /&gt;
| 9 || '''COMPILED ODD TO SCHEMATRON''' Extract Schematron || file.processedodd || file.isosch || Generate a Schematron file with all rules correctly contextualized. ||  || '''Stylesheets/odds/extract-isosch.xsl''' || Obsolete stuff with &amp;quot;sch&amp;quot; exists alongside iso-sch; former should be removed and latter renamed to &amp;quot;sch&amp;quot;. &lt;br /&gt;
|- &lt;br /&gt;
| 10 || '''COMPILED ODD TO TEI LITE''' Generate TEI Lite from ODD || file.processedodd ($tmpodd in teianttasks.xml; output of odds/odd2odd.xsl) || TEI Lite XML document || odd2lite.xsl ||   || '''Stylesheets/odds/odd2lite.xsl'''; odds/teiodds.xsl; classatts.xsl; common/verbatim.xsl; common/common.xsl; common.tagdocs.xsl;   common/common_param.xsl; common/common_core.xsl; common/common_textstructure.xsl; common/common_header.xsl; common/common_linking.xsl; common/common_msdescription.xsl; common/common_figures.xsl; common/common_textcrit.xsl; common/common_gaiji.xsl; common/i18n.xsl; common/functions.xsl|| This is the prerequisite step for generating XHTML5, ePub and PDF documentation. &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=Mapping_ODD_processing&amp;diff=16792</id>
		<title>Mapping ODD processing</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=Mapping_ODD_processing&amp;diff=16792"/>
		<updated>2020-02-14T16:55:06Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Customization]]&lt;br /&gt;
&lt;br /&gt;
This page is intended to help us map out and document the various processing steps that are applied to [[ODD]] files, both in the current Stylesheets and in a future alternative ODD processor. The main goal is to document the steps in generating TEI schemas from a TEI customization ODD file. However, processing P5 itself is part of that process. And although not our primary goal, we hope to also provide documentation for generating custom documentation from a TEI customization ODD file.&lt;br /&gt;
&lt;br /&gt;
An ''italicized'' name in column A (NAME) indicates a step that is performed for ''building P5'', but not necessarily for generating a customization.&lt;br /&gt;
&lt;br /&gt;
The '''bold''' upper-case term in the NAME column is the term we have agreed to use for the process in question in future documentation. There has been a great deal of confusion over nomenclature which impedes clear discussion of these steps, much of it resulting from the varied naming conventions in use in the Stylesheets code, so establishing a standard set of terms is important.&lt;br /&gt;
&lt;br /&gt;
The '''bold''' stylesheet name in the XSLT FILES column is the one that is called; the others are the ones that the called one imports or includes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! # || NAME || INPUT || OUTPUT FORM || PROCESSES INVOLVED || PREREQS || XSLT FILES || COMMENTS&lt;br /&gt;
|- &lt;br /&gt;
| 1 || ''Generate P5'' || guidelines-[lang].xml || p5.xml || Combine all chapter and spec files into a single document; processing instructions such as the generation of a table for chapter ST are handled. || There must be a repodate.xml file containing an XML representation of the git repo state. || '''TEI/P5/Utilities/expand.xsl''' || *Spec elements occur in specGrp and in div.&lt;br /&gt;
|- &lt;br /&gt;
| 2 || ''Generate P5 Subset'' || p5.xml (generated above) || p5subset.xml; p5subsetDoctored.xml || Create a special cut-down version of P5 which has only divisions and their headers along with all the specs. || Complete guidelines || '''TEI/P5/Utilities/subset.xsl''' || Why are all the div/head elements included? Why is a schemaSpec not created? Is it the case that schemaSpec always and only represents a customization of an existing source, which must eventually chain back to p5subset? If so, ODD is not a generic language; it depends on P5. This also generates the beautiful p5subsetDoctored.xml, which is a hack for DTD production.&lt;br /&gt;
|- &lt;br /&gt;
| 3 || ''Generate JSON from p5subset'' || p5subset.xml || p5subset.json || &amp;amp;#160; || &amp;amp;#160; || '''Stylesheets/odds/odd2json.xsl''', odds/teiodds.xsl, common/common_tagdocs.xsl, common/common_param.xsl, common/functions.xsl, common/i18n.xsl || &amp;amp;#160; &lt;br /&gt;
|- &lt;br /&gt;
| 4 || '''COMPILE ODD'''. Merge ODD customization with P5 source (SR calls this oddexpand; aka tangle aka compile aka process aka odd2odd aka flatten) || ODD customization; p5subset || file.processedodd ('''COMPILED ODD''') || The macrodef oddexpan is called, and that calls odd2odd.xsl with params || p5subset.xml; ODD customization || '''Stylesheets/odds/odd2odd.xsl''' ||  &lt;br /&gt;
|- &lt;br /&gt;
| 5 || '''[[ODD CHAINING]]''' || An ODD customization (#2) whose @source points to another customization (#1) || file.processedodd || #1 undergoes merging with p5subset.xml, then #2 undergoes merging with the result of that. || Both ODDs and p5subset.xml || [See above] || Wrinkle: either #1 or #2 might have components that point out to another source, which would then be imported. See Lou's tutorial [https://teic.github.io/TCW/howtoChain.html]&lt;br /&gt;
|- &lt;br /&gt;
| 6 || '''COMPILED ODD TO RELAXNG''' Generate RELAX NG from processed ODD || file.processedodd (output of rows above) || file.rng || Straight conversion, albeit complicated ||  || '''Stylesheets/odds/odd2relax.xsl'''; odds/teiodds.xsl; odds/classatts.xsl; common/functions.xsl; common/i18n.xsl; common/common_param.xsl || The output is used to generate rnc and xsd using trang. &lt;br /&gt;
|- &lt;br /&gt;
| 7 || '''COMPILED ODD TO DTD''' Generate DTD from ODD || file.processedodd || file.[odd.]dtd || Generate a DTD from the processed ODD file. || &amp;amp;#160; || '''Stylesheets/odds/odd2dtd.xsl''', odds/teiodds.xsl, odds/classatts.xsl, common/i18n.xsl, common/functions.xsl, common/common_param.xsl || &amp;amp;#160; &lt;br /&gt;
|- &lt;br /&gt;
| 8 || '''COMPILED ODD TO XSD''' || file.processedodd || file.xsd || Generate RelaxNG from compiled ODD; convert with Trang to XSD; post-process XSD. || file.processedodd; Trang. || Ant task: '''xsd/build-to.xml'''; xsd/postprocess.xsl || G &lt;br /&gt;
|- &lt;br /&gt;
| 9 || '''COMPILED ODD TO SCHEMATRON''' Extract Schematron || file.processedodd || file.isosch || Generate a Schematron file with all rules correctly contextualized. ||  || '''Stylesheets/odds/extract-isosch.xsl''' || Obsolete stuff with &amp;quot;sch&amp;quot; exists alongside iso-sch; former should be removed and latter renamed to &amp;quot;sch&amp;quot;. &lt;br /&gt;
|- &lt;br /&gt;
| 10 || '''COMPILED ODD TO TEI LITE''' Generate TEI Lite from ODD || file.processedodd ($tmpodd in teianttasks.xml; output of odds/odd2odd.xsl) || TEI Lite XML document || odd2lite.xsl ||   || '''Stylesheets/odds/odd2lite.xsl'''; odds/teiodds.xsl; classatts.xsl; common/verbatim.xsl; common/common.xsl; common.tagdocs.xsl;   common/common_param.xsl; common/common_core.xsl; common/common_textstructure.xsl; common/common_header.xsl; common/common_linking.xsl; common/common_msdescription.xsl; common/common_figures.xsl; common/common_textcrit.xsl; common/common_gaiji.xsl; common/i18n.xsl; common/functions.xsl|| This is the prerequisite step for generating XHTML5, ePub and PDF documentation. &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=SIG:Newspapers%26Periodicals&amp;diff=16689</id>
		<title>SIG:Newspapers&amp;Periodicals</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=SIG:Newspapers%26Periodicals&amp;diff=16689"/>
		<updated>2019-09-17T13:29:31Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SIG convener: Dario Kampkaspar&lt;br /&gt;
&lt;br /&gt;
Co-convener: Mary Isbell&lt;br /&gt;
&lt;br /&gt;
Publications with any kind af regular publication cycle, from several times a day to cycles of several years, arguably form the majority of (printed) texts nowadays. They span from newspapers via almanacs to comics and many others.&lt;br /&gt;
&lt;br /&gt;
While these different types all have their own needs, their periodicity means that there are special questions to keep in mind when systematically encoding them.&lt;br /&gt;
&lt;br /&gt;
The SIG Periodicals and Newspapers will focus on aspects that are common to all these kinds of periodicals:&lt;br /&gt;
&lt;br /&gt;
* how to encode this periodicity with its aspects in a concise and machine readable way;&lt;br /&gt;
* how to deal with parts of periodicals that have their own periodicity (e.g. weekly, monthly etc. additions);&lt;br /&gt;
* how to deal with texts continued over several issues of a perdiodical;&lt;br /&gt;
* how to encode the title of e.g. a newspaper (which usually do not cover an entire page).&lt;br /&gt;
&lt;br /&gt;
Additionally, the SIG will focus on methods and workflows for preparing full texts of periodicals by means of OCR and related technologies.&lt;br /&gt;
&lt;br /&gt;
[[Category:SIG]]&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=SIG:Newspapers%26Periodicals&amp;diff=16688</id>
		<title>SIG:Newspapers&amp;Periodicals</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=SIG:Newspapers%26Periodicals&amp;diff=16688"/>
		<updated>2019-09-17T13:29:09Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SIG convener: Dario Kampkaspar&lt;br /&gt;
Co-convener: Mary Isbell&lt;br /&gt;
&lt;br /&gt;
Pulbications with any kind af regular publication cycle, from several times a day to cycles of several years, arguably form the majority of (printed) texts nowadays. They span from newspapers via almanacs to comics and many others.&lt;br /&gt;
&lt;br /&gt;
While these different types all have their own needs, their periodicity means that there are special questions to keep in mind when systematically encoding them.&lt;br /&gt;
&lt;br /&gt;
The SIG Periodicals and Newspapers will focus on aspects that are common to all these kinds of periodicals:&lt;br /&gt;
&lt;br /&gt;
* how to encode this periodicity with its aspects in a concise and machine readable way;&lt;br /&gt;
* how to deal with parts of periodicals that have their own periodicity (e.g. weekly, monthly etc. additions);&lt;br /&gt;
* how to deal with texts continued over several issues of a perdiodical;&lt;br /&gt;
* how to encode the title of e.g. a newspaper (which usually do not cover an entire page).&lt;br /&gt;
&lt;br /&gt;
Additionally, the SIG will focus on methods and workflows for preparing full texts of periodicals by means of OCR and related technologies.&lt;br /&gt;
&lt;br /&gt;
[[Category:SIG]]&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=Tei-xsl&amp;diff=16675</id>
		<title>Tei-xsl</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=Tei-xsl&amp;diff=16675"/>
		<updated>2019-09-16T20:44:22Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: Updating to fix obsolete info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Tools]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Conversion and preprocessing tools]]&lt;br /&gt;
[[Category:Publishing and delivery tools]]&lt;br /&gt;
[[Category:XSLT]]&lt;br /&gt;
&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
This is a family of XSLT 2.0 stylesheets to transform TEI XML documents to various formats, including XHTML, LaTeX, XSL Formatting Objects, ePub, plain text, RDF, JSON; and to/from Word OOXML (docx) and OpenOfice (odt). They concentrate on the core TEI modules which are used for simple transcription and &amp;quot;born digital&amp;quot; writing. It is important to understand that they do  '''not'''&lt;br /&gt;
* cover ''all'' TEI elements and possible attribute values&lt;br /&gt;
* attempt to define a standard TEI processing or rendering model&lt;br /&gt;
They should not be treated as the definitive view of the TEI Consortium about rendering TEI documents.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== User commentary ==&lt;br /&gt;
'''Please sign all comments.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== System requirements ==&lt;br /&gt;
&amp;quot;The XSL FO style sheets were developed for use with PassiveTeX (http://projects.oucs.ox.ac.uk/passivetex/), a system using XSL formatting objects to render XML to PDF via LaTeX. They have not been extensively tested with the other XSL FO implementations.&amp;quot;&amp;lt;ref&amp;gt;http://www.tei-c.org/release/doc/tei-xsl/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Software dependencies:&lt;br /&gt;
&lt;br /&gt;
* Saxon 9.2 or later, which you can get from https://www.saxonica.com/download/java.xml .&lt;br /&gt;
* ant and ant-contrib. &lt;br /&gt;
&lt;br /&gt;
== Source code and licensing ==&lt;br /&gt;
This software is dual-licensed:&lt;br /&gt;
&lt;br /&gt;
1. Distributed under a Creative Commons Attribution-ShareAlike 3.0&lt;br /&gt;
Unported License http://creativecommons.org/licenses/by-sa/3.0/ &lt;br /&gt;
&lt;br /&gt;
2. http://www.opensource.org/licenses/BSD-2-Clause&lt;br /&gt;
&lt;br /&gt;
== Support for TEI ==&lt;br /&gt;
&lt;br /&gt;
The stylesheets render TEI XML documents to various formats, with the constraint that they do not offer an implementation of all tags,&lt;br /&gt;
and only support a limited range of values for the @rend attribute.&lt;br /&gt;
&lt;br /&gt;
== Language(s) ==&lt;br /&gt;
Documentation is in English.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
http://www.tei-c.org/release/doc/tei-xsl/&lt;br /&gt;
&lt;br /&gt;
Among the components of this package of stylesheets not documented are the following:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;tools/oddbyexample.xsl&amp;lt;/code&amp;gt; &amp;amp;ndash; generates a list of all the attribute values used in the directory of texts you apply it to, in the form of an [[ODD]] file, from which you can in turn generate documentation and schemas using Roma&lt;br /&gt;
* &amp;lt;code&amp;gt;tools/odd2nuodd.xsl&amp;lt;/code&amp;gt; &amp;amp;ndash; switches from a traditional ODD-by-exclusion to a newer form ODD-by-inclusion&lt;br /&gt;
&lt;br /&gt;
=== Creating a custom profile ===&lt;br /&gt;
&lt;br /&gt;
To create a profile for converting to/from a format and TEI XML, create either or both as needed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;profiles/$PROFILENAME/$FORMAT/to.xsl&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;profiles/$PROFILENAME/$FORMAT/from.xsl&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Start by copying the files in &amp;lt;code&amp;gt;profiles/default/$FORMAT/&amp;lt;/code&amp;gt; and then adding your own overrides and/or additional templates.  See [http://listserv.brown.edu/archives/cgi-bin/wa?A2=ind1303&amp;amp;L=TEI-L&amp;amp;F=&amp;amp;S=&amp;amp;P=99998 this brief example of additional templates].&lt;br /&gt;
&lt;br /&gt;
Note that if your &amp;lt;code&amp;gt;$FORMAT&amp;lt;/code&amp;gt; is docx, this directory must contain a file &amp;lt;code&amp;gt;template.docx&amp;lt;/code&amp;gt; which is used to create .docx files from. See the sample in the default profile.&lt;br /&gt;
&lt;br /&gt;
=== Converting from DOCX format ===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;The TEI conversions from docx are better in many ways than the conversions from other the wordprocessing formats. There are also small tricks like having docx styles of 'tei_elementName' to get certain phrase-level elements converted.&amp;quot;&amp;lt;ref&amp;gt;https://listserv.brown.edu/archives/cgi-bin/wa?A2=TEI-L;1123776a.1605&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tech support ==&lt;br /&gt;
Bugs and feature requests should be made in GitHub: https://github.com/TEIC/Stylesheets/issues&lt;br /&gt;
&lt;br /&gt;
== User community ==&lt;br /&gt;
&lt;br /&gt;
== Sample implementations ==&lt;br /&gt;
&lt;br /&gt;
The package includes a number of profiles in the &amp;lt;code&amp;gt;profiles/&amp;lt;/code&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
== Current version number and date of release ==&lt;br /&gt;
&lt;br /&gt;
7.48.0 (2019-07-16)&lt;br /&gt;
&lt;br /&gt;
== History of versions ==&lt;br /&gt;
&lt;br /&gt;
See detailed changelog at https://github.com/TEIC/Stylesheets and automatically generated commit log at https://github.com/TEIC/Stylesheets/commits/master .  Past versions can be downloaded at https://github.com/TEIC/Stylesheets/releases .&lt;br /&gt;
&lt;br /&gt;
== How to download or buy ==&lt;br /&gt;
&lt;br /&gt;
If you use [[Oxygen]], the easiest thing to do might be to use the open-source TEI framework built into &amp;amp;lt;oXygen/&amp;amp;gt;.  Otherwise, there are '''three options''':&lt;br /&gt;
&lt;br /&gt;
=== a) Download zip file ===&lt;br /&gt;
Download the latest zip file from https://github.com/TEIC/Stylesheets/releases .&lt;br /&gt;
&lt;br /&gt;
=== b) Install the Debian package ===&lt;br /&gt;
&lt;br /&gt;
Install the &amp;lt;code&amp;gt;tei-xsl&amp;lt;/code&amp;gt; Debian packages (see https://wiki.tei-c.org/index.php?title=TEIDebian).&lt;br /&gt;
&lt;br /&gt;
=== c) Get from Github ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
git clone git@github.com:TEIC/Stylesheets.git /path/to/local/directory/Stylesheets&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, if you want to add these to &amp;lt;code&amp;gt;/usr/&amp;lt;/code&amp;gt; (which you will need to do in order to use the command-line shell scripts), you can do the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
cd /path/to/local/directory/Stylesheets/&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
make install&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;but note the following&amp;lt;/strong&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* You will need to run &amp;lt;code&amp;gt;make install&amp;lt;/code&amp;gt; as a user with write permission to &amp;lt;code&amp;gt;/usr/&amp;lt;/code&amp;gt; .  So if using Ubuntu, for example, you will need to instead do &amp;lt;code&amp;gt;sudo make install&amp;lt;/code&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
== Additional notes ==&lt;br /&gt;
The XSLT 1.0 version of this stylesheet family, which is no longer actively maintained, can be found on Github at  https://github.com/sebastianrahtz/TEIXSL-v1.git&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=P6-dev&amp;diff=15992</id>
		<title>P6-dev</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=P6-dev&amp;diff=15992"/>
		<updated>2017-11-03T18:03:16Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a place to record ideas which people feel are not appropriate for addition to the TEI P5 Guidelines (perhaps because they break backwards compatibility so extremely) but which they think should be recorded for reconsideration during development of the next major revision of P6.  Things here should probably have had a FR submitted on GitHub first and been turned down for P5. One when we should be thinking about P6 see the final paragraph of the Birnbaum Doctrine: http://www.tei-c.org/Activities/Council/Working/tcw09.xml &lt;br /&gt;
&lt;br /&gt;
With the new (as of Nov. 2015) GitHub issue tracker, TEI Council collects P6 issues with the label [https://github.com/TEIC/TEI/issues?q=is%3Aopen+is%3Aissue+label%3A%22Status%3A+Reconsider+for+P6%22 Reconsider for P6]&lt;br /&gt;
&lt;br /&gt;
* msDesc and other ms* elements should be renamed, since they now refer to text-bearing objects rather than only manuscripts. Perhaps ''tboDesc'' etc.?&lt;br /&gt;
&lt;br /&gt;
* Module fragmentation, e.g. http://purl.org/tei/fr/3490054 asked for splitting off all dateTime related elements into a small module of its own. Ann Arbor 2012 face to face meeting decided this kind of fragmentation should be postponed until P6.&lt;br /&gt;
** Would it be an idea to group all elements that describe ''entities'', if a new element ''object'' would be established? By doing this, the dateTime related elements were splitted &amp;quot;naturally&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Consider placing a restriction on the simultaneous use of @url and @facs on &amp;lt;graphic&amp;gt; (see Council list discussion 2012-06-20). &lt;br /&gt;
&lt;br /&gt;
NOTE: Some of the work on lists has already been done in release 2.7.0.&lt;br /&gt;
* Completely redo handling of lists by:&lt;br /&gt;
** dropping @type&lt;br /&gt;
** introducing @ordered in case the creator of a TEI document wants to record the semantic order of items in the list (but does anyone want to do this? on other elements as well?)&lt;br /&gt;
** using only @rend or @style (pending http://purl.org/TEI/FR/3519866 ) to record bulleted, arabic numbers, roman numerals, etc.&lt;br /&gt;
** redefining handling of &amp;quot;gloss lists&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Consider a proper object-oriented inheritance structure, whereby (for instance) there could be a generic &amp;quot;entity&amp;quot; object, with a core structure, and &amp;quot;person&amp;quot;, &amp;quot;place&amp;quot; and &amp;quot;org&amp;quot; objects could inherit this structure from it. Inheritance would allow overriding of various components of the structure, and specialization of them; for instance, the generic entity might have a start date and an end date, and for the descendant person would refine these into birth and death. We'd have to consider whether multiple inheritance would be practical (for instance, how would you merge the content models of two ancestors)?&lt;br /&gt;
&lt;br /&gt;
* [[Ad-hoc_committee_on_encoding_of_bibliographic_citations#Proposed_future_revisions_to_the_Guidelines_.28which_will_break_backwards_compatibility.29|Things related to encoding of bibliographic citations]]&lt;br /&gt;
&lt;br /&gt;
* An object inheritance model&lt;br /&gt;
&lt;br /&gt;
* A firm distinction between elements used in the header and those used in the text.  For example:&lt;br /&gt;
** There would be one element, with specific attributes and a specific content model, for the title in the metadata and another for any title transcribed in the document)&lt;br /&gt;
** att.global might be separated into a class for attributes on header elements and those on text elements.&lt;br /&gt;
&lt;br /&gt;
* A clear distinction between elements used when transcribing a source document (like bibl) and elements used in creating born-digital documents (like biblStruct and biblFull).  Need to figure out how msDesc fits into this.&lt;br /&gt;
&lt;br /&gt;
* Expansion of [[ODD#Future_plans:_.22Pure_ODD.22|Pure ODD]] to enable us to define the content model of elements based on context; this would be convertible into models based on complexTypes in XSD, and into Schematron in RelaxNG. This would require that we drop support for DTDs (which most agree would be a good idea anyway).&lt;br /&gt;
&lt;br /&gt;
* Go through a list of recent standards and standards updates and recommend how to use TEI in combination with them. Sample recommendations might be (I'm not asserting the truth of any of these):&lt;br /&gt;
** ''If encoders use NISO Z39.84-2005, the DOI may be expected to appear in the  ''idno'' element.''&lt;br /&gt;
** ''None of the bibliographic elements exactly match any of the bibliographic elements in ANSI/NISO Z39.96-2012''&lt;br /&gt;
** ''If reporting on use digital objects using NISO SUSHI, each object with a TEI header should be reported on''&lt;br /&gt;
** ''If linking to resources that are available over both http:// and https:// protocols, it is recommended to use the 'procotol-indepedent' uris starting with // ''&lt;br /&gt;
** ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Suggestions]]&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=A_Proposal_for_Rewriting_the_Stylesheets_Tests&amp;diff=15602</id>
		<title>A Proposal for Rewriting the Stylesheets Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=A_Proposal_for_Rewriting_the_Stylesheets_Tests&amp;diff=15602"/>
		<updated>2017-01-09T00:06:32Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: /* Keep linked resources in separate folders */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==The current state of the tests==&lt;br /&gt;
The Stylesheets Test folder contains the current testing mechanism, and I've been investigating it over the last few weeks. The set of tests clearly grew by accretion with not much in the way of an overall plan, and predictably it has become an over-complicated collection of inconsistencies, obsolescence and mystery. It basically works like this:&lt;br /&gt;
&lt;br /&gt;
# The tests are run using a Makefile (Test/Makefile).&lt;br /&gt;
# The Makefile is divided into a range of targets intended to test different features, such as test-to-html, test-markdown, test-cocoa and so on.&lt;br /&gt;
# Each target contains multiple tests which apply one of the conversions supported by the Stylesheets and then check the result in some way.&lt;br /&gt;
&lt;br /&gt;
The conversions are applied in various different ways:&lt;br /&gt;
&lt;br /&gt;
* By running the symlinked command (e.g. bin/teitohtml) which calls the bin/transformtei script&lt;br /&gt;
* By running ant and passing one of the ant build files such as /docx/build-to.xml&lt;br /&gt;
* By running Saxon and applying one of the XSLT stylesheets directly (such as fo/to.xsl)&lt;br /&gt;
&lt;br /&gt;
There appears to be no rationale governing which method is used to invoke a process.&lt;br /&gt;
&lt;br /&gt;
==Problems with the current tests==&lt;br /&gt;
As I've worked on figuring out how the tests work, I've raised a number of bugs and fixed a few (see for instance GitHub issues 213 through 218). The problems fall into these main categories:&lt;br /&gt;
&lt;br /&gt;
* There are dozens of input test files, and very few of them have meaningful names or helpful comments to explain what they're testing (for instance, test14.xml, test2.xml, test25.xml, test26.xml, test3.xml, test4.xml, test6.xml, test31.xml, test36.xml, test23.xml, test17.xml, test20.xml, test27.xml, test22.xml, test28.xml, test8.xml, test32.xml, test24.xml, test12.xml, test5.xml).&lt;br /&gt;
* Many test files are already invalid or obsolete due to deprecation of various features in recent versions of P5.&lt;br /&gt;
* Different ways of calling the tests (see above) mean that we're not always testing the full process pathway, and it's not clear why.&lt;br /&gt;
* Different test results are handled in very different ways for no apparent reason. For instance, some test results are formatted with xmllint before being compared with their matching expected results file, and some are not.&lt;br /&gt;
* The approach of processing many small files rather than a small number of large ones means that the test process takes longer, because of the repeated necessity to spin up Java VMs.&lt;br /&gt;
* The tests can only be run on *NIX systems which have make installed.&lt;br /&gt;
&lt;br /&gt;
==Principles for rewriting the tests==&lt;br /&gt;
I believe it's time to start again with a new approach to testing, and I think we should adopt these principles in doing so:&lt;br /&gt;
&lt;br /&gt;
===Use Ant rather than make===&lt;br /&gt;
Ant is already used in the test process anyway. If we abandon make and write the whole thing in Ant, there will be a number of advantages:&lt;br /&gt;
&lt;br /&gt;
* One less technology to install and understand.&lt;br /&gt;
* Greater efficiency and therefore speed when other Java-based tasks are invoked.&lt;br /&gt;
* Better documentation and commenting.&lt;br /&gt;
&lt;br /&gt;
I've started rewriting a number of the existing tests in the Stylesheets/Test2 directory, using Ant instead of make, and I've encountered no major obstacles so far.&lt;br /&gt;
&lt;br /&gt;
===Try to support Windows===&lt;br /&gt;
This is difficult but feasible. In the Stylesheets/Test2 directory I've written an ant buildfile called convert.xml which calls a transformation in two different ways based on the platform it's running on. We know that most people working on the Stylesheets currently are using *NIX platforms, but when you need to be on *NIX before you can even call the command line transformations at all, this is hardly a surprise. Many people use Windows, and we ought to do our best not only to support them but to enable them to contribute to the codebase.&lt;br /&gt;
&lt;br /&gt;
===Use smaller numbers of test files===&lt;br /&gt;
Rather than ten small files testing various different things, a better approach would be a single test file which attempts to include a wide range of different features, each documented in-place; adding a new test would then be simpler since it would require only adding a new section to a file rather than constructing a whole new file, which might have features irrelevant to the test which later go stale or obsolete.&lt;br /&gt;
&lt;br /&gt;
===Include test files drawn from P5 Exemplars===&lt;br /&gt;
Despite the fact that they're maintained in a separate repository, the Stylesheets are tightly coupled with P5, and development on the two codebases must proceed largely in lock-step fashion. The Stylesheets tests which relate to ODD processing (creating schemas and documentation in various formats) should be tested using ODD files from the P5 Exemplars folder. This will help to ensure that:&lt;br /&gt;
&lt;br /&gt;
# We're testing all the features people are likely to use most commonly.&lt;br /&gt;
# All P5 changes (assuming we use tei_all as a test file) will be tested as soon as they're introduced, and it should not be so easy for us to neglect to implement Stylesheets support for a P5 change.&lt;br /&gt;
&lt;br /&gt;
===Validate all test input files before using them===&lt;br /&gt;
&lt;br /&gt;
We need to know when a test file goes stale, especially a TEI file. Validation should be part of the test process.&lt;br /&gt;
&lt;br /&gt;
===Name test files meaningfully===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;cocoatest.txt&amp;quot; is more helpful than &amp;quot;test40.txt&amp;quot;, obviously. Where larger files are created to test many things, this is harder, of course.&lt;br /&gt;
&lt;br /&gt;
===Output results into a separate folder===&lt;br /&gt;
&lt;br /&gt;
Right now, all the results go into the same folder as the test files, which means the directory is even more cluttered with &amp;quot;test25.xyz&amp;quot; files, making it harder to see what's happening. Results should go into a &amp;quot;results&amp;quot; folder, alongside the &amp;quot;expected-results&amp;quot; folder.&lt;br /&gt;
&lt;br /&gt;
===Keep linked resources and other libs in separate folders===&lt;br /&gt;
&lt;br /&gt;
The Test folder currently contains linked images, various schemas used for validation, and other bits and pieces such as PERL scripts used for cleanup. These should be organized properly. There are also jar files used for general Stylesheets work (in Stylesheets/lib) and others used only for testing (in Stylesheets/Test/lib), with the result that we have multiple versions of Jing, Saxon etc. We should have a single Stylesheets/lib folder containing everything we need for both transformation and testing, and settle on a single version of each jar.&lt;br /&gt;
&lt;br /&gt;
===Process all X*ML output in the same way after creation===&lt;br /&gt;
&lt;br /&gt;
As mentioned above, some XML files are formatted with xmllint before checking, and some are not; some have comments removed and some don't. A single XSLT transformation (I've started one called cleanForDiff.xsl in Test2) should be applied to all X*ML output files before they're compared with expected results.&lt;br /&gt;
&lt;br /&gt;
===Separate out the Oxygen tests===&lt;br /&gt;
&lt;br /&gt;
The current test process includes some tests which depend on an installation of Oxygen, and run transformations using Oxygen's Ant, as well as saxon9ee.jar. These tests properly belong in the oxygen-tei repo, where we should be doing a much better job of testing anyway (see https://github.com/TEIC/TEI/issues/464, which should be converted to an issue in the oxygen-tei repo at some point).&lt;br /&gt;
&lt;br /&gt;
===Try to imagine an alternative to diffing results===&lt;br /&gt;
&lt;br /&gt;
I don't know what this might be, but I do know that the current approach where any change to the Stylesheets or the input resulting in different output fails the build, and the standard way to fix it is to copy the new output over the &amp;quot;expected results&amp;quot; file. It is all too easy to do this without enough care and attention, and to miss unpredicted or unexpected changes hiding alongside expected changes. If we process fewer files in the first place, and strongly encourage the use of good diff tools whenever results change, we can probably do better here, but perhaps there are other approaches to this sort of testing that would help.&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=A_Proposal_for_Rewriting_the_Stylesheets_Tests&amp;diff=15601</id>
		<title>A Proposal for Rewriting the Stylesheets Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=A_Proposal_for_Rewriting_the_Stylesheets_Tests&amp;diff=15601"/>
		<updated>2017-01-09T00:03:44Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: /* Separate out the Oxygen tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==The current state of the tests==&lt;br /&gt;
The Stylesheets Test folder contains the current testing mechanism, and I've been investigating it over the last few weeks. The set of tests clearly grew by accretion with not much in the way of an overall plan, and predictably it has become an over-complicated collection of inconsistencies, obsolescence and mystery. It basically works like this:&lt;br /&gt;
&lt;br /&gt;
# The tests are run using a Makefile (Test/Makefile).&lt;br /&gt;
# The Makefile is divided into a range of targets intended to test different features, such as test-to-html, test-markdown, test-cocoa and so on.&lt;br /&gt;
# Each target contains multiple tests which apply one of the conversions supported by the Stylesheets and then check the result in some way.&lt;br /&gt;
&lt;br /&gt;
The conversions are applied in various different ways:&lt;br /&gt;
&lt;br /&gt;
* By running the symlinked command (e.g. bin/teitohtml) which calls the bin/transformtei script&lt;br /&gt;
* By running ant and passing one of the ant build files such as /docx/build-to.xml&lt;br /&gt;
* By running Saxon and applying one of the XSLT stylesheets directly (such as fo/to.xsl)&lt;br /&gt;
&lt;br /&gt;
There appears to be no rationale governing which method is used to invoke a process.&lt;br /&gt;
&lt;br /&gt;
==Problems with the current tests==&lt;br /&gt;
As I've worked on figuring out how the tests work, I've raised a number of bugs and fixed a few (see for instance GitHub issues 213 through 218). The problems fall into these main categories:&lt;br /&gt;
&lt;br /&gt;
* There are dozens of input test files, and very few of them have meaningful names or helpful comments to explain what they're testing (for instance, test14.xml, test2.xml, test25.xml, test26.xml, test3.xml, test4.xml, test6.xml, test31.xml, test36.xml, test23.xml, test17.xml, test20.xml, test27.xml, test22.xml, test28.xml, test8.xml, test32.xml, test24.xml, test12.xml, test5.xml).&lt;br /&gt;
* Many test files are already invalid or obsolete due to deprecation of various features in recent versions of P5.&lt;br /&gt;
* Different ways of calling the tests (see above) mean that we're not always testing the full process pathway, and it's not clear why.&lt;br /&gt;
* Different test results are handled in very different ways for no apparent reason. For instance, some test results are formatted with xmllint before being compared with their matching expected results file, and some are not.&lt;br /&gt;
* The approach of processing many small files rather than a small number of large ones means that the test process takes longer, because of the repeated necessity to spin up Java VMs.&lt;br /&gt;
* The tests can only be run on *NIX systems which have make installed.&lt;br /&gt;
&lt;br /&gt;
==Principles for rewriting the tests==&lt;br /&gt;
I believe it's time to start again with a new approach to testing, and I think we should adopt these principles in doing so:&lt;br /&gt;
&lt;br /&gt;
===Use Ant rather than make===&lt;br /&gt;
Ant is already used in the test process anyway. If we abandon make and write the whole thing in Ant, there will be a number of advantages:&lt;br /&gt;
&lt;br /&gt;
* One less technology to install and understand.&lt;br /&gt;
* Greater efficiency and therefore speed when other Java-based tasks are invoked.&lt;br /&gt;
* Better documentation and commenting.&lt;br /&gt;
&lt;br /&gt;
I've started rewriting a number of the existing tests in the Stylesheets/Test2 directory, using Ant instead of make, and I've encountered no major obstacles so far.&lt;br /&gt;
&lt;br /&gt;
===Try to support Windows===&lt;br /&gt;
This is difficult but feasible. In the Stylesheets/Test2 directory I've written an ant buildfile called convert.xml which calls a transformation in two different ways based on the platform it's running on. We know that most people working on the Stylesheets currently are using *NIX platforms, but when you need to be on *NIX before you can even call the command line transformations at all, this is hardly a surprise. Many people use Windows, and we ought to do our best not only to support them but to enable them to contribute to the codebase.&lt;br /&gt;
&lt;br /&gt;
===Use smaller numbers of test files===&lt;br /&gt;
Rather than ten small files testing various different things, a better approach would be a single test file which attempts to include a wide range of different features, each documented in-place; adding a new test would then be simpler since it would require only adding a new section to a file rather than constructing a whole new file, which might have features irrelevant to the test which later go stale or obsolete.&lt;br /&gt;
&lt;br /&gt;
===Include test files drawn from P5 Exemplars===&lt;br /&gt;
Despite the fact that they're maintained in a separate repository, the Stylesheets are tightly coupled with P5, and development on the two codebases must proceed largely in lock-step fashion. The Stylesheets tests which relate to ODD processing (creating schemas and documentation in various formats) should be tested using ODD files from the P5 Exemplars folder. This will help to ensure that:&lt;br /&gt;
&lt;br /&gt;
# We're testing all the features people are likely to use most commonly.&lt;br /&gt;
# All P5 changes (assuming we use tei_all as a test file) will be tested as soon as they're introduced, and it should not be so easy for us to neglect to implement Stylesheets support for a P5 change.&lt;br /&gt;
&lt;br /&gt;
===Validate all test input files before using them===&lt;br /&gt;
&lt;br /&gt;
We need to know when a test file goes stale, especially a TEI file. Validation should be part of the test process.&lt;br /&gt;
&lt;br /&gt;
===Name test files meaningfully===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;cocoatest.txt&amp;quot; is more helpful than &amp;quot;test40.txt&amp;quot;, obviously. Where larger files are created to test many things, this is harder, of course.&lt;br /&gt;
&lt;br /&gt;
===Output results into a separate folder===&lt;br /&gt;
&lt;br /&gt;
Right now, all the results go into the same folder as the test files, which means the directory is even more cluttered with &amp;quot;test25.xyz&amp;quot; files, making it harder to see what's happening. Results should go into a &amp;quot;results&amp;quot; folder, alongside the &amp;quot;expected-results&amp;quot; folder.&lt;br /&gt;
&lt;br /&gt;
===Keep linked resources in separate folders===&lt;br /&gt;
&lt;br /&gt;
The Test folder currently contains linked images, various schemas used for validation, and other bits and pieces such as PERL scripts used for cleanup. These should be organized properly.&lt;br /&gt;
&lt;br /&gt;
===Process all X*ML output in the same way after creation===&lt;br /&gt;
&lt;br /&gt;
As mentioned above, some XML files are formatted with xmllint before checking, and some are not; some have comments removed and some don't. A single XSLT transformation (I've started one called cleanForDiff.xsl in Test2) should be applied to all X*ML output files before they're compared with expected results.&lt;br /&gt;
&lt;br /&gt;
===Separate out the Oxygen tests===&lt;br /&gt;
&lt;br /&gt;
The current test process includes some tests which depend on an installation of Oxygen, and run transformations using Oxygen's Ant, as well as saxon9ee.jar. These tests properly belong in the oxygen-tei repo, where we should be doing a much better job of testing anyway (see https://github.com/TEIC/TEI/issues/464, which should be converted to an issue in the oxygen-tei repo at some point).&lt;br /&gt;
&lt;br /&gt;
===Try to imagine an alternative to diffing results===&lt;br /&gt;
&lt;br /&gt;
I don't know what this might be, but I do know that the current approach where any change to the Stylesheets or the input resulting in different output fails the build, and the standard way to fix it is to copy the new output over the &amp;quot;expected results&amp;quot; file. It is all too easy to do this without enough care and attention, and to miss unpredicted or unexpected changes hiding alongside expected changes. If we process fewer files in the first place, and strongly encourage the use of good diff tools whenever results change, we can probably do better here, but perhaps there are other approaches to this sort of testing that would help.&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=A_Proposal_for_Rewriting_the_Stylesheets_Tests&amp;diff=15600</id>
		<title>A Proposal for Rewriting the Stylesheets Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=A_Proposal_for_Rewriting_the_Stylesheets_Tests&amp;diff=15600"/>
		<updated>2017-01-09T00:02:35Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: /* Validate all test input files before using them */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==The current state of the tests==&lt;br /&gt;
The Stylesheets Test folder contains the current testing mechanism, and I've been investigating it over the last few weeks. The set of tests clearly grew by accretion with not much in the way of an overall plan, and predictably it has become an over-complicated collection of inconsistencies, obsolescence and mystery. It basically works like this:&lt;br /&gt;
&lt;br /&gt;
# The tests are run using a Makefile (Test/Makefile).&lt;br /&gt;
# The Makefile is divided into a range of targets intended to test different features, such as test-to-html, test-markdown, test-cocoa and so on.&lt;br /&gt;
# Each target contains multiple tests which apply one of the conversions supported by the Stylesheets and then check the result in some way.&lt;br /&gt;
&lt;br /&gt;
The conversions are applied in various different ways:&lt;br /&gt;
&lt;br /&gt;
* By running the symlinked command (e.g. bin/teitohtml) which calls the bin/transformtei script&lt;br /&gt;
* By running ant and passing one of the ant build files such as /docx/build-to.xml&lt;br /&gt;
* By running Saxon and applying one of the XSLT stylesheets directly (such as fo/to.xsl)&lt;br /&gt;
&lt;br /&gt;
There appears to be no rationale governing which method is used to invoke a process.&lt;br /&gt;
&lt;br /&gt;
==Problems with the current tests==&lt;br /&gt;
As I've worked on figuring out how the tests work, I've raised a number of bugs and fixed a few (see for instance GitHub issues 213 through 218). The problems fall into these main categories:&lt;br /&gt;
&lt;br /&gt;
* There are dozens of input test files, and very few of them have meaningful names or helpful comments to explain what they're testing (for instance, test14.xml, test2.xml, test25.xml, test26.xml, test3.xml, test4.xml, test6.xml, test31.xml, test36.xml, test23.xml, test17.xml, test20.xml, test27.xml, test22.xml, test28.xml, test8.xml, test32.xml, test24.xml, test12.xml, test5.xml).&lt;br /&gt;
* Many test files are already invalid or obsolete due to deprecation of various features in recent versions of P5.&lt;br /&gt;
* Different ways of calling the tests (see above) mean that we're not always testing the full process pathway, and it's not clear why.&lt;br /&gt;
* Different test results are handled in very different ways for no apparent reason. For instance, some test results are formatted with xmllint before being compared with their matching expected results file, and some are not.&lt;br /&gt;
* The approach of processing many small files rather than a small number of large ones means that the test process takes longer, because of the repeated necessity to spin up Java VMs.&lt;br /&gt;
* The tests can only be run on *NIX systems which have make installed.&lt;br /&gt;
&lt;br /&gt;
==Principles for rewriting the tests==&lt;br /&gt;
I believe it's time to start again with a new approach to testing, and I think we should adopt these principles in doing so:&lt;br /&gt;
&lt;br /&gt;
===Use Ant rather than make===&lt;br /&gt;
Ant is already used in the test process anyway. If we abandon make and write the whole thing in Ant, there will be a number of advantages:&lt;br /&gt;
&lt;br /&gt;
* One less technology to install and understand.&lt;br /&gt;
* Greater efficiency and therefore speed when other Java-based tasks are invoked.&lt;br /&gt;
* Better documentation and commenting.&lt;br /&gt;
&lt;br /&gt;
I've started rewriting a number of the existing tests in the Stylesheets/Test2 directory, using Ant instead of make, and I've encountered no major obstacles so far.&lt;br /&gt;
&lt;br /&gt;
===Try to support Windows===&lt;br /&gt;
This is difficult but feasible. In the Stylesheets/Test2 directory I've written an ant buildfile called convert.xml which calls a transformation in two different ways based on the platform it's running on. We know that most people working on the Stylesheets currently are using *NIX platforms, but when you need to be on *NIX before you can even call the command line transformations at all, this is hardly a surprise. Many people use Windows, and we ought to do our best not only to support them but to enable them to contribute to the codebase.&lt;br /&gt;
&lt;br /&gt;
===Use smaller numbers of test files===&lt;br /&gt;
Rather than ten small files testing various different things, a better approach would be a single test file which attempts to include a wide range of different features, each documented in-place; adding a new test would then be simpler since it would require only adding a new section to a file rather than constructing a whole new file, which might have features irrelevant to the test which later go stale or obsolete.&lt;br /&gt;
&lt;br /&gt;
===Include test files drawn from P5 Exemplars===&lt;br /&gt;
Despite the fact that they're maintained in a separate repository, the Stylesheets are tightly coupled with P5, and development on the two codebases must proceed largely in lock-step fashion. The Stylesheets tests which relate to ODD processing (creating schemas and documentation in various formats) should be tested using ODD files from the P5 Exemplars folder. This will help to ensure that:&lt;br /&gt;
&lt;br /&gt;
# We're testing all the features people are likely to use most commonly.&lt;br /&gt;
# All P5 changes (assuming we use tei_all as a test file) will be tested as soon as they're introduced, and it should not be so easy for us to neglect to implement Stylesheets support for a P5 change.&lt;br /&gt;
&lt;br /&gt;
===Validate all test input files before using them===&lt;br /&gt;
&lt;br /&gt;
We need to know when a test file goes stale, especially a TEI file. Validation should be part of the test process.&lt;br /&gt;
&lt;br /&gt;
===Name test files meaningfully===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;cocoatest.txt&amp;quot; is more helpful than &amp;quot;test40.txt&amp;quot;, obviously. Where larger files are created to test many things, this is harder, of course.&lt;br /&gt;
&lt;br /&gt;
===Output results into a separate folder===&lt;br /&gt;
&lt;br /&gt;
Right now, all the results go into the same folder as the test files, which means the directory is even more cluttered with &amp;quot;test25.xyz&amp;quot; files, making it harder to see what's happening. Results should go into a &amp;quot;results&amp;quot; folder, alongside the &amp;quot;expected-results&amp;quot; folder.&lt;br /&gt;
&lt;br /&gt;
===Keep linked resources in separate folders===&lt;br /&gt;
&lt;br /&gt;
The Test folder currently contains linked images, various schemas used for validation, and other bits and pieces such as PERL scripts used for cleanup. These should be organized properly.&lt;br /&gt;
&lt;br /&gt;
===Process all X*ML output in the same way after creation===&lt;br /&gt;
&lt;br /&gt;
As mentioned above, some XML files are formatted with xmllint before checking, and some are not; some have comments removed and some don't. A single XSLT transformation (I've started one called cleanForDiff.xsl in Test2) should be applied to all X*ML output files before they're compared with expected results.&lt;br /&gt;
&lt;br /&gt;
===Separate out the Oxygen tests===&lt;br /&gt;
&lt;br /&gt;
The current test process includes some tests which depend on an installation of Oxygen, and run transformations using Oxygen's Ant, as well as saxon8ee.jar. These tests properly belong in the oxygen-tei repo, where we should be doing a much better job of testing anyway (see https://github.com/TEIC/TEI/issues/464, which should be converted to an issue in the oxygen-tei repo at some point).&lt;br /&gt;
&lt;br /&gt;
===Try to imagine an alternative to diffing results===&lt;br /&gt;
&lt;br /&gt;
I don't know what this might be, but I do know that the current approach where any change to the Stylesheets or the input resulting in different output fails the build, and the standard way to fix it is to copy the new output over the &amp;quot;expected results&amp;quot; file. It is all too easy to do this without enough care and attention, and to miss unpredicted or unexpected changes hiding alongside expected changes. If we process fewer files in the first place, and strongly encourage the use of good diff tools whenever results change, we can probably do better here, but perhaps there are other approaches to this sort of testing that would help.&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=A_Proposal_for_Rewriting_the_Stylesheets_Tests&amp;diff=15599</id>
		<title>A Proposal for Rewriting the Stylesheets Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=A_Proposal_for_Rewriting_the_Stylesheets_Tests&amp;diff=15599"/>
		<updated>2017-01-09T00:01:48Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: /* Include test files drawn from P5 Exemplars */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==The current state of the tests==&lt;br /&gt;
The Stylesheets Test folder contains the current testing mechanism, and I've been investigating it over the last few weeks. The set of tests clearly grew by accretion with not much in the way of an overall plan, and predictably it has become an over-complicated collection of inconsistencies, obsolescence and mystery. It basically works like this:&lt;br /&gt;
&lt;br /&gt;
# The tests are run using a Makefile (Test/Makefile).&lt;br /&gt;
# The Makefile is divided into a range of targets intended to test different features, such as test-to-html, test-markdown, test-cocoa and so on.&lt;br /&gt;
# Each target contains multiple tests which apply one of the conversions supported by the Stylesheets and then check the result in some way.&lt;br /&gt;
&lt;br /&gt;
The conversions are applied in various different ways:&lt;br /&gt;
&lt;br /&gt;
* By running the symlinked command (e.g. bin/teitohtml) which calls the bin/transformtei script&lt;br /&gt;
* By running ant and passing one of the ant build files such as /docx/build-to.xml&lt;br /&gt;
* By running Saxon and applying one of the XSLT stylesheets directly (such as fo/to.xsl)&lt;br /&gt;
&lt;br /&gt;
There appears to be no rationale governing which method is used to invoke a process.&lt;br /&gt;
&lt;br /&gt;
==Problems with the current tests==&lt;br /&gt;
As I've worked on figuring out how the tests work, I've raised a number of bugs and fixed a few (see for instance GitHub issues 213 through 218). The problems fall into these main categories:&lt;br /&gt;
&lt;br /&gt;
* There are dozens of input test files, and very few of them have meaningful names or helpful comments to explain what they're testing (for instance, test14.xml, test2.xml, test25.xml, test26.xml, test3.xml, test4.xml, test6.xml, test31.xml, test36.xml, test23.xml, test17.xml, test20.xml, test27.xml, test22.xml, test28.xml, test8.xml, test32.xml, test24.xml, test12.xml, test5.xml).&lt;br /&gt;
* Many test files are already invalid or obsolete due to deprecation of various features in recent versions of P5.&lt;br /&gt;
* Different ways of calling the tests (see above) mean that we're not always testing the full process pathway, and it's not clear why.&lt;br /&gt;
* Different test results are handled in very different ways for no apparent reason. For instance, some test results are formatted with xmllint before being compared with their matching expected results file, and some are not.&lt;br /&gt;
* The approach of processing many small files rather than a small number of large ones means that the test process takes longer, because of the repeated necessity to spin up Java VMs.&lt;br /&gt;
* The tests can only be run on *NIX systems which have make installed.&lt;br /&gt;
&lt;br /&gt;
==Principles for rewriting the tests==&lt;br /&gt;
I believe it's time to start again with a new approach to testing, and I think we should adopt these principles in doing so:&lt;br /&gt;
&lt;br /&gt;
===Use Ant rather than make===&lt;br /&gt;
Ant is already used in the test process anyway. If we abandon make and write the whole thing in Ant, there will be a number of advantages:&lt;br /&gt;
&lt;br /&gt;
* One less technology to install and understand.&lt;br /&gt;
* Greater efficiency and therefore speed when other Java-based tasks are invoked.&lt;br /&gt;
* Better documentation and commenting.&lt;br /&gt;
&lt;br /&gt;
I've started rewriting a number of the existing tests in the Stylesheets/Test2 directory, using Ant instead of make, and I've encountered no major obstacles so far.&lt;br /&gt;
&lt;br /&gt;
===Try to support Windows===&lt;br /&gt;
This is difficult but feasible. In the Stylesheets/Test2 directory I've written an ant buildfile called convert.xml which calls a transformation in two different ways based on the platform it's running on. We know that most people working on the Stylesheets currently are using *NIX platforms, but when you need to be on *NIX before you can even call the command line transformations at all, this is hardly a surprise. Many people use Windows, and we ought to do our best not only to support them but to enable them to contribute to the codebase.&lt;br /&gt;
&lt;br /&gt;
===Use smaller numbers of test files===&lt;br /&gt;
Rather than ten small files testing various different things, a better approach would be a single test file which attempts to include a wide range of different features, each documented in-place; adding a new test would then be simpler since it would require only adding a new section to a file rather than constructing a whole new file, which might have features irrelevant to the test which later go stale or obsolete.&lt;br /&gt;
&lt;br /&gt;
===Include test files drawn from P5 Exemplars===&lt;br /&gt;
Despite the fact that they're maintained in a separate repository, the Stylesheets are tightly coupled with P5, and development on the two codebases must proceed largely in lock-step fashion. The Stylesheets tests which relate to ODD processing (creating schemas and documentation in various formats) should be tested using ODD files from the P5 Exemplars folder. This will help to ensure that:&lt;br /&gt;
&lt;br /&gt;
# We're testing all the features people are likely to use most commonly.&lt;br /&gt;
# All P5 changes (assuming we use tei_all as a test file) will be tested as soon as they're introduced, and it should not be so easy for us to neglect to implement Stylesheets support for a P5 change.&lt;br /&gt;
&lt;br /&gt;
===Validate all test input files before using them===&lt;br /&gt;
&lt;br /&gt;
We need to know when a test file goes stale, especially a TEI file.&lt;br /&gt;
&lt;br /&gt;
===Name test files meaningfully===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;cocoatest.txt&amp;quot; is more helpful than &amp;quot;test40.txt&amp;quot;, obviously. Where larger files are created to test many things, this is harder, of course.&lt;br /&gt;
&lt;br /&gt;
===Output results into a separate folder===&lt;br /&gt;
&lt;br /&gt;
Right now, all the results go into the same folder as the test files, which means the directory is even more cluttered with &amp;quot;test25.xyz&amp;quot; files, making it harder to see what's happening. Results should go into a &amp;quot;results&amp;quot; folder, alongside the &amp;quot;expected-results&amp;quot; folder.&lt;br /&gt;
&lt;br /&gt;
===Keep linked resources in separate folders===&lt;br /&gt;
&lt;br /&gt;
The Test folder currently contains linked images, various schemas used for validation, and other bits and pieces such as PERL scripts used for cleanup. These should be organized properly.&lt;br /&gt;
&lt;br /&gt;
===Process all X*ML output in the same way after creation===&lt;br /&gt;
&lt;br /&gt;
As mentioned above, some XML files are formatted with xmllint before checking, and some are not; some have comments removed and some don't. A single XSLT transformation (I've started one called cleanForDiff.xsl in Test2) should be applied to all X*ML output files before they're compared with expected results.&lt;br /&gt;
&lt;br /&gt;
===Separate out the Oxygen tests===&lt;br /&gt;
&lt;br /&gt;
The current test process includes some tests which depend on an installation of Oxygen, and run transformations using Oxygen's Ant, as well as saxon8ee.jar. These tests properly belong in the oxygen-tei repo, where we should be doing a much better job of testing anyway (see https://github.com/TEIC/TEI/issues/464, which should be converted to an issue in the oxygen-tei repo at some point).&lt;br /&gt;
&lt;br /&gt;
===Try to imagine an alternative to diffing results===&lt;br /&gt;
&lt;br /&gt;
I don't know what this might be, but I do know that the current approach where any change to the Stylesheets or the input resulting in different output fails the build, and the standard way to fix it is to copy the new output over the &amp;quot;expected results&amp;quot; file. It is all too easy to do this without enough care and attention, and to miss unpredicted or unexpected changes hiding alongside expected changes. If we process fewer files in the first place, and strongly encourage the use of good diff tools whenever results change, we can probably do better here, but perhaps there are other approaches to this sort of testing that would help.&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=A_Proposal_for_Rewriting_the_Stylesheets_Tests&amp;diff=15598</id>
		<title>A Proposal for Rewriting the Stylesheets Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=A_Proposal_for_Rewriting_the_Stylesheets_Tests&amp;diff=15598"/>
		<updated>2017-01-09T00:00:55Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: /* Try to support Windows */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==The current state of the tests==&lt;br /&gt;
The Stylesheets Test folder contains the current testing mechanism, and I've been investigating it over the last few weeks. The set of tests clearly grew by accretion with not much in the way of an overall plan, and predictably it has become an over-complicated collection of inconsistencies, obsolescence and mystery. It basically works like this:&lt;br /&gt;
&lt;br /&gt;
# The tests are run using a Makefile (Test/Makefile).&lt;br /&gt;
# The Makefile is divided into a range of targets intended to test different features, such as test-to-html, test-markdown, test-cocoa and so on.&lt;br /&gt;
# Each target contains multiple tests which apply one of the conversions supported by the Stylesheets and then check the result in some way.&lt;br /&gt;
&lt;br /&gt;
The conversions are applied in various different ways:&lt;br /&gt;
&lt;br /&gt;
* By running the symlinked command (e.g. bin/teitohtml) which calls the bin/transformtei script&lt;br /&gt;
* By running ant and passing one of the ant build files such as /docx/build-to.xml&lt;br /&gt;
* By running Saxon and applying one of the XSLT stylesheets directly (such as fo/to.xsl)&lt;br /&gt;
&lt;br /&gt;
There appears to be no rationale governing which method is used to invoke a process.&lt;br /&gt;
&lt;br /&gt;
==Problems with the current tests==&lt;br /&gt;
As I've worked on figuring out how the tests work, I've raised a number of bugs and fixed a few (see for instance GitHub issues 213 through 218). The problems fall into these main categories:&lt;br /&gt;
&lt;br /&gt;
* There are dozens of input test files, and very few of them have meaningful names or helpful comments to explain what they're testing (for instance, test14.xml, test2.xml, test25.xml, test26.xml, test3.xml, test4.xml, test6.xml, test31.xml, test36.xml, test23.xml, test17.xml, test20.xml, test27.xml, test22.xml, test28.xml, test8.xml, test32.xml, test24.xml, test12.xml, test5.xml).&lt;br /&gt;
* Many test files are already invalid or obsolete due to deprecation of various features in recent versions of P5.&lt;br /&gt;
* Different ways of calling the tests (see above) mean that we're not always testing the full process pathway, and it's not clear why.&lt;br /&gt;
* Different test results are handled in very different ways for no apparent reason. For instance, some test results are formatted with xmllint before being compared with their matching expected results file, and some are not.&lt;br /&gt;
* The approach of processing many small files rather than a small number of large ones means that the test process takes longer, because of the repeated necessity to spin up Java VMs.&lt;br /&gt;
* The tests can only be run on *NIX systems which have make installed.&lt;br /&gt;
&lt;br /&gt;
==Principles for rewriting the tests==&lt;br /&gt;
I believe it's time to start again with a new approach to testing, and I think we should adopt these principles in doing so:&lt;br /&gt;
&lt;br /&gt;
===Use Ant rather than make===&lt;br /&gt;
Ant is already used in the test process anyway. If we abandon make and write the whole thing in Ant, there will be a number of advantages:&lt;br /&gt;
&lt;br /&gt;
* One less technology to install and understand.&lt;br /&gt;
* Greater efficiency and therefore speed when other Java-based tasks are invoked.&lt;br /&gt;
* Better documentation and commenting.&lt;br /&gt;
&lt;br /&gt;
I've started rewriting a number of the existing tests in the Stylesheets/Test2 directory, using Ant instead of make, and I've encountered no major obstacles so far.&lt;br /&gt;
&lt;br /&gt;
===Try to support Windows===&lt;br /&gt;
This is difficult but feasible. In the Stylesheets/Test2 directory I've written an ant buildfile called convert.xml which calls a transformation in two different ways based on the platform it's running on. We know that most people working on the Stylesheets currently are using *NIX platforms, but when you need to be on *NIX before you can even call the command line transformations at all, this is hardly a surprise. Many people use Windows, and we ought to do our best not only to support them but to enable them to contribute to the codebase.&lt;br /&gt;
&lt;br /&gt;
===Use smaller numbers of test files===&lt;br /&gt;
Rather than ten small files testing various different things, a better approach would be a single test file which attempts to include a wide range of different features, each documented in-place; adding a new test would then be simpler since it would require only adding a new section to a file rather than constructing a whole new file, which might have features irrelevant to the test which later go stale or obsolete.&lt;br /&gt;
&lt;br /&gt;
===Include test files drawn from P5 Exemplars===&lt;br /&gt;
Despite the fact that they're maintained in a separate repository, the Stylesheets are tightly coupled with P5, and development on the two codebases must proceed largely in lock-step fashion. The Stylesheets tests which relate to ODD processing (creating schemas and documentation in various formats) should be tested using ODD files from the P5 Exemplars folder. This will help to ensure that:&lt;br /&gt;
&lt;br /&gt;
1. We're testing all the features people are likely to use most commonly.&lt;br /&gt;
2. All P5 changes (assuming we use tei_all as a test file) will be tested as soon as they're introduced, and it should not be so easy for us to neglect to implement Stylesheets support for a P5 change.&lt;br /&gt;
&lt;br /&gt;
===Validate all test input files before using them===&lt;br /&gt;
&lt;br /&gt;
We need to know when a test file goes stale, especially a TEI file.&lt;br /&gt;
&lt;br /&gt;
===Name test files meaningfully===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;cocoatest.txt&amp;quot; is more helpful than &amp;quot;test40.txt&amp;quot;, obviously. Where larger files are created to test many things, this is harder, of course.&lt;br /&gt;
&lt;br /&gt;
===Output results into a separate folder===&lt;br /&gt;
&lt;br /&gt;
Right now, all the results go into the same folder as the test files, which means the directory is even more cluttered with &amp;quot;test25.xyz&amp;quot; files, making it harder to see what's happening. Results should go into a &amp;quot;results&amp;quot; folder, alongside the &amp;quot;expected-results&amp;quot; folder.&lt;br /&gt;
&lt;br /&gt;
===Keep linked resources in separate folders===&lt;br /&gt;
&lt;br /&gt;
The Test folder currently contains linked images, various schemas used for validation, and other bits and pieces such as PERL scripts used for cleanup. These should be organized properly.&lt;br /&gt;
&lt;br /&gt;
===Process all X*ML output in the same way after creation===&lt;br /&gt;
&lt;br /&gt;
As mentioned above, some XML files are formatted with xmllint before checking, and some are not; some have comments removed and some don't. A single XSLT transformation (I've started one called cleanForDiff.xsl in Test2) should be applied to all X*ML output files before they're compared with expected results.&lt;br /&gt;
&lt;br /&gt;
===Separate out the Oxygen tests===&lt;br /&gt;
&lt;br /&gt;
The current test process includes some tests which depend on an installation of Oxygen, and run transformations using Oxygen's Ant, as well as saxon8ee.jar. These tests properly belong in the oxygen-tei repo, where we should be doing a much better job of testing anyway (see https://github.com/TEIC/TEI/issues/464, which should be converted to an issue in the oxygen-tei repo at some point).&lt;br /&gt;
&lt;br /&gt;
===Try to imagine an alternative to diffing results===&lt;br /&gt;
&lt;br /&gt;
I don't know what this might be, but I do know that the current approach where any change to the Stylesheets or the input resulting in different output fails the build, and the standard way to fix it is to copy the new output over the &amp;quot;expected results&amp;quot; file. It is all too easy to do this without enough care and attention, and to miss unpredicted or unexpected changes hiding alongside expected changes. If we process fewer files in the first place, and strongly encourage the use of good diff tools whenever results change, we can probably do better here, but perhaps there are other approaches to this sort of testing that would help.&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=A_Proposal_for_Rewriting_the_Stylesheets_Tests&amp;diff=15597</id>
		<title>A Proposal for Rewriting the Stylesheets Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=A_Proposal_for_Rewriting_the_Stylesheets_Tests&amp;diff=15597"/>
		<updated>2017-01-08T23:58:52Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: /* Separate out the Oxygen tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==The current state of the tests==&lt;br /&gt;
The Stylesheets Test folder contains the current testing mechanism, and I've been investigating it over the last few weeks. The set of tests clearly grew by accretion with not much in the way of an overall plan, and predictably it has become an over-complicated collection of inconsistencies, obsolescence and mystery. It basically works like this:&lt;br /&gt;
&lt;br /&gt;
# The tests are run using a Makefile (Test/Makefile).&lt;br /&gt;
# The Makefile is divided into a range of targets intended to test different features, such as test-to-html, test-markdown, test-cocoa and so on.&lt;br /&gt;
# Each target contains multiple tests which apply one of the conversions supported by the Stylesheets and then check the result in some way.&lt;br /&gt;
&lt;br /&gt;
The conversions are applied in various different ways:&lt;br /&gt;
&lt;br /&gt;
* By running the symlinked command (e.g. bin/teitohtml) which calls the bin/transformtei script&lt;br /&gt;
* By running ant and passing one of the ant build files such as /docx/build-to.xml&lt;br /&gt;
* By running Saxon and applying one of the XSLT stylesheets directly (such as fo/to.xsl)&lt;br /&gt;
&lt;br /&gt;
There appears to be no rationale governing which method is used to invoke a process.&lt;br /&gt;
&lt;br /&gt;
==Problems with the current tests==&lt;br /&gt;
As I've worked on figuring out how the tests work, I've raised a number of bugs and fixed a few (see for instance GitHub issues 213 through 218). The problems fall into these main categories:&lt;br /&gt;
&lt;br /&gt;
* There are dozens of input test files, and very few of them have meaningful names or helpful comments to explain what they're testing (for instance, test14.xml, test2.xml, test25.xml, test26.xml, test3.xml, test4.xml, test6.xml, test31.xml, test36.xml, test23.xml, test17.xml, test20.xml, test27.xml, test22.xml, test28.xml, test8.xml, test32.xml, test24.xml, test12.xml, test5.xml).&lt;br /&gt;
* Many test files are already invalid or obsolete due to deprecation of various features in recent versions of P5.&lt;br /&gt;
* Different ways of calling the tests (see above) mean that we're not always testing the full process pathway, and it's not clear why.&lt;br /&gt;
* Different test results are handled in very different ways for no apparent reason. For instance, some test results are formatted with xmllint before being compared with their matching expected results file, and some are not.&lt;br /&gt;
* The approach of processing many small files rather than a small number of large ones means that the test process takes longer, because of the repeated necessity to spin up Java VMs.&lt;br /&gt;
* The tests can only be run on *NIX systems which have make installed.&lt;br /&gt;
&lt;br /&gt;
==Principles for rewriting the tests==&lt;br /&gt;
I believe it's time to start again with a new approach to testing, and I think we should adopt these principles in doing so:&lt;br /&gt;
&lt;br /&gt;
===Use Ant rather than make===&lt;br /&gt;
Ant is already used in the test process anyway. If we abandon make and write the whole thing in Ant, there will be a number of advantages:&lt;br /&gt;
&lt;br /&gt;
* One less technology to install and understand.&lt;br /&gt;
* Greater efficiency and therefore speed when other Java-based tasks are invoked.&lt;br /&gt;
* Better documentation and commenting.&lt;br /&gt;
&lt;br /&gt;
I've started rewriting a number of the existing tests in the Stylesheets/Test2 directory, using Ant instead of make, and I've encountered no major obstacles so far.&lt;br /&gt;
&lt;br /&gt;
===Try to support Windows===&lt;br /&gt;
This is difficult but feasible; I have a pilot project In the Stylesheets/Test2 directory I've written an ant buildfile called convert.xml which calls a transformation in two different ways based on the platform it's running on. We know that most people working on the Stylesheets currently are using *NIX platforms, but when you need to be on *NIX before you can even call the command line transformations at all, this is hardly a surprise. Many people use Windows, and we ought to do our best not only to support them but to enable them to contribute to the codebase.&lt;br /&gt;
&lt;br /&gt;
===Use smaller numbers of test files===&lt;br /&gt;
Rather than ten small files testing various different things, a better approach would be a single test file which attempts to include a wide range of different features, each documented in-place; adding a new test would then be simpler since it would require only adding a new section to a file rather than constructing a whole new file, which might have features irrelevant to the test which later go stale or obsolete.&lt;br /&gt;
&lt;br /&gt;
===Include test files drawn from P5 Exemplars===&lt;br /&gt;
Despite the fact that they're maintained in a separate repository, the Stylesheets are tightly coupled with P5, and development on the two codebases must proceed largely in lock-step fashion. The Stylesheets tests which relate to ODD processing (creating schemas and documentation in various formats) should be tested using ODD files from the P5 Exemplars folder. This will help to ensure that:&lt;br /&gt;
&lt;br /&gt;
1. We're testing all the features people are likely to use most commonly.&lt;br /&gt;
2. All P5 changes (assuming we use tei_all as a test file) will be tested as soon as they're introduced, and it should not be so easy for us to neglect to implement Stylesheets support for a P5 change.&lt;br /&gt;
&lt;br /&gt;
===Validate all test input files before using them===&lt;br /&gt;
&lt;br /&gt;
We need to know when a test file goes stale, especially a TEI file.&lt;br /&gt;
&lt;br /&gt;
===Name test files meaningfully===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;cocoatest.txt&amp;quot; is more helpful than &amp;quot;test40.txt&amp;quot;, obviously. Where larger files are created to test many things, this is harder, of course.&lt;br /&gt;
&lt;br /&gt;
===Output results into a separate folder===&lt;br /&gt;
&lt;br /&gt;
Right now, all the results go into the same folder as the test files, which means the directory is even more cluttered with &amp;quot;test25.xyz&amp;quot; files, making it harder to see what's happening. Results should go into a &amp;quot;results&amp;quot; folder, alongside the &amp;quot;expected-results&amp;quot; folder.&lt;br /&gt;
&lt;br /&gt;
===Keep linked resources in separate folders===&lt;br /&gt;
&lt;br /&gt;
The Test folder currently contains linked images, various schemas used for validation, and other bits and pieces such as PERL scripts used for cleanup. These should be organized properly.&lt;br /&gt;
&lt;br /&gt;
===Process all X*ML output in the same way after creation===&lt;br /&gt;
&lt;br /&gt;
As mentioned above, some XML files are formatted with xmllint before checking, and some are not; some have comments removed and some don't. A single XSLT transformation (I've started one called cleanForDiff.xsl in Test2) should be applied to all X*ML output files before they're compared with expected results.&lt;br /&gt;
&lt;br /&gt;
===Separate out the Oxygen tests===&lt;br /&gt;
&lt;br /&gt;
The current test process includes some tests which depend on an installation of Oxygen, and run transformations using Oxygen's Ant, as well as saxon8ee.jar. These tests properly belong in the oxygen-tei repo, where we should be doing a much better job of testing anyway (see https://github.com/TEIC/TEI/issues/464, which should be converted to an issue in the oxygen-tei repo at some point).&lt;br /&gt;
&lt;br /&gt;
===Try to imagine an alternative to diffing results===&lt;br /&gt;
&lt;br /&gt;
I don't know what this might be, but I do know that the current approach where any change to the Stylesheets or the input resulting in different output fails the build, and the standard way to fix it is to copy the new output over the &amp;quot;expected results&amp;quot; file. It is all too easy to do this without enough care and attention, and to miss unpredicted or unexpected changes hiding alongside expected changes. If we process fewer files in the first place, and strongly encourage the use of good diff tools whenever results change, we can probably do better here, but perhaps there are other approaches to this sort of testing that would help.&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=A_Proposal_for_Rewriting_the_Stylesheets_Tests&amp;diff=15596</id>
		<title>A Proposal for Rewriting the Stylesheets Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=A_Proposal_for_Rewriting_the_Stylesheets_Tests&amp;diff=15596"/>
		<updated>2017-01-08T23:53:31Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: /* Smaller numbers of test files */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==The current state of the tests==&lt;br /&gt;
The Stylesheets Test folder contains the current testing mechanism, and I've been investigating it over the last few weeks. The set of tests clearly grew by accretion with not much in the way of an overall plan, and predictably it has become an over-complicated collection of inconsistencies, obsolescence and mystery. It basically works like this:&lt;br /&gt;
&lt;br /&gt;
# The tests are run using a Makefile (Test/Makefile).&lt;br /&gt;
# The Makefile is divided into a range of targets intended to test different features, such as test-to-html, test-markdown, test-cocoa and so on.&lt;br /&gt;
# Each target contains multiple tests which apply one of the conversions supported by the Stylesheets and then check the result in some way.&lt;br /&gt;
&lt;br /&gt;
The conversions are applied in various different ways:&lt;br /&gt;
&lt;br /&gt;
* By running the symlinked command (e.g. bin/teitohtml) which calls the bin/transformtei script&lt;br /&gt;
* By running ant and passing one of the ant build files such as /docx/build-to.xml&lt;br /&gt;
* By running Saxon and applying one of the XSLT stylesheets directly (such as fo/to.xsl)&lt;br /&gt;
&lt;br /&gt;
There appears to be no rationale governing which method is used to invoke a process.&lt;br /&gt;
&lt;br /&gt;
==Problems with the current tests==&lt;br /&gt;
As I've worked on figuring out how the tests work, I've raised a number of bugs and fixed a few (see for instance GitHub issues 213 through 218). The problems fall into these main categories:&lt;br /&gt;
&lt;br /&gt;
* There are dozens of input test files, and very few of them have meaningful names or helpful comments to explain what they're testing (for instance, test14.xml, test2.xml, test25.xml, test26.xml, test3.xml, test4.xml, test6.xml, test31.xml, test36.xml, test23.xml, test17.xml, test20.xml, test27.xml, test22.xml, test28.xml, test8.xml, test32.xml, test24.xml, test12.xml, test5.xml).&lt;br /&gt;
* Many test files are already invalid or obsolete due to deprecation of various features in recent versions of P5.&lt;br /&gt;
* Different ways of calling the tests (see above) mean that we're not always testing the full process pathway, and it's not clear why.&lt;br /&gt;
* Different test results are handled in very different ways for no apparent reason. For instance, some test results are formatted with xmllint before being compared with their matching expected results file, and some are not.&lt;br /&gt;
* The approach of processing many small files rather than a small number of large ones means that the test process takes longer, because of the repeated necessity to spin up Java VMs.&lt;br /&gt;
* The tests can only be run on *NIX systems which have make installed.&lt;br /&gt;
&lt;br /&gt;
==Principles for rewriting the tests==&lt;br /&gt;
I believe it's time to start again with a new approach to testing, and I think we should adopt these principles in doing so:&lt;br /&gt;
&lt;br /&gt;
===Use Ant rather than make===&lt;br /&gt;
Ant is already used in the test process anyway. If we abandon make and write the whole thing in Ant, there will be a number of advantages:&lt;br /&gt;
&lt;br /&gt;
* One less technology to install and understand.&lt;br /&gt;
* Greater efficiency and therefore speed when other Java-based tasks are invoked.&lt;br /&gt;
* Better documentation and commenting.&lt;br /&gt;
&lt;br /&gt;
I've started rewriting a number of the existing tests in the Stylesheets/Test2 directory, using Ant instead of make, and I've encountered no major obstacles so far.&lt;br /&gt;
&lt;br /&gt;
===Try to support Windows===&lt;br /&gt;
This is difficult but feasible; I have a pilot project In the Stylesheets/Test2 directory I've written an ant buildfile called convert.xml which calls a transformation in two different ways based on the platform it's running on. We know that most people working on the Stylesheets currently are using *NIX platforms, but when you need to be on *NIX before you can even call the command line transformations at all, this is hardly a surprise. Many people use Windows, and we ought to do our best not only to support them but to enable them to contribute to the codebase.&lt;br /&gt;
&lt;br /&gt;
===Use smaller numbers of test files===&lt;br /&gt;
Rather than ten small files testing various different things, a better approach would be a single test file which attempts to include a wide range of different features, each documented in-place; adding a new test would then be simpler since it would require only adding a new section to a file rather than constructing a whole new file, which might have features irrelevant to the test which later go stale or obsolete.&lt;br /&gt;
&lt;br /&gt;
===Include test files drawn from P5 Exemplars===&lt;br /&gt;
Despite the fact that they're maintained in a separate repository, the Stylesheets are tightly coupled with P5, and development on the two codebases must proceed largely in lock-step fashion. The Stylesheets tests which relate to ODD processing (creating schemas and documentation in various formats) should be tested using ODD files from the P5 Exemplars folder. This will help to ensure that:&lt;br /&gt;
&lt;br /&gt;
1. We're testing all the features people are likely to use most commonly.&lt;br /&gt;
2. All P5 changes (assuming we use tei_all as a test file) will be tested as soon as they're introduced, and it should not be so easy for us to neglect to implement Stylesheets support for a P5 change.&lt;br /&gt;
&lt;br /&gt;
===Validate all test input files before using them===&lt;br /&gt;
&lt;br /&gt;
We need to know when a test file goes stale, especially a TEI file.&lt;br /&gt;
&lt;br /&gt;
===Name test files meaningfully===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;cocoatest.txt&amp;quot; is more helpful than &amp;quot;test40.txt&amp;quot;, obviously. Where larger files are created to test many things, this is harder, of course.&lt;br /&gt;
&lt;br /&gt;
===Output results into a separate folder===&lt;br /&gt;
&lt;br /&gt;
Right now, all the results go into the same folder as the test files, which means the directory is even more cluttered with &amp;quot;test25.xyz&amp;quot; files, making it harder to see what's happening. Results should go into a &amp;quot;results&amp;quot; folder, alongside the &amp;quot;expected-results&amp;quot; folder.&lt;br /&gt;
&lt;br /&gt;
===Keep linked resources in separate folders===&lt;br /&gt;
&lt;br /&gt;
The Test folder currently contains linked images, various schemas used for validation, and other bits and pieces such as PERL scripts used for cleanup. These should be organized properly.&lt;br /&gt;
&lt;br /&gt;
===Process all X*ML output in the same way after creation===&lt;br /&gt;
&lt;br /&gt;
As mentioned above, some XML files are formatted with xmllint before checking, and some are not; some have comments removed and some don't. A single XSLT transformation (I've started one called cleanForDiff.xsl in Test2) should be applied to all X*ML output files before they're compared with expected results.&lt;br /&gt;
&lt;br /&gt;
===Separate out the Oxygen tests===&lt;br /&gt;
&lt;br /&gt;
The current test process includes some tests which depend on an installation of Oxygen, and run transformations using Oxygen's Ant, as well as saxon8ee.jar. These tests properly belong in the oxygen-tei repo, where we should be doing a much better job of testing anyway (see https://github.com/TEIC/TEI/issues/464, which should be converted to an issue in the oxygen-tei repo at some point).&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=A_Proposal_for_Rewriting_the_Stylesheets_Tests&amp;diff=15595</id>
		<title>A Proposal for Rewriting the Stylesheets Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=A_Proposal_for_Rewriting_the_Stylesheets_Tests&amp;diff=15595"/>
		<updated>2017-01-08T23:53:15Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: /* Cross-platform support */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==The current state of the tests==&lt;br /&gt;
The Stylesheets Test folder contains the current testing mechanism, and I've been investigating it over the last few weeks. The set of tests clearly grew by accretion with not much in the way of an overall plan, and predictably it has become an over-complicated collection of inconsistencies, obsolescence and mystery. It basically works like this:&lt;br /&gt;
&lt;br /&gt;
# The tests are run using a Makefile (Test/Makefile).&lt;br /&gt;
# The Makefile is divided into a range of targets intended to test different features, such as test-to-html, test-markdown, test-cocoa and so on.&lt;br /&gt;
# Each target contains multiple tests which apply one of the conversions supported by the Stylesheets and then check the result in some way.&lt;br /&gt;
&lt;br /&gt;
The conversions are applied in various different ways:&lt;br /&gt;
&lt;br /&gt;
* By running the symlinked command (e.g. bin/teitohtml) which calls the bin/transformtei script&lt;br /&gt;
* By running ant and passing one of the ant build files such as /docx/build-to.xml&lt;br /&gt;
* By running Saxon and applying one of the XSLT stylesheets directly (such as fo/to.xsl)&lt;br /&gt;
&lt;br /&gt;
There appears to be no rationale governing which method is used to invoke a process.&lt;br /&gt;
&lt;br /&gt;
==Problems with the current tests==&lt;br /&gt;
As I've worked on figuring out how the tests work, I've raised a number of bugs and fixed a few (see for instance GitHub issues 213 through 218). The problems fall into these main categories:&lt;br /&gt;
&lt;br /&gt;
* There are dozens of input test files, and very few of them have meaningful names or helpful comments to explain what they're testing (for instance, test14.xml, test2.xml, test25.xml, test26.xml, test3.xml, test4.xml, test6.xml, test31.xml, test36.xml, test23.xml, test17.xml, test20.xml, test27.xml, test22.xml, test28.xml, test8.xml, test32.xml, test24.xml, test12.xml, test5.xml).&lt;br /&gt;
* Many test files are already invalid or obsolete due to deprecation of various features in recent versions of P5.&lt;br /&gt;
* Different ways of calling the tests (see above) mean that we're not always testing the full process pathway, and it's not clear why.&lt;br /&gt;
* Different test results are handled in very different ways for no apparent reason. For instance, some test results are formatted with xmllint before being compared with their matching expected results file, and some are not.&lt;br /&gt;
* The approach of processing many small files rather than a small number of large ones means that the test process takes longer, because of the repeated necessity to spin up Java VMs.&lt;br /&gt;
* The tests can only be run on *NIX systems which have make installed.&lt;br /&gt;
&lt;br /&gt;
==Principles for rewriting the tests==&lt;br /&gt;
I believe it's time to start again with a new approach to testing, and I think we should adopt these principles in doing so:&lt;br /&gt;
&lt;br /&gt;
===Use Ant rather than make===&lt;br /&gt;
Ant is already used in the test process anyway. If we abandon make and write the whole thing in Ant, there will be a number of advantages:&lt;br /&gt;
&lt;br /&gt;
* One less technology to install and understand.&lt;br /&gt;
* Greater efficiency and therefore speed when other Java-based tasks are invoked.&lt;br /&gt;
* Better documentation and commenting.&lt;br /&gt;
&lt;br /&gt;
I've started rewriting a number of the existing tests in the Stylesheets/Test2 directory, using Ant instead of make, and I've encountered no major obstacles so far.&lt;br /&gt;
&lt;br /&gt;
===Try to support Windows===&lt;br /&gt;
This is difficult but feasible; I have a pilot project In the Stylesheets/Test2 directory I've written an ant buildfile called convert.xml which calls a transformation in two different ways based on the platform it's running on. We know that most people working on the Stylesheets currently are using *NIX platforms, but when you need to be on *NIX before you can even call the command line transformations at all, this is hardly a surprise. Many people use Windows, and we ought to do our best not only to support them but to enable them to contribute to the codebase.&lt;br /&gt;
&lt;br /&gt;
===Smaller numbers of test files===&lt;br /&gt;
Rather than ten small files testing various different things, a better approach would be a single test file which attempts to include a wide range of different features, each documented in-place; adding a new test would then be simpler since it would require only adding a new section to a file rather than constructing a whole new file, which might have features irrelevant to the test which later go stale or obsolete.&lt;br /&gt;
&lt;br /&gt;
===Include test files drawn from P5 Exemplars===&lt;br /&gt;
Despite the fact that they're maintained in a separate repository, the Stylesheets are tightly coupled with P5, and development on the two codebases must proceed largely in lock-step fashion. The Stylesheets tests which relate to ODD processing (creating schemas and documentation in various formats) should be tested using ODD files from the P5 Exemplars folder. This will help to ensure that:&lt;br /&gt;
&lt;br /&gt;
1. We're testing all the features people are likely to use most commonly.&lt;br /&gt;
2. All P5 changes (assuming we use tei_all as a test file) will be tested as soon as they're introduced, and it should not be so easy for us to neglect to implement Stylesheets support for a P5 change.&lt;br /&gt;
&lt;br /&gt;
===Validate all test input files before using them===&lt;br /&gt;
&lt;br /&gt;
We need to know when a test file goes stale, especially a TEI file.&lt;br /&gt;
&lt;br /&gt;
===Name test files meaningfully===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;cocoatest.txt&amp;quot; is more helpful than &amp;quot;test40.txt&amp;quot;, obviously. Where larger files are created to test many things, this is harder, of course.&lt;br /&gt;
&lt;br /&gt;
===Output results into a separate folder===&lt;br /&gt;
&lt;br /&gt;
Right now, all the results go into the same folder as the test files, which means the directory is even more cluttered with &amp;quot;test25.xyz&amp;quot; files, making it harder to see what's happening. Results should go into a &amp;quot;results&amp;quot; folder, alongside the &amp;quot;expected-results&amp;quot; folder.&lt;br /&gt;
&lt;br /&gt;
===Keep linked resources in separate folders===&lt;br /&gt;
&lt;br /&gt;
The Test folder currently contains linked images, various schemas used for validation, and other bits and pieces such as PERL scripts used for cleanup. These should be organized properly.&lt;br /&gt;
&lt;br /&gt;
===Process all X*ML output in the same way after creation===&lt;br /&gt;
&lt;br /&gt;
As mentioned above, some XML files are formatted with xmllint before checking, and some are not; some have comments removed and some don't. A single XSLT transformation (I've started one called cleanForDiff.xsl in Test2) should be applied to all X*ML output files before they're compared with expected results.&lt;br /&gt;
&lt;br /&gt;
===Separate out the Oxygen tests===&lt;br /&gt;
&lt;br /&gt;
The current test process includes some tests which depend on an installation of Oxygen, and run transformations using Oxygen's Ant, as well as saxon8ee.jar. These tests properly belong in the oxygen-tei repo, where we should be doing a much better job of testing anyway (see https://github.com/TEIC/TEI/issues/464, which should be converted to an issue in the oxygen-tei repo at some point).&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=A_Proposal_for_Rewriting_the_Stylesheets_Tests&amp;diff=15594</id>
		<title>A Proposal for Rewriting the Stylesheets Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=A_Proposal_for_Rewriting_the_Stylesheets_Tests&amp;diff=15594"/>
		<updated>2017-01-08T23:52:02Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: /* The current state of the tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==The current state of the tests==&lt;br /&gt;
The Stylesheets Test folder contains the current testing mechanism, and I've been investigating it over the last few weeks. The set of tests clearly grew by accretion with not much in the way of an overall plan, and predictably it has become an over-complicated collection of inconsistencies, obsolescence and mystery. It basically works like this:&lt;br /&gt;
&lt;br /&gt;
# The tests are run using a Makefile (Test/Makefile).&lt;br /&gt;
# The Makefile is divided into a range of targets intended to test different features, such as test-to-html, test-markdown, test-cocoa and so on.&lt;br /&gt;
# Each target contains multiple tests which apply one of the conversions supported by the Stylesheets and then check the result in some way.&lt;br /&gt;
&lt;br /&gt;
The conversions are applied in various different ways:&lt;br /&gt;
&lt;br /&gt;
* By running the symlinked command (e.g. bin/teitohtml) which calls the bin/transformtei script&lt;br /&gt;
* By running ant and passing one of the ant build files such as /docx/build-to.xml&lt;br /&gt;
* By running Saxon and applying one of the XSLT stylesheets directly (such as fo/to.xsl)&lt;br /&gt;
&lt;br /&gt;
There appears to be no rationale governing which method is used to invoke a process.&lt;br /&gt;
&lt;br /&gt;
==Problems with the current tests==&lt;br /&gt;
As I've worked on figuring out how the tests work, I've raised a number of bugs and fixed a few (see for instance GitHub issues 213 through 218). The problems fall into these main categories:&lt;br /&gt;
&lt;br /&gt;
* There are dozens of input test files, and very few of them have meaningful names or helpful comments to explain what they're testing (for instance, test14.xml, test2.xml, test25.xml, test26.xml, test3.xml, test4.xml, test6.xml, test31.xml, test36.xml, test23.xml, test17.xml, test20.xml, test27.xml, test22.xml, test28.xml, test8.xml, test32.xml, test24.xml, test12.xml, test5.xml).&lt;br /&gt;
* Many test files are already invalid or obsolete due to deprecation of various features in recent versions of P5.&lt;br /&gt;
* Different ways of calling the tests (see above) mean that we're not always testing the full process pathway, and it's not clear why.&lt;br /&gt;
* Different test results are handled in very different ways for no apparent reason. For instance, some test results are formatted with xmllint before being compared with their matching expected results file, and some are not.&lt;br /&gt;
* The approach of processing many small files rather than a small number of large ones means that the test process takes longer, because of the repeated necessity to spin up Java VMs.&lt;br /&gt;
* The tests can only be run on *NIX systems which have make installed.&lt;br /&gt;
&lt;br /&gt;
==Principles for rewriting the tests==&lt;br /&gt;
I believe it's time to start again with a new approach to testing, and I think we should adopt these principles in doing so:&lt;br /&gt;
&lt;br /&gt;
===Use Ant rather than make===&lt;br /&gt;
Ant is already used in the test process anyway. If we abandon make and write the whole thing in Ant, there will be a number of advantages:&lt;br /&gt;
&lt;br /&gt;
* One less technology to install and understand.&lt;br /&gt;
* Greater efficiency and therefore speed when other Java-based tasks are invoked.&lt;br /&gt;
* Better documentation and commenting.&lt;br /&gt;
&lt;br /&gt;
I've started rewriting a number of the existing tests in the Stylesheets/Test2 directory, using Ant instead of make, and I've encountered no major obstacles so far.&lt;br /&gt;
&lt;br /&gt;
===Cross-platform support===&lt;br /&gt;
This is difficult but feasible; I have a pilot project In the Stylesheets/Test2 directory I've written an ant buildfile called convert.xml which calls a transformation in two different ways based on the platform it's running on. We know that most people working on the Stylesheets currently are using *NIX platforms, but when you need to be on *NIX before you can even call the command line transformations at all, this is hardly a surprise. Many people use Windows, and we ought to do our best not only to support them but to enable them to contribute to the codebase.&lt;br /&gt;
&lt;br /&gt;
===Smaller numbers of test files===&lt;br /&gt;
Rather than ten small files testing various different things, a better approach would be a single test file which attempts to include a wide range of different features, each documented in-place; adding a new test would then be simpler since it would require only adding a new section to a file rather than constructing a whole new file, which might have features irrelevant to the test which later go stale or obsolete.&lt;br /&gt;
&lt;br /&gt;
===Include test files drawn from P5 Exemplars===&lt;br /&gt;
Despite the fact that they're maintained in a separate repository, the Stylesheets are tightly coupled with P5, and development on the two codebases must proceed largely in lock-step fashion. The Stylesheets tests which relate to ODD processing (creating schemas and documentation in various formats) should be tested using ODD files from the P5 Exemplars folder. This will help to ensure that:&lt;br /&gt;
&lt;br /&gt;
1. We're testing all the features people are likely to use most commonly.&lt;br /&gt;
2. All P5 changes (assuming we use tei_all as a test file) will be tested as soon as they're introduced, and it should not be so easy for us to neglect to implement Stylesheets support for a P5 change.&lt;br /&gt;
&lt;br /&gt;
===Validate all test input files before using them===&lt;br /&gt;
&lt;br /&gt;
We need to know when a test file goes stale, especially a TEI file.&lt;br /&gt;
&lt;br /&gt;
===Name test files meaningfully===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;cocoatest.txt&amp;quot; is more helpful than &amp;quot;test40.txt&amp;quot;, obviously. Where larger files are created to test many things, this is harder, of course.&lt;br /&gt;
&lt;br /&gt;
===Output results into a separate folder===&lt;br /&gt;
&lt;br /&gt;
Right now, all the results go into the same folder as the test files, which means the directory is even more cluttered with &amp;quot;test25.xyz&amp;quot; files, making it harder to see what's happening. Results should go into a &amp;quot;results&amp;quot; folder, alongside the &amp;quot;expected-results&amp;quot; folder.&lt;br /&gt;
&lt;br /&gt;
===Keep linked resources in separate folders===&lt;br /&gt;
&lt;br /&gt;
The Test folder currently contains linked images, various schemas used for validation, and other bits and pieces such as PERL scripts used for cleanup. These should be organized properly.&lt;br /&gt;
&lt;br /&gt;
===Process all X*ML output in the same way after creation===&lt;br /&gt;
&lt;br /&gt;
As mentioned above, some XML files are formatted with xmllint before checking, and some are not; some have comments removed and some don't. A single XSLT transformation (I've started one called cleanForDiff.xsl in Test2) should be applied to all X*ML output files before they're compared with expected results.&lt;br /&gt;
&lt;br /&gt;
===Separate out the Oxygen tests===&lt;br /&gt;
&lt;br /&gt;
The current test process includes some tests which depend on an installation of Oxygen, and run transformations using Oxygen's Ant, as well as saxon8ee.jar. These tests properly belong in the oxygen-tei repo, where we should be doing a much better job of testing anyway (see https://github.com/TEIC/TEI/issues/464, which should be converted to an issue in the oxygen-tei repo at some point).&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=A_Proposal_for_Rewriting_the_Stylesheets_Tests&amp;diff=15593</id>
		<title>A Proposal for Rewriting the Stylesheets Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=A_Proposal_for_Rewriting_the_Stylesheets_Tests&amp;diff=15593"/>
		<updated>2017-01-08T23:51:25Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: /* The current state of the tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==The current state of the tests==&lt;br /&gt;
The Stylesheets Test folder contains the current testing mechanism, and I've been investigating it over the last few weeks. The set of tests clearly grew by accretion with not much in the way of an overall plan, and predictably it has become an over-complicated collection of inconsistencies, obsolescence and mystery. It basically works like this:&lt;br /&gt;
&lt;br /&gt;
1. The tests are run using a Makefile (Test/Makefile).&lt;br /&gt;
&lt;br /&gt;
2. The Makefile is divided into a range of targets intended to test different features, such as test-to-html, test-markdown, test-cocoa and so on.&lt;br /&gt;
&lt;br /&gt;
3. Each target contains multiple tests which apply one of the conversions supported by the Stylesheets and then check the result in some way.&lt;br /&gt;
&lt;br /&gt;
The conversions are applied in various different ways:&lt;br /&gt;
&lt;br /&gt;
* By running the symlinked command (e.g. bin/teitohtml) which calls the bin/transformtei script&lt;br /&gt;
* By running ant and passing one of the ant build files such as /docx/build-to.xml&lt;br /&gt;
* By running Saxon and applying one of the XSLT stylesheets directly (such as fo/to.xsl)&lt;br /&gt;
&lt;br /&gt;
There appears to be no rationale governing which method is used to invoke a process.&lt;br /&gt;
&lt;br /&gt;
==Problems with the current tests==&lt;br /&gt;
As I've worked on figuring out how the tests work, I've raised a number of bugs and fixed a few (see for instance GitHub issues 213 through 218). The problems fall into these main categories:&lt;br /&gt;
&lt;br /&gt;
* There are dozens of input test files, and very few of them have meaningful names or helpful comments to explain what they're testing (for instance, test14.xml, test2.xml, test25.xml, test26.xml, test3.xml, test4.xml, test6.xml, test31.xml, test36.xml, test23.xml, test17.xml, test20.xml, test27.xml, test22.xml, test28.xml, test8.xml, test32.xml, test24.xml, test12.xml, test5.xml).&lt;br /&gt;
* Many test files are already invalid or obsolete due to deprecation of various features in recent versions of P5.&lt;br /&gt;
* Different ways of calling the tests (see above) mean that we're not always testing the full process pathway, and it's not clear why.&lt;br /&gt;
* Different test results are handled in very different ways for no apparent reason. For instance, some test results are formatted with xmllint before being compared with their matching expected results file, and some are not.&lt;br /&gt;
* The approach of processing many small files rather than a small number of large ones means that the test process takes longer, because of the repeated necessity to spin up Java VMs.&lt;br /&gt;
* The tests can only be run on *NIX systems which have make installed.&lt;br /&gt;
&lt;br /&gt;
==Principles for rewriting the tests==&lt;br /&gt;
I believe it's time to start again with a new approach to testing, and I think we should adopt these principles in doing so:&lt;br /&gt;
&lt;br /&gt;
===Use Ant rather than make===&lt;br /&gt;
Ant is already used in the test process anyway. If we abandon make and write the whole thing in Ant, there will be a number of advantages:&lt;br /&gt;
&lt;br /&gt;
* One less technology to install and understand.&lt;br /&gt;
* Greater efficiency and therefore speed when other Java-based tasks are invoked.&lt;br /&gt;
* Better documentation and commenting.&lt;br /&gt;
&lt;br /&gt;
I've started rewriting a number of the existing tests in the Stylesheets/Test2 directory, using Ant instead of make, and I've encountered no major obstacles so far.&lt;br /&gt;
&lt;br /&gt;
===Cross-platform support===&lt;br /&gt;
This is difficult but feasible; I have a pilot project In the Stylesheets/Test2 directory I've written an ant buildfile called convert.xml which calls a transformation in two different ways based on the platform it's running on. We know that most people working on the Stylesheets currently are using *NIX platforms, but when you need to be on *NIX before you can even call the command line transformations at all, this is hardly a surprise. Many people use Windows, and we ought to do our best not only to support them but to enable them to contribute to the codebase.&lt;br /&gt;
&lt;br /&gt;
===Smaller numbers of test files===&lt;br /&gt;
Rather than ten small files testing various different things, a better approach would be a single test file which attempts to include a wide range of different features, each documented in-place; adding a new test would then be simpler since it would require only adding a new section to a file rather than constructing a whole new file, which might have features irrelevant to the test which later go stale or obsolete.&lt;br /&gt;
&lt;br /&gt;
===Include test files drawn from P5 Exemplars===&lt;br /&gt;
Despite the fact that they're maintained in a separate repository, the Stylesheets are tightly coupled with P5, and development on the two codebases must proceed largely in lock-step fashion. The Stylesheets tests which relate to ODD processing (creating schemas and documentation in various formats) should be tested using ODD files from the P5 Exemplars folder. This will help to ensure that:&lt;br /&gt;
&lt;br /&gt;
1. We're testing all the features people are likely to use most commonly.&lt;br /&gt;
2. All P5 changes (assuming we use tei_all as a test file) will be tested as soon as they're introduced, and it should not be so easy for us to neglect to implement Stylesheets support for a P5 change.&lt;br /&gt;
&lt;br /&gt;
===Validate all test input files before using them===&lt;br /&gt;
&lt;br /&gt;
We need to know when a test file goes stale, especially a TEI file.&lt;br /&gt;
&lt;br /&gt;
===Name test files meaningfully===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;cocoatest.txt&amp;quot; is more helpful than &amp;quot;test40.txt&amp;quot;, obviously. Where larger files are created to test many things, this is harder, of course.&lt;br /&gt;
&lt;br /&gt;
===Output results into a separate folder===&lt;br /&gt;
&lt;br /&gt;
Right now, all the results go into the same folder as the test files, which means the directory is even more cluttered with &amp;quot;test25.xyz&amp;quot; files, making it harder to see what's happening. Results should go into a &amp;quot;results&amp;quot; folder, alongside the &amp;quot;expected-results&amp;quot; folder.&lt;br /&gt;
&lt;br /&gt;
===Keep linked resources in separate folders===&lt;br /&gt;
&lt;br /&gt;
The Test folder currently contains linked images, various schemas used for validation, and other bits and pieces such as PERL scripts used for cleanup. These should be organized properly.&lt;br /&gt;
&lt;br /&gt;
===Process all X*ML output in the same way after creation===&lt;br /&gt;
&lt;br /&gt;
As mentioned above, some XML files are formatted with xmllint before checking, and some are not; some have comments removed and some don't. A single XSLT transformation (I've started one called cleanForDiff.xsl in Test2) should be applied to all X*ML output files before they're compared with expected results.&lt;br /&gt;
&lt;br /&gt;
===Separate out the Oxygen tests===&lt;br /&gt;
&lt;br /&gt;
The current test process includes some tests which depend on an installation of Oxygen, and run transformations using Oxygen's Ant, as well as saxon8ee.jar. These tests properly belong in the oxygen-tei repo, where we should be doing a much better job of testing anyway (see https://github.com/TEIC/TEI/issues/464, which should be converted to an issue in the oxygen-tei repo at some point).&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=A_Proposal_for_Rewriting_the_Stylesheets_Tests&amp;diff=15592</id>
		<title>A Proposal for Rewriting the Stylesheets Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=A_Proposal_for_Rewriting_the_Stylesheets_Tests&amp;diff=15592"/>
		<updated>2017-01-08T23:50:18Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: /* Process all X*ML output in the same way after creation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==The current state of the tests==&lt;br /&gt;
The Stylesheets Test folder contains the current testing mechanism, and I've been investigating it over the last few weeks. The set of tests clearly grew by accretion with not much in the way of an overall plan, and predictably it has become an over-complicated collection of inconsistencies, obsolescence and mystery. It basically works like this:&lt;br /&gt;
&lt;br /&gt;
1. The tests are run using a Makefile (Test/Makefile).&lt;br /&gt;
2. The Makefile is divided into a range of targets intended to test different features, such as test-to-html, test-markdown, test-cocoa and so on.&lt;br /&gt;
3. Each target contains multiple tests which apply one of the conversions supported by the Stylesheets and then check the result in some way.&lt;br /&gt;
&lt;br /&gt;
The conversions are applied in various different ways:&lt;br /&gt;
&lt;br /&gt;
* By running the symlinked command (e.g. bin/teitohtml) which calls the bin/transformtei script&lt;br /&gt;
* By running ant and passing one of the ant build files such as /docx/build-to.xml&lt;br /&gt;
* By running Saxon and applying one of the XSLT stylesheets directly (such as fo/to.xsl)&lt;br /&gt;
&lt;br /&gt;
There appears to be no rationale governing which method is used to invoke a process.&lt;br /&gt;
&lt;br /&gt;
==Problems with the current tests==&lt;br /&gt;
As I've worked on figuring out how the tests work, I've raised a number of bugs and fixed a few (see for instance GitHub issues 213 through 218). The problems fall into these main categories:&lt;br /&gt;
&lt;br /&gt;
* There are dozens of input test files, and very few of them have meaningful names or helpful comments to explain what they're testing (for instance, test14.xml, test2.xml, test25.xml, test26.xml, test3.xml, test4.xml, test6.xml, test31.xml, test36.xml, test23.xml, test17.xml, test20.xml, test27.xml, test22.xml, test28.xml, test8.xml, test32.xml, test24.xml, test12.xml, test5.xml).&lt;br /&gt;
* Many test files are already invalid or obsolete due to deprecation of various features in recent versions of P5.&lt;br /&gt;
* Different ways of calling the tests (see above) mean that we're not always testing the full process pathway, and it's not clear why.&lt;br /&gt;
* Different test results are handled in very different ways for no apparent reason. For instance, some test results are formatted with xmllint before being compared with their matching expected results file, and some are not.&lt;br /&gt;
* The approach of processing many small files rather than a small number of large ones means that the test process takes longer, because of the repeated necessity to spin up Java VMs.&lt;br /&gt;
* The tests can only be run on *NIX systems which have make installed.&lt;br /&gt;
&lt;br /&gt;
==Principles for rewriting the tests==&lt;br /&gt;
I believe it's time to start again with a new approach to testing, and I think we should adopt these principles in doing so:&lt;br /&gt;
&lt;br /&gt;
===Use Ant rather than make===&lt;br /&gt;
Ant is already used in the test process anyway. If we abandon make and write the whole thing in Ant, there will be a number of advantages:&lt;br /&gt;
&lt;br /&gt;
* One less technology to install and understand.&lt;br /&gt;
* Greater efficiency and therefore speed when other Java-based tasks are invoked.&lt;br /&gt;
* Better documentation and commenting.&lt;br /&gt;
&lt;br /&gt;
I've started rewriting a number of the existing tests in the Stylesheets/Test2 directory, using Ant instead of make, and I've encountered no major obstacles so far.&lt;br /&gt;
&lt;br /&gt;
===Cross-platform support===&lt;br /&gt;
This is difficult but feasible; I have a pilot project In the Stylesheets/Test2 directory I've written an ant buildfile called convert.xml which calls a transformation in two different ways based on the platform it's running on. We know that most people working on the Stylesheets currently are using *NIX platforms, but when you need to be on *NIX before you can even call the command line transformations at all, this is hardly a surprise. Many people use Windows, and we ought to do our best not only to support them but to enable them to contribute to the codebase.&lt;br /&gt;
&lt;br /&gt;
===Smaller numbers of test files===&lt;br /&gt;
Rather than ten small files testing various different things, a better approach would be a single test file which attempts to include a wide range of different features, each documented in-place; adding a new test would then be simpler since it would require only adding a new section to a file rather than constructing a whole new file, which might have features irrelevant to the test which later go stale or obsolete.&lt;br /&gt;
&lt;br /&gt;
===Include test files drawn from P5 Exemplars===&lt;br /&gt;
Despite the fact that they're maintained in a separate repository, the Stylesheets are tightly coupled with P5, and development on the two codebases must proceed largely in lock-step fashion. The Stylesheets tests which relate to ODD processing (creating schemas and documentation in various formats) should be tested using ODD files from the P5 Exemplars folder. This will help to ensure that:&lt;br /&gt;
&lt;br /&gt;
1. We're testing all the features people are likely to use most commonly.&lt;br /&gt;
2. All P5 changes (assuming we use tei_all as a test file) will be tested as soon as they're introduced, and it should not be so easy for us to neglect to implement Stylesheets support for a P5 change.&lt;br /&gt;
&lt;br /&gt;
===Validate all test input files before using them===&lt;br /&gt;
&lt;br /&gt;
We need to know when a test file goes stale, especially a TEI file.&lt;br /&gt;
&lt;br /&gt;
===Name test files meaningfully===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;cocoatest.txt&amp;quot; is more helpful than &amp;quot;test40.txt&amp;quot;, obviously. Where larger files are created to test many things, this is harder, of course.&lt;br /&gt;
&lt;br /&gt;
===Output results into a separate folder===&lt;br /&gt;
&lt;br /&gt;
Right now, all the results go into the same folder as the test files, which means the directory is even more cluttered with &amp;quot;test25.xyz&amp;quot; files, making it harder to see what's happening. Results should go into a &amp;quot;results&amp;quot; folder, alongside the &amp;quot;expected-results&amp;quot; folder.&lt;br /&gt;
&lt;br /&gt;
===Keep linked resources in separate folders===&lt;br /&gt;
&lt;br /&gt;
The Test folder currently contains linked images, various schemas used for validation, and other bits and pieces such as PERL scripts used for cleanup. These should be organized properly.&lt;br /&gt;
&lt;br /&gt;
===Process all X*ML output in the same way after creation===&lt;br /&gt;
&lt;br /&gt;
As mentioned above, some XML files are formatted with xmllint before checking, and some are not; some have comments removed and some don't. A single XSLT transformation (I've started one called cleanForDiff.xsl in Test2) should be applied to all X*ML output files before they're compared with expected results.&lt;br /&gt;
&lt;br /&gt;
===Separate out the Oxygen tests===&lt;br /&gt;
&lt;br /&gt;
The current test process includes some tests which depend on an installation of Oxygen, and run transformations using Oxygen's Ant, as well as saxon8ee.jar. These tests properly belong in the oxygen-tei repo, where we should be doing a much better job of testing anyway (see https://github.com/TEIC/TEI/issues/464, which should be converted to an issue in the oxygen-tei repo at some point).&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=A_Proposal_for_Rewriting_the_Stylesheets_Tests&amp;diff=15591</id>
		<title>A Proposal for Rewriting the Stylesheets Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=A_Proposal_for_Rewriting_the_Stylesheets_Tests&amp;diff=15591"/>
		<updated>2017-01-08T23:46:42Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: /* Test file drawn from P5 Exemplars */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==The current state of the tests==&lt;br /&gt;
The Stylesheets Test folder contains the current testing mechanism, and I've been investigating it over the last few weeks. The set of tests clearly grew by accretion with not much in the way of an overall plan, and predictably it has become an over-complicated collection of inconsistencies, obsolescence and mystery. It basically works like this:&lt;br /&gt;
&lt;br /&gt;
1. The tests are run using a Makefile (Test/Makefile).&lt;br /&gt;
2. The Makefile is divided into a range of targets intended to test different features, such as test-to-html, test-markdown, test-cocoa and so on.&lt;br /&gt;
3. Each target contains multiple tests which apply one of the conversions supported by the Stylesheets and then check the result in some way.&lt;br /&gt;
&lt;br /&gt;
The conversions are applied in various different ways:&lt;br /&gt;
&lt;br /&gt;
* By running the symlinked command (e.g. bin/teitohtml) which calls the bin/transformtei script&lt;br /&gt;
* By running ant and passing one of the ant build files such as /docx/build-to.xml&lt;br /&gt;
* By running Saxon and applying one of the XSLT stylesheets directly (such as fo/to.xsl)&lt;br /&gt;
&lt;br /&gt;
There appears to be no rationale governing which method is used to invoke a process.&lt;br /&gt;
&lt;br /&gt;
==Problems with the current tests==&lt;br /&gt;
As I've worked on figuring out how the tests work, I've raised a number of bugs and fixed a few (see for instance GitHub issues 213 through 218). The problems fall into these main categories:&lt;br /&gt;
&lt;br /&gt;
* There are dozens of input test files, and very few of them have meaningful names or helpful comments to explain what they're testing (for instance, test14.xml, test2.xml, test25.xml, test26.xml, test3.xml, test4.xml, test6.xml, test31.xml, test36.xml, test23.xml, test17.xml, test20.xml, test27.xml, test22.xml, test28.xml, test8.xml, test32.xml, test24.xml, test12.xml, test5.xml).&lt;br /&gt;
* Many test files are already invalid or obsolete due to deprecation of various features in recent versions of P5.&lt;br /&gt;
* Different ways of calling the tests (see above) mean that we're not always testing the full process pathway, and it's not clear why.&lt;br /&gt;
* Different test results are handled in very different ways for no apparent reason. For instance, some test results are formatted with xmllint before being compared with their matching expected results file, and some are not.&lt;br /&gt;
* The approach of processing many small files rather than a small number of large ones means that the test process takes longer, because of the repeated necessity to spin up Java VMs.&lt;br /&gt;
* The tests can only be run on *NIX systems which have make installed.&lt;br /&gt;
&lt;br /&gt;
==Principles for rewriting the tests==&lt;br /&gt;
I believe it's time to start again with a new approach to testing, and I think we should adopt these principles in doing so:&lt;br /&gt;
&lt;br /&gt;
===Use Ant rather than make===&lt;br /&gt;
Ant is already used in the test process anyway. If we abandon make and write the whole thing in Ant, there will be a number of advantages:&lt;br /&gt;
&lt;br /&gt;
* One less technology to install and understand.&lt;br /&gt;
* Greater efficiency and therefore speed when other Java-based tasks are invoked.&lt;br /&gt;
* Better documentation and commenting.&lt;br /&gt;
&lt;br /&gt;
I've started rewriting a number of the existing tests in the Stylesheets/Test2 directory, using Ant instead of make, and I've encountered no major obstacles so far.&lt;br /&gt;
&lt;br /&gt;
===Cross-platform support===&lt;br /&gt;
This is difficult but feasible; I have a pilot project In the Stylesheets/Test2 directory I've written an ant buildfile called convert.xml which calls a transformation in two different ways based on the platform it's running on. We know that most people working on the Stylesheets currently are using *NIX platforms, but when you need to be on *NIX before you can even call the command line transformations at all, this is hardly a surprise. Many people use Windows, and we ought to do our best not only to support them but to enable them to contribute to the codebase.&lt;br /&gt;
&lt;br /&gt;
===Smaller numbers of test files===&lt;br /&gt;
Rather than ten small files testing various different things, a better approach would be a single test file which attempts to include a wide range of different features, each documented in-place; adding a new test would then be simpler since it would require only adding a new section to a file rather than constructing a whole new file, which might have features irrelevant to the test which later go stale or obsolete.&lt;br /&gt;
&lt;br /&gt;
===Include test files drawn from P5 Exemplars===&lt;br /&gt;
Despite the fact that they're maintained in a separate repository, the Stylesheets are tightly coupled with P5, and development on the two codebases must proceed largely in lock-step fashion. The Stylesheets tests which relate to ODD processing (creating schemas and documentation in various formats) should be tested using ODD files from the P5 Exemplars folder. This will help to ensure that:&lt;br /&gt;
&lt;br /&gt;
1. We're testing all the features people are likely to use most commonly.&lt;br /&gt;
2. All P5 changes (assuming we use tei_all as a test file) will be tested as soon as they're introduced, and it should not be so easy for us to neglect to implement Stylesheets support for a P5 change.&lt;br /&gt;
&lt;br /&gt;
===Validate all test input files before using them===&lt;br /&gt;
&lt;br /&gt;
We need to know when a test file goes stale, especially a TEI file.&lt;br /&gt;
&lt;br /&gt;
===Name test files meaningfully===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;cocoatest.txt&amp;quot; is more helpful than &amp;quot;test40.txt&amp;quot;, obviously. Where larger files are created to test many things, this is harder, of course.&lt;br /&gt;
&lt;br /&gt;
===Output results into a separate folder===&lt;br /&gt;
&lt;br /&gt;
Right now, all the results go into the same folder as the test files, which means the directory is even more cluttered with &amp;quot;test25.xyz&amp;quot; files, making it harder to see what's happening. Results should go into a &amp;quot;results&amp;quot; folder, alongside the &amp;quot;expected-results&amp;quot; folder.&lt;br /&gt;
&lt;br /&gt;
===Keep linked resources in separate folders===&lt;br /&gt;
&lt;br /&gt;
The Test folder currently contains linked images, various schemas used for validation, and other bits and pieces such as PERL scripts used for cleanup. These should be organized properly.&lt;br /&gt;
&lt;br /&gt;
===Process all X*ML output in the same way after creation===&lt;br /&gt;
&lt;br /&gt;
As mentioned above, some XML files are formatted with xmllint before checking, and some are not; some have comments removed and some don't. A single XSLT transformation (I've started one called cleanForDiff.xsl in Test2) should be applied to all X*ML output files before they're compared with expected results.&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=A_Proposal_for_Rewriting_the_Stylesheets_Tests&amp;diff=15590</id>
		<title>A Proposal for Rewriting the Stylesheets Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=A_Proposal_for_Rewriting_the_Stylesheets_Tests&amp;diff=15590"/>
		<updated>2017-01-08T23:34:41Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: /* Cross-platform support */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==The current state of the tests==&lt;br /&gt;
The Stylesheets Test folder contains the current testing mechanism, and I've been investigating it over the last few weeks. The set of tests clearly grew by accretion with not much in the way of an overall plan, and predictably it has become an over-complicated collection of inconsistencies, obsolescence and mystery. It basically works like this:&lt;br /&gt;
&lt;br /&gt;
1. The tests are run using a Makefile (Test/Makefile).&lt;br /&gt;
2. The Makefile is divided into a range of targets intended to test different features, such as test-to-html, test-markdown, test-cocoa and so on.&lt;br /&gt;
3. Each target contains multiple tests which apply one of the conversions supported by the Stylesheets and then check the result in some way.&lt;br /&gt;
&lt;br /&gt;
The conversions are applied in various different ways:&lt;br /&gt;
&lt;br /&gt;
* By running the symlinked command (e.g. bin/teitohtml) which calls the bin/transformtei script&lt;br /&gt;
* By running ant and passing one of the ant build files such as /docx/build-to.xml&lt;br /&gt;
* By running Saxon and applying one of the XSLT stylesheets directly (such as fo/to.xsl)&lt;br /&gt;
&lt;br /&gt;
There appears to be no rationale governing which method is used to invoke a process.&lt;br /&gt;
&lt;br /&gt;
==Problems with the current tests==&lt;br /&gt;
As I've worked on figuring out how the tests work, I've raised a number of bugs and fixed a few (see for instance GitHub issues 213 through 218). The problems fall into these main categories:&lt;br /&gt;
&lt;br /&gt;
* There are dozens of input test files, and very few of them have meaningful names or helpful comments to explain what they're testing (for instance, test14.xml, test2.xml, test25.xml, test26.xml, test3.xml, test4.xml, test6.xml, test31.xml, test36.xml, test23.xml, test17.xml, test20.xml, test27.xml, test22.xml, test28.xml, test8.xml, test32.xml, test24.xml, test12.xml, test5.xml).&lt;br /&gt;
* Many test files are already invalid or obsolete due to deprecation of various features in recent versions of P5.&lt;br /&gt;
* Different ways of calling the tests (see above) mean that we're not always testing the full process pathway, and it's not clear why.&lt;br /&gt;
* Different test results are handled in very different ways for no apparent reason. For instance, some test results are formatted with xmllint before being compared with their matching expected results file, and some are not.&lt;br /&gt;
* The approach of processing many small files rather than a small number of large ones means that the test process takes longer, because of the repeated necessity to spin up Java VMs.&lt;br /&gt;
* The tests can only be run on *NIX systems which have make installed.&lt;br /&gt;
&lt;br /&gt;
==Principles for rewriting the tests==&lt;br /&gt;
I believe it's time to start again with a new approach to testing, and I think we should adopt these principles in doing so:&lt;br /&gt;
&lt;br /&gt;
===Use Ant rather than make===&lt;br /&gt;
Ant is already used in the test process anyway. If we abandon make and write the whole thing in Ant, there will be a number of advantages:&lt;br /&gt;
&lt;br /&gt;
* One less technology to install and understand.&lt;br /&gt;
* Greater efficiency and therefore speed when other Java-based tasks are invoked.&lt;br /&gt;
* Better documentation and commenting.&lt;br /&gt;
&lt;br /&gt;
I've started rewriting a number of the existing tests in the Stylesheets/Test2 directory, using Ant instead of make, and I've encountered no major obstacles so far.&lt;br /&gt;
&lt;br /&gt;
===Cross-platform support===&lt;br /&gt;
This is difficult but feasible; I have a pilot project In the Stylesheets/Test2 directory I've written an ant buildfile called convert.xml which calls a transformation in two different ways based on the platform it's running on. We know that most people working on the Stylesheets currently are using *NIX platforms, but when you need to be on *NIX before you can even call the command line transformations at all, this is hardly a surprise. Many people use Windows, and we ought to do our best not only to support them but to enable them to contribute to the codebase.&lt;br /&gt;
&lt;br /&gt;
===Smaller numbers of test files===&lt;br /&gt;
Rather than ten small files testing various different things, a better approach would be a single test file which attempts to include a wide range of different features, each documented in-place; adding a new test would then be simpler since it would require only adding a new section to a file rather than constructing a whole new file, which might have features irrelevant to the test which later go stale or obsolete.&lt;br /&gt;
&lt;br /&gt;
===Test file drawn from P5 Exemplars===&lt;br /&gt;
Despite the fact that they're maintained in a separate repository, the Stylesheets are tightly coupled with P5, and development on the two codebases must proceed largely in lock-step fashion. The Stylesheets tests which relate to ODD processing (creating schemas and documentation in various formats) should be tested using ODD files from the P5 Exemplars folder. This will help to ensure that:&lt;br /&gt;
&lt;br /&gt;
1. We're testing all the features people are likely to use most commonly.&lt;br /&gt;
2. All P5 changes (assuming we use tei_all as a test file) will be tested as soon as they're introduced, and it should not be so easy for us to neglect to implement Stylesheets support for a P5 change.&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=A_Proposal_for_Rewriting_the_Stylesheets_Tests&amp;diff=15589</id>
		<title>A Proposal for Rewriting the Stylesheets Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=A_Proposal_for_Rewriting_the_Stylesheets_Tests&amp;diff=15589"/>
		<updated>2017-01-08T23:23:53Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: /* Problems with the current tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==The current state of the tests==&lt;br /&gt;
The Stylesheets Test folder contains the current testing mechanism, and I've been investigating it over the last few weeks. The set of tests clearly grew by accretion with not much in the way of an overall plan, and predictably it has become an over-complicated collection of inconsistencies, obsolescence and mystery. It basically works like this:&lt;br /&gt;
&lt;br /&gt;
1. The tests are run using a Makefile (Test/Makefile).&lt;br /&gt;
2. The Makefile is divided into a range of targets intended to test different features, such as test-to-html, test-markdown, test-cocoa and so on.&lt;br /&gt;
3. Each target contains multiple tests which apply one of the conversions supported by the Stylesheets and then check the result in some way.&lt;br /&gt;
&lt;br /&gt;
The conversions are applied in various different ways:&lt;br /&gt;
&lt;br /&gt;
* By running the symlinked command (e.g. bin/teitohtml) which calls the bin/transformtei script&lt;br /&gt;
* By running ant and passing one of the ant build files such as /docx/build-to.xml&lt;br /&gt;
* By running Saxon and applying one of the XSLT stylesheets directly (such as fo/to.xsl)&lt;br /&gt;
&lt;br /&gt;
There appears to be no rationale governing which method is used to invoke a process.&lt;br /&gt;
&lt;br /&gt;
==Problems with the current tests==&lt;br /&gt;
As I've worked on figuring out how the tests work, I've raised a number of bugs and fixed a few (see for instance GitHub issues 213 through 218). The problems fall into these main categories:&lt;br /&gt;
&lt;br /&gt;
* There are dozens of input test files, and very few of them have meaningful names or helpful comments to explain what they're testing (for instance, test14.xml, test2.xml, test25.xml, test26.xml, test3.xml, test4.xml, test6.xml, test31.xml, test36.xml, test23.xml, test17.xml, test20.xml, test27.xml, test22.xml, test28.xml, test8.xml, test32.xml, test24.xml, test12.xml, test5.xml).&lt;br /&gt;
* Many test files are already invalid or obsolete due to deprecation of various features in recent versions of P5.&lt;br /&gt;
* Different ways of calling the tests (see above) mean that we're not always testing the full process pathway, and it's not clear why.&lt;br /&gt;
* Different test results are handled in very different ways for no apparent reason. For instance, some test results are formatted with xmllint before being compared with their matching expected results file, and some are not.&lt;br /&gt;
* The approach of processing many small files rather than a small number of large ones means that the test process takes longer, because of the repeated necessity to spin up Java VMs.&lt;br /&gt;
* The tests can only be run on *NIX systems which have make installed.&lt;br /&gt;
&lt;br /&gt;
==Principles for rewriting the tests==&lt;br /&gt;
I believe it's time to start again with a new approach to testing, and I think we should adopt these principles in doing so:&lt;br /&gt;
&lt;br /&gt;
===Use Ant rather than make===&lt;br /&gt;
Ant is already used in the test process anyway. If we abandon make and write the whole thing in Ant, there will be a number of advantages:&lt;br /&gt;
&lt;br /&gt;
* One less technology to install and understand.&lt;br /&gt;
* Greater efficiency and therefore speed when other Java-based tasks are invoked.&lt;br /&gt;
* Better documentation and commenting.&lt;br /&gt;
&lt;br /&gt;
I've started rewriting a number of the existing tests in the Stylesheets/Test2 directory, using Ant instead of make, and I've encountered no major obstacles so far.&lt;br /&gt;
&lt;br /&gt;
===Cross-platform support===&lt;br /&gt;
This is difficult but feasible; I have a pilot project I'm working on in the Stylesheets/Test2 directory where I've written an ant buildfile called convert.xml which calls a transformation in two different ways based on the platform it's running on. The&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=A_Proposal_for_Rewriting_the_Stylesheets_Tests&amp;diff=15588</id>
		<title>A Proposal for Rewriting the Stylesheets Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=A_Proposal_for_Rewriting_the_Stylesheets_Tests&amp;diff=15588"/>
		<updated>2017-01-08T23:22:22Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: /* Principles for rewriting the tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==The current state of the tests==&lt;br /&gt;
The Stylesheets Test folder contains the current testing mechanism, and I've been investigating it over the last few weeks. The set of tests clearly grew by accretion with not much in the way of an overall plan, and predictably it has become an over-complicated collection of inconsistencies, obsolescence and mystery. It basically works like this:&lt;br /&gt;
&lt;br /&gt;
1. The tests are run using a Makefile (Test/Makefile).&lt;br /&gt;
2. The Makefile is divided into a range of targets intended to test different features, such as test-to-html, test-markdown, test-cocoa and so on.&lt;br /&gt;
3. Each target contains multiple tests which apply one of the conversions supported by the Stylesheets and then check the result in some way.&lt;br /&gt;
&lt;br /&gt;
The conversions are applied in various different ways:&lt;br /&gt;
&lt;br /&gt;
* By running the symlinked command (e.g. bin/teitohtml) which calls the bin/transformtei script&lt;br /&gt;
* By running ant and passing one of the ant build files such as /docx/build-to.xml&lt;br /&gt;
* By running Saxon and applying one of the XSLT stylesheets directly (such as fo/to.xsl)&lt;br /&gt;
&lt;br /&gt;
There appears to be no rationale governing which method is used to invoke a process.&lt;br /&gt;
&lt;br /&gt;
==Problems with the current tests==&lt;br /&gt;
As I've worked on figuring out how the tests work, I've raised a number of bugs and fixed a few (see for instance GitHub issues 213 through 218). The problems fall into these main categories:&lt;br /&gt;
&lt;br /&gt;
* There are dozens of input test files, and very few of them have meaningful names or helpful comments to explain what they're testing (for instance, test14.xml, test2.xml, test25.xml, test26.xml, test3.xml, test4.xml, test6.xml, test31.xml, test36.xml, test23.xml, test17.xml, test20.xml, test27.xml, test22.xml, test28.xml, test8.xml, test32.xml, test24.xml, test12.xml, test5.xml).&lt;br /&gt;
* Many test files are already invalid or obsolete due to deprecation of various features in recent versions of P5.&lt;br /&gt;
* Different ways of calling the tests (see above) mean that we're not always testing the full process pathway, and it's not clear why.&lt;br /&gt;
* The approach of processing many small files rather than a small number of large ones means that the test process takes longer, because of the repeated necessity to spin up Java VMs.&lt;br /&gt;
* The tests can only be run on *NIX systems which have make installed.&lt;br /&gt;
&lt;br /&gt;
==Principles for rewriting the tests==&lt;br /&gt;
I believe it's time to start again with a new approach to testing, and I think we should adopt these principles in doing so:&lt;br /&gt;
&lt;br /&gt;
===Use Ant rather than make===&lt;br /&gt;
Ant is already used in the test process anyway. If we abandon make and write the whole thing in Ant, there will be a number of advantages:&lt;br /&gt;
&lt;br /&gt;
* One less technology to install and understand.&lt;br /&gt;
* Greater efficiency and therefore speed when other Java-based tasks are invoked.&lt;br /&gt;
* Better documentation and commenting.&lt;br /&gt;
&lt;br /&gt;
I've started rewriting a number of the existing tests in the Stylesheets/Test2 directory, using Ant instead of make, and I've encountered no major obstacles so far.&lt;br /&gt;
&lt;br /&gt;
===Cross-platform support===&lt;br /&gt;
This is difficult but feasible; I have a pilot project I'm working on in the Stylesheets/Test2 directory where I've written an ant buildfile called convert.xml which calls a transformation in two different ways based on the platform it's running on. The&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=A_Proposal_for_Rewriting_the_Stylesheets_Tests&amp;diff=15587</id>
		<title>A Proposal for Rewriting the Stylesheets Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=A_Proposal_for_Rewriting_the_Stylesheets_Tests&amp;diff=15587"/>
		<updated>2017-01-08T23:15:51Z</updated>

		<summary type="html">&lt;p&gt;Mholmes: /* The current state of the tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==The current state of the tests==&lt;br /&gt;
The Stylesheets Test folder contains the current testing mechanism, and I've been investigating it over the last few weeks. The set of tests clearly grew by accretion with not much in the way of an overall plan, and predictably it has become an over-complicated collection of inconsistencies, obsolescence and mystery. It basically works like this:&lt;br /&gt;
&lt;br /&gt;
1. The tests are run using a Makefile (Test/Makefile).&lt;br /&gt;
2. The Makefile is divided into a range of targets intended to test different features, such as test-to-html, test-markdown, test-cocoa and so on.&lt;br /&gt;
3. Each target contains multiple tests which apply one of the conversions supported by the Stylesheets and then check the result in some way.&lt;br /&gt;
&lt;br /&gt;
The conversions are applied in various different ways:&lt;br /&gt;
&lt;br /&gt;
* By running the symlinked command (e.g. bin/teitohtml) which calls the bin/transformtei script&lt;br /&gt;
* By running ant and passing one of the ant build files such as /docx/build-to.xml&lt;br /&gt;
* By running Saxon and applying one of the XSLT stylesheets directly (such as fo/to.xsl)&lt;br /&gt;
&lt;br /&gt;
There appears to be no rationale governing which method is used to invoke a process.&lt;br /&gt;
&lt;br /&gt;
==Problems with the current tests==&lt;br /&gt;
As I've worked on figuring out how the tests work, I've raised a number of bugs and fixed a few (see for instance GitHub issues 213 through 218). The problems fall into these main categories:&lt;br /&gt;
&lt;br /&gt;
* There are dozens of input test files, and very few of them have meaningful names or helpful comments to explain what they're testing (for instance, test14.xml, test2.xml, test25.xml, test26.xml, test3.xml, test4.xml, test6.xml, test31.xml, test36.xml, test23.xml, test17.xml, test20.xml, test27.xml, test22.xml, test28.xml, test8.xml, test32.xml, test24.xml, test12.xml, test5.xml).&lt;br /&gt;
* Many test files are already invalid or obsolete due to deprecation of various features in recent versions of P5.&lt;br /&gt;
* Different ways of calling the tests (see above) mean that we're not always testing the full process pathway, and it's not clear why.&lt;br /&gt;
* The approach of processing many small files rather than a small number of large ones means that the test process takes longer, because of the repeated necessity to spin up Java VMs.&lt;br /&gt;
* The tests can only be run on *NIX systems which have make installed.&lt;br /&gt;
&lt;br /&gt;
==Principles for rewriting the tests==&lt;br /&gt;
I believe it's time to start again with a new approach to testing, and I think we should adopt these principles in doing so:&lt;/div&gt;</summary>
		<author><name>Mholmes</name></author>
		
	</entry>
</feed>