From: <lou...@us...> - 2015-08-09 20:56:57
|
Revision: 13325 http://sourceforge.net/p/tei/code/13325 Author: louburnard Date: 2015-08-09 20:56:56 +0000 (Sun, 09 Aug 2015) Log Message: ----------- add script to purify content models Added Paths: ----------- branches/P5-Pure/Scripts/ branches/P5-Pure/Scripts/purify.sh branches/P5-Pure/Scripts/purify.xsl Added: branches/P5-Pure/Scripts/purify.sh =================================================================== --- branches/P5-Pure/Scripts/purify.sh (rev 0) +++ branches/P5-Pure/Scripts/purify.sh 2015-08-09 20:56:56 UTC (rev 13325) @@ -0,0 +1,2 @@ +cd Source/impureSpecs/ +for f in *.xml; do echo $f; saxon -o:../Specs/$f -s:$f -xsl:../../Scripts/purify.xsl; done Added: branches/P5-Pure/Scripts/purify.xsl =================================================================== --- branches/P5-Pure/Scripts/purify.xsl (rev 0) +++ branches/P5-Pure/Scripts/purify.xsl 2015-08-09 20:56:56 UTC (rev 13325) @@ -0,0 +1,162 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xpath-default-namespace="http://www.tei-c.org/ns/1.0" + xmlns="http://www.tei-c.org/ns/1.0" + xmlns:rng="http://relaxng.org/ns/structure/1.0" + exclude-result-prefixes="#all" + version="2.0"> + + <xsl:template match="datatype"> + <xsl:copy-of select="."/> + </xsl:template> + + <xsl:template match="content"> + <xsl:choose> + <xsl:when test=".//rng:anyName"><xsl:copy-of select="."/></xsl:when> + <xsl:when test=".//rng:attribute"><xsl:copy-of select="."/></xsl:when> + <xsl:when test=".//rng:data"><xsl:copy-of select="."/></xsl:when> + <xsl:when test=".//rng:element"><xsl:copy-of select="."/></xsl:when> + <xsl:when test=".//rng:except"><xsl:copy-of select="."/></xsl:when> + <xsl:when test=".//rng:name"><xsl:copy-of select="."/></xsl:when> + <xsl:when test=".//rng:nsName"><xsl:copy-of select="."/></xsl:when> + <xsl:when test=".//rng:param"><xsl:copy-of select="."/></xsl:when> + <xsl:when test=".//rng:value"><xsl:copy-of select="."/></xsl:when> + <xsl:otherwise> + <xsl:copy> + <xsl:apply-templates/> + </xsl:copy> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match="rng:ref"> + <xsl:choose> + <xsl:when test="starts-with(@name,'model.')"> + <classRef key="{@name}"> + <xsl:call-template name="maxmin"/> + </classRef> + </xsl:when> + <xsl:when test="starts-with(@name,'att.')"> + <classRef key="{@name}"> + <xsl:call-template name="maxmin"/> + </classRef> + </xsl:when> + <xsl:when test="starts-with(@name,'macro.')"> + <macroRef key="{@name}"> + <xsl:call-template name="maxmin"/> + </macroRef> + </xsl:when> + <xsl:when test="starts-with(@name,'data.')"> + <macroRef key="{@name}"> + <xsl:call-template name="maxmin"/> + </macroRef> + </xsl:when> + <xsl:otherwise> + <elementRef key="{@name}"> + <xsl:call-template name="maxmin"/> + </elementRef> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match="rng:group"> + <xsl:if test="count(*)>1"> + <sequence> + <xsl:call-template name="maxmin"/> + <xsl:apply-templates/> + </sequence></xsl:if> + </xsl:template> + + <xsl:template match="rng:text"> + <textNode/> + </xsl:template> + + <xsl:template match="rng:choice"> + <alternate> + <xsl:call-template name="maxmin"/> + <xsl:apply-templates/> + </alternate> + </xsl:template> + + <xsl:template match="rng:zeroOrMore|rng:oneOrMore|rng:optional"> + <xsl:choose> + <xsl:when test="count(*)=1"> + <xsl:apply-templates/> + </xsl:when> + <xsl:otherwise> + <sequence> + <xsl:choose> + <xsl:when test="self::rng:zeroOrMore"> + <xsl:attribute name="minOccurs">0</xsl:attribute> + <xsl:attribute name="maxOccurs">unbounded</xsl:attribute> + </xsl:when> + <xsl:when test="self::rng:oneOrMore"> + <xsl:attribute name="minOccurs">1</xsl:attribute> + <xsl:attribute name="maxOccurs">unbounded</xsl:attribute> + </xsl:when> + <xsl:when test="self::rng:optional"> + <xsl:attribute name="minOccurs">0</xsl:attribute> + </xsl:when> + </xsl:choose> + <xsl:apply-templates/> + </sequence> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match="rng:empty"/> + + <xsl:template match="rng:*"> + <xsl:message><xsl:value-of select="local-name(.)"/><xsl:value-of select="@name"/> Unprocessed</xsl:message> + + <xsl:comment><xsl:value-of select="name(.)"/> + <xsl:value-of select="@name"/> Unprocessed</xsl:comment> + <xsl:apply-templates/> + + </xsl:template> + + <xsl:template + match="rng:anyName|rng:attribute|rng:data|rng:element|rng:except|rng:name|rng:nsName|rng:param|rng:data|rng:value"> + <xsl:message><xsl:value-of select="local-name(.)"/><xsl:value-of select="@name"/> TODO</xsl:message> + <junk> + <xsl:apply-templates/> + </junk> + </xsl:template> + + + <xsl:template match="exemplum"> + <xsl:copy-of select="."/> + </xsl:template> + + <xsl:template match="*"> + <xsl:copy> + <xsl:apply-templates select="@*|*|processing-instruction()|comment()|text()" /> + </xsl:copy> + </xsl:template> + + <xsl:template match="comment()|@*|processing-instruction()|text()"> + <xsl:copy-of select="."/> + </xsl:template> + + <xsl:template name="maxmin"> + <xsl:choose> + <xsl:when test="parent::*[local-name()='zeroOrMore' or local-name()='oneOrMore' or local-name()='optional'] and count(../*)>1"/> + <xsl:otherwise> + <xsl:choose> + <xsl:when test="parent::rng:zeroOrMore"> + <xsl:attribute name="minOccurs">0</xsl:attribute> + <xsl:attribute name="maxOccurs">unbounded</xsl:attribute> + </xsl:when> + <xsl:when test="parent::rng:oneOrMore"> + <xsl:attribute name="minOccurs">1</xsl:attribute> + <xsl:attribute name="maxOccurs">unbounded</xsl:attribute> + </xsl:when> + <xsl:when test="parent::rng:optional"> + <xsl:attribute name="minOccurs">0</xsl:attribute> + </xsl:when> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + +</xsl:stylesheet> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |