Browse Source

Moved over to src/foschema


git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/branches/fop-0_20_2-maintain@195851 13f79535-47bb-0310-9956-ffa450edef68
tags/fop-0_20_5rc2
Jeremias Maerki 21 years ago
parent
commit
c2ab403bf1
4 changed files with 0 additions and 9100 deletions
  1. 0
    4292
      docs/foschema/fop.xsd
  2. 0
    4292
      docs/foschema/fop4f.xsd
  3. 0
    197
      docs/foschema/schema2completion.xsl
  4. 0
    319
      docs/foschema/schema2dtd.xsl

+ 0
- 4292
docs/foschema/fop.xsd
File diff suppressed because it is too large
View File


+ 0
- 4292
docs/foschema/fop4f.xsd
File diff suppressed because it is too large
View File


+ 0
- 197
docs/foschema/schema2completion.xsl View File

@@ -1,197 +0,0 @@
<?xml version="1.0"?>

<xsl:stylesheet saxon:trace="no"
version="1.1"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:saxon="http://icl.com/saxon"
xmlns:xs = "http://www.w3.org/2001/XMLSchema"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:date="http://exslt.org/dates-and-times"
xmlns:math="http://exslt.org/math"
extension-element-prefixes="saxon date math"
exclude-result-prefixes="fo xs">

<xsl:output method="xml" version="4.0" omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:variable name="properties" select="document('foproperties.xml')"/>

<xsl:template match="/xs:schema">
<xsl:apply-templates select="./xs:element"/>
</xsl:template>

<xsl:template match="xs:group">
<xsl:for-each select="./xs:choice/xs:element">
<xsl:value-of select="./@ref"/>
<xsl:text>|</xsl:text>
</xsl:for-each>
<!-- Remove any Groups not implemented by FOP -->
<xsl:for-each select="./xs:choice/xs:group[substring(./@ref,string-length(./@ref) - 3) != '_Not']">
<xsl:variable name="ref">
<xsl:call-template name="strip_fo">
<xsl:with-param name="ref" select="./@ref"/>
</xsl:call-template>
</xsl:variable>
<xsl:apply-templates select="/xs:schema/xs:group[@name=$ref]"/>
</xsl:for-each>
</xsl:template>

<xsl:template match="xs:attributeGroup">
<xsl:for-each select="./xs:attribute">
<xsl:apply-templates select="."/>
</xsl:for-each>
<!-- Remove any attributeGroups not implemented by FOP -->
<xsl:for-each select="./xs:attributeGroup[substring(./@ref,string-length(./@ref) - 3) != '_Not']">
<xsl:variable name="ref">
<xsl:call-template name="strip_fo">
<xsl:with-param name="ref" select="./@ref"/>
</xsl:call-template>
</xsl:variable>
<xsl:apply-templates select="/xs:schema/xs:attributeGroup[@name = $ref]"/>
</xsl:for-each>
</xsl:template>

<xsl:template match="xs:simpleType">
<xsl:variable name="name" select="@name"/>
<xsl:for-each select="./xs:restriction/xs:enumeration">
<xsl:value-of select="./@value"/>
<xsl:text>|</xsl:text>
<xsl:message>Attribute <xsl:value-of select="./@value"/></xsl:message>
</xsl:for-each>
<xsl:variable name="unions" select="./xs:union/@memberTypes"/>
<xsl:if test="$unions">
<xsl:call-template name="splitUnion">
<xsl:with-param name="union" select="$unions"/>
</xsl:call-template>
</xsl:if>
<xsl:for-each select="./xs:annotation/xs:documentation/xs:enumeration">
<xsl:comment>
This supplies annotated list values inserted in the schema
solely for the purpose of supplying examples of valid values for a type.
</xsl:comment>
<xsl:value-of select="./@value"/>
<xsl:text>|</xsl:text>
<xsl:message>Fake Attribute <xsl:value-of select="./@value"/></xsl:message>
</xsl:for-each>
</xsl:template>

<xsl:template name="splitUnion">
<xsl:param name="union"/>
<xsl:variable name="type">
<xsl:call-template name="strip_fo">
<xsl:with-param name="ref">
<xsl:if test="not(substring-before($union,' '))">
<xsl:value-of select="$union"/>
</xsl:if>
<xsl:value-of select="substring-before($union,' ')"/>
</xsl:with-param>
</xsl:call-template>
</xsl:variable>
<xsl:message>Calling <xsl:value-of select="$type"/></xsl:message>
<xsl:apply-templates select="/xs:schema/xs:simpleType[@name = $type]"/>
<xsl:if test="substring-after($union,' ')">
<xsl:call-template name="splitUnion">
<xsl:with-param name="union" select="substring-after($union,' ')"/>
</xsl:call-template>
</xsl:if>
</xsl:template>

<xsl:template match="xs:element">
<xsl:text disable-output-escaping="yes">&lt;element name="fo:</xsl:text>
<xsl:value-of select="./@name"/>
<xsl:text>"
content="</xsl:text>
<xsl:choose>
<xsl:when test="( not(./xs:complexType/xs:sequence) and not(./xs:complexType/xs:choice) )">
<xsl:text>EMPTY</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>(</xsl:text>
<xsl:if test="./xs:complexType/@mixed = 'true'">
<xsl:text>#PCDATA|</xsl:text>
</xsl:if>
<xsl:for-each select="./xs:complexType/xs:sequence|./xs:complexType/xs:choice">
<xsl:for-each select="./xs:element">
<xsl:value-of select="./@ref"/>
<xsl:text>|</xsl:text>
</xsl:for-each>
<xsl:for-each select="./xs:group">
<xsl:variable name="ref">
<xsl:call-template name="strip_fo">
<xsl:with-param name="ref" select="./@ref"/>
</xsl:call-template>
</xsl:variable>
<xsl:apply-templates select="/xs:schema/xs:group[@name=$ref]"/>
</xsl:for-each>
</xsl:for-each>
<xsl:text>)</xsl:text>
</xsl:otherwise>
</xsl:choose>
<xsl:text disable-output-escaping="yes">"&gt;
</xsl:text>
<xsl:for-each select="./xs:complexType/xs:attribute">
<xsl:apply-templates select="."/>
</xsl:for-each>
<xsl:for-each select="./xs:complexType/xs:attributeGroup">
<xsl:variable name="ref">
<xsl:call-template name="strip_fo">
<xsl:with-param name="ref" select="./@ref"/>
</xsl:call-template>
</xsl:variable>
<xsl:apply-templates select="/xs:schema/xs:attributeGroup[@name = $ref]"/>
</xsl:for-each>
<xsl:text disable-output-escaping="yes">
&lt;/element&gt;
</xsl:text>
</xsl:template>

<xsl:template match="xs:attribute">
<xsl:variable name="attributeName" select="./@name"/>
<xsl:variable name="type">
<xsl:call-template name="strip_fo">
<xsl:with-param name="ref" select="./@type"/>
</xsl:call-template>
</xsl:variable>
<xsl:message>Processing type = <xsl:value-of select="$type"/></xsl:message>
<attribute name="{$attributeName}">
<xsl:attribute name="type">
<xsl:variable name="content">
<xsl:choose>
<xsl:when test="$properties/property-list/generic-property-list/property[name = $attributeName]/enumeration">
<!-- Get the valid values from FOP -->
<xsl:for-each select="$properties/property-list/generic-property-list/property[name = $attributeName]/enumeration/value">
<xsl:value-of select="."/><xsl:text>|</xsl:text>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="/xs:schema/xs:simpleType[@name = $type]"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:choose>
<xsl:when test="$content != ''">
<xsl:text>(</xsl:text>
<xsl:value-of select="$content"/>
<xsl:text>)</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>CDATA</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</attribute>
</xsl:template>

<xsl:template name="strip_fo">
<xsl:param name="ref"/>
<xsl:choose>
<xsl:when test="substring($ref,1,3) = 'fo:'">
<xsl:value-of select="substring($ref,4)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$ref"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>

</xsl:stylesheet>

+ 0
- 319
docs/foschema/schema2dtd.xsl View File

@@ -1,319 +0,0 @@
<?xml version="1.0"?>

<xsl:stylesheet saxon:trace="no"
version="1.1"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:saxon="http://icl.com/saxon"
xmlns:xs = "http://www.w3.org/2001/XMLSchema"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:date="http://exslt.org/dates-and-times"
xmlns:math="http://exslt.org/math"
extension-element-prefixes="saxon date math"
exclude-result-prefixes="fo">

<xsl:output method="xml" version="1.0" omit-xml-declaration="no" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:template match="/xs:schema">
<xsl:text>
</xsl:text>
<xsl:comment>
This DTD has been developed in order to validate XSL FO documents
The namespace prefix is xmlns:fo="http://www.w3.org/1999/XSL/Format".
In addition, the functionality implemented or not in FOP has been segregated
To create an FOP only validating DTD, remove the references marked %\([a-zA-Z_]+\)_Not;
I certainly have not exhaustively removed all of the properties not implemented in FOP.
If you notice an item that is incorrectly included or excluded, please send me a note
The FOP only DTD will not guard against the entering of attribute values not implemented by FOP
(Such as fo:leader-pattern="use-content")
See http://xml.apache.org/fop/implemented.html for more detailed restrictions
It has not been well tested.
For instance, the length attribute is able to be negative for some elements like margins.
I have not represented that here.
I have not added values for the Aural properties
There are several instances where I've entered %integer_Type; and it should be positive-integer or number
The DTD trys to handle the text based rules re: fo:markers, fo:float, footer and fo:initial-property-set
But, allows you to do illegal things if you want because I couldn't figure out how to constrain against the illegal actions.
Please e-mail your comments to cpaussa@myrealbox.com

</xsl:comment><xsl:text>
</xsl:text><xsl:comment> *************************************************************** </xsl:comment><xsl:text>
</xsl:text><xsl:comment> Entity definitions for groups of formatting objects </xsl:comment><xsl:text>
</xsl:text><xsl:comment> *************************************************************** </xsl:comment><xsl:text>
</xsl:text>
<xsl:apply-templates select="./xs:simpleType"/>
<xsl:text>
</xsl:text><xsl:comment> *************************************************************** </xsl:comment><xsl:text>
</xsl:text><xsl:comment> Attribute Groups </xsl:comment><xsl:text>
</xsl:text><xsl:comment> *************************************************************** </xsl:comment>
<xsl:apply-templates select="./xs:attributeGroup"/>
<xsl:text>
</xsl:text><xsl:comment> *************************************************************** </xsl:comment><xsl:text>
</xsl:text><xsl:comment> Element Groups </xsl:comment><xsl:text>
</xsl:text><xsl:comment> *************************************************************** </xsl:comment><xsl:text>
</xsl:text>
<xsl:apply-templates select="./xs:group"/>
<xsl:text>
</xsl:text><xsl:comment> *************************************************************** </xsl:comment><xsl:text>
</xsl:text><xsl:comment> Elements </xsl:comment><xsl:text>
</xsl:text><xsl:comment> *************************************************************** </xsl:comment><xsl:text>
</xsl:text>
<xsl:apply-templates select="./xs:element"/>
</xsl:template>

<xsl:template match="xs:group">
<xsl:text disable-output-escaping="yes">
&lt;!ENTITY % </xsl:text><xsl:value-of select="./@name"/><xsl:text> "</xsl:text>
<xsl:for-each select="./xs:choice/xs:element">
<xsl:text>
</xsl:text>
<xsl:value-of select="./@ref"/>
<xsl:if test="position() != last()">
<xsl:text> |</xsl:text>
</xsl:if>
</xsl:for-each>
<xsl:if test="./xs:choice/xs:group">
<xsl:variable name="ref1">
<xsl:call-template name="strip_fo">
<xsl:with-param name="ref" select="./xs:choice/xs:group[1]/@ref"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="ref2">
<xsl:call-template name="strip_fo">
<xsl:with-param name="ref" select="./xs:choice/xs:group[2]/@ref"/>
</xsl:call-template>
</xsl:variable>
<xsl:text>
%</xsl:text>
<xsl:value-of select="$ref1"/>
<xsl:text>;</xsl:text>
<xsl:if test="(/xs:schema/xs:group[@name = $ref1]/xs:choice/xs:element) and (/xs:schema/xs:group[@name = $ref2]/xs:choice/xs:element)">
<xsl:text>| </xsl:text>
</xsl:if>
<xsl:text>
%</xsl:text>
<xsl:value-of select="$ref2"/><xsl:text>;</xsl:text>
</xsl:if>
<xsl:text disable-output-escaping="yes">
"&gt;</xsl:text>
</xsl:template>

<xsl:template match="xs:attributeGroup">
<xsl:text disable-output-escaping="yes">
&lt;!ENTITY % </xsl:text><xsl:value-of select="./@name"/><xsl:text> "</xsl:text>
<xsl:for-each select="./xs:attribute">
<xsl:variable name="name">
<xsl:call-template name="strip_fo">
<xsl:with-param name="ref" select="./@name"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="type">
<xsl:call-template name="strip_fo">
<xsl:with-param name="ref" select="./@type"/>
</xsl:call-template>
</xsl:variable>
<xsl:text>
</xsl:text>
<xsl:value-of select="$name"/>
<xsl:choose>
<xsl:when test="$type = 'xs:string'">
<xsl:text> CDATA</xsl:text>
</xsl:when>
<xsl:when test="/xs:schema/xs:simpleType[@name = $type]/xs:restriction/xs:enumeration">
<!--This item is a directly enumerated type-->
<xsl:text> (%</xsl:text>
<xsl:value-of select="$type"/>
<xsl:text>;)</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text> CDATA</xsl:text>
</xsl:otherwise>
</xsl:choose>
<xsl:text> #IMPLIED</xsl:text>
</xsl:for-each>
<xsl:for-each select="./xs:attributeGroup">
<xsl:variable name="ref">
<xsl:call-template name="strip_fo">
<xsl:with-param name="ref" select="./@ref"/>
</xsl:call-template>
</xsl:variable>
<xsl:text>
%</xsl:text><xsl:value-of select="$ref"/><xsl:text>;</xsl:text>
</xsl:for-each>
<xsl:text disable-output-escaping="yes">
"&gt;</xsl:text>
</xsl:template>

<xsl:template match="xs:simpleType">
<xsl:if test="./xs:restriction/xs:enumeration">
<xsl:text disable-output-escaping="yes">
&lt;!ENTITY % </xsl:text><xsl:value-of select="./@name"/><xsl:text> "</xsl:text>
<xsl:for-each select="./xs:restriction/xs:enumeration">
<xsl:value-of select="./@value"/>
<xsl:if test="position() != last()">
<xsl:text>|</xsl:text>
</xsl:if>
</xsl:for-each>
<xsl:text disable-output-escaping="yes">"&gt;</xsl:text>
</xsl:if>
</xsl:template>

<xsl:template match="xs:element">
<xsl:text disable-output-escaping="yes">&lt;!ELEMENT fo:</xsl:text>
<xsl:value-of select="./@name"/>
<xsl:choose>
<xsl:when test="( not(./xs:complexType/xs:sequence) and not(./xs:complexType/xs:choice) )">
<xsl:text> EMPTY</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text> (</xsl:text>
<xsl:if test="./xs:complexType/@mixed = 'true'">
<xsl:text>#PCDATA|</xsl:text>
</xsl:if>
<xsl:for-each select="./xs:complexType/xs:sequence">
<xsl:for-each select="./xs:element">
<xsl:value-of select="./@ref"/>
<xsl:call-template name="addPlus"/>
<xsl:if test="position() != last()">
<xsl:text>,</xsl:text>
</xsl:if>
</xsl:for-each>
<xsl:for-each select="./xs:group">
<xsl:text>%</xsl:text>
<xsl:variable name="ref">
<xsl:call-template name="strip_fo">
<xsl:with-param name="ref" select="./@ref"/>
</xsl:call-template>
</xsl:variable>
<xsl:value-of select="$ref"/>
<xsl:text>;</xsl:text>
<xsl:call-template name="addPlus"/>
<xsl:if test="position() != last()">
<xsl:text>,</xsl:text>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
<xsl:for-each select="./xs:complexType/xs:choice">
<xsl:for-each select="./xs:element">
<xsl:value-of select="./@ref"/>
<xsl:call-template name="addPlus"/>
<xsl:if test="position() != last()">
<xsl:text>|</xsl:text>
</xsl:if>
</xsl:for-each>
<xsl:for-each select="./xs:group">
<xsl:text>%</xsl:text>
<xsl:variable name="ref">
<xsl:call-template name="strip_fo">
<xsl:with-param name="ref" select="./@ref"/>
</xsl:call-template>
</xsl:variable>
<xsl:value-of select="$ref"/>
<xsl:text>;</xsl:text>
<xsl:call-template name="addPlus"/>
<xsl:if test="position() != last()">
<xsl:text>|</xsl:text>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
<xsl:text>)</xsl:text>
</xsl:otherwise>
</xsl:choose>
<xsl:for-each select="./xs:complexType/xs:sequence">
<xsl:call-template name="addPlus"/>
</xsl:for-each>
<xsl:for-each select="./xs:complexType/xs:choice">
<xsl:call-template name="addPlus"/>
</xsl:for-each>
<xsl:text disable-output-escaping="yes">&gt;
&lt;!ATTLIST fo:</xsl:text>
<xsl:value-of select="./@name"/>
<xsl:for-each select="./xs:complexType/xs:attribute">
<xsl:variable name="name">
<xsl:call-template name="strip_fo">
<xsl:with-param name="ref" select="./@name"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="type">
<xsl:call-template name="strip_fo">
<xsl:with-param name="ref" select="./@type"/>
</xsl:call-template>
</xsl:variable>
<xsl:text>
</xsl:text>
<xsl:value-of select="$name"/>
<xsl:choose>
<xsl:when test="$type = 'xs:string'">
<xsl:text> CDATA</xsl:text>
</xsl:when>
<xsl:when test="/xs:schema/xs:simpleType[@name = $type]/xs:restriction/xs:enumeration">
<!--This item is a directly enumerated type-->
<xsl:text> (%</xsl:text>
<xsl:value-of select="$type"/>
<xsl:text>;)</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text> CDATA</xsl:text>
</xsl:otherwise>
</xsl:choose>
<xsl:choose>
<xsl:when test="@use = 'required'">
<xsl:text> #REQUIRED</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text> #IMPLIED</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
<xsl:for-each select="./xs:complexType/xs:attributeGroup">
<xsl:variable name="ref">
<xsl:call-template name="strip_fo">
<xsl:with-param name="ref" select="./@ref"/>
</xsl:call-template>
</xsl:variable>
<xsl:text>
%</xsl:text>
<xsl:value-of select="$ref"/>
<xsl:text>;</xsl:text>
</xsl:for-each>
<xsl:text disable-output-escaping="yes">
&gt;
</xsl:text>
</xsl:template>

<xsl:template name="addPlus">
<xsl:choose>
<xsl:when test="(@minOccurs = 0) and (@maxOccurs = 'unbounded')">
<xsl:text>*</xsl:text>
</xsl:when>
<xsl:when test="(@minOccurs = 0) and ((@maxOccurs = 1) or not(@maxOccurs))">
<xsl:text>?</xsl:text>
</xsl:when>
<xsl:when test="((@minOccurs = 1) or not(@minOccurs)) and (@maxOccurs = 'unbounded')">
<xsl:text>+</xsl:text>
</xsl:when>
<xsl:when test="not(@minOccurs) and not(@maxOccurs)">
</xsl:when>
<xsl:otherwise>
<xsl:text>!error!</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:template>

<xsl:template name="strip_fo">
<xsl:param name="ref"/>
<xsl:choose>
<xsl:when test="substring($ref,1,3) = 'fo:'">
<xsl:value-of select="substring($ref,4)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$ref"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>

</xsl:stylesheet>

Loading…
Cancel
Save