diff options
Diffstat (limited to 'share/gcstar/xslt/createGCSValidator.xsl')
| -rw-r--r-- | share/gcstar/xslt/createGCSValidator.xsl | 165 | 
1 files changed, 165 insertions, 0 deletions
diff --git a/share/gcstar/xslt/createGCSValidator.xsl b/share/gcstar/xslt/createGCSValidator.xsl new file mode 100644 index 0000000..2df922a --- /dev/null +++ b/share/gcstar/xslt/createGCSValidator.xsl @@ -0,0 +1,165 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<!-- +    Document   : ConvertGCMtoXSD.xsl +    Created on : April 26, 2007, 9:41 PM +    Version    : The first one ;) +    Author     : toroman +    Description: +       Transforms GCM into XSD which can validate GCS files. +--> + +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +    xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0"> +         +    <xsl:output method="xml" indent="yes" /> +     +    <xsl:template match="/"> +        <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> +            <xs:complexType name="itemType"> +                <xs:sequence> +                    <xsl:apply-templates select="/collection/fields/field" /> +                </xs:sequence> +            </xs:complexType> +            <xs:element name="collection"> +                <xs:complexType> +                    <xs:sequence> +                        <xs:element name="information"> +                            <xs:complexType> +                                <xs:sequence> +                                    <xs:element name="name" type="xs:string" /> +                                </xs:sequence> +                            </xs:complexType> +                        </xs:element> +                        <xs:element name="item" maxOccurs="unbounded" type="itemType" /> +                    </xs:sequence> +                    <xs:attribute name="type" type="xs:string" /> +                    <xs:attribute name="items" type="xs:integer" /> +                </xs:complexType> +            </xs:element> +        </xs:schema> +    </xsl:template> + +    <xsl:template match="/collection/fields/field"> +        <xsl:choose> +            <xsl:when test="@type='file'"> +                <xsl:text disable-output-escaping="yes"><![CDATA[<xs:element name="]]></xsl:text> +                <xsl:value-of select="@value" />  +                <xsl:text disable-output-escaping="yes"><![CDATA[" type="xs:string" /> +                ]]></xsl:text> +            </xsl:when> +            <xsl:when test="@type='number'"> +                <xsl:text disable-output-escaping="yes"><![CDATA[<xs:element name="]]></xsl:text> +                <xsl:value-of select="@value" />  +                <xsl:text disable-output-escaping="yes"><![CDATA[" type="xs:integer" /> +                ]]></xsl:text> +            </xsl:when> +            <xsl:when test="@type='options'"> +                <xsl:text disable-output-escaping="yes"><![CDATA[<xs:element name="]]></xsl:text> +                <xsl:value-of select="@value" />  +                <xsl:text disable-output-escaping="yes"><![CDATA[" type="xs:integer" /> +                ]]></xsl:text> +            </xsl:when> +            <xsl:when test="@type='age'"> +                <xsl:text disable-output-escaping="yes"><![CDATA[<xs:element name="]]></xsl:text> +                <xsl:value-of select="@value" />  +                <xsl:text disable-output-escaping="yes"><![CDATA[" type="xs:integer" /> +                ]]></xsl:text> +            </xsl:when> +            <xsl:when test="@type='short text'"> +                <xsl:text disable-output-escaping="yes"><![CDATA[<xs:element name="]]></xsl:text> +                <xsl:value-of select="@value" />  +                <xsl:text disable-output-escaping="yes"><![CDATA[" type="xs:string" /> +                ]]></xsl:text> +            </xsl:when> +            <xsl:when test="@type='image'"> +                <xsl:text disable-output-escaping="yes"><![CDATA[<xs:element name="]]></xsl:text> +                <xsl:value-of select="@value" />  +                <xsl:text disable-output-escaping="yes"><![CDATA[" type="xs:string" /> +                ]]></xsl:text> +            </xsl:when> +            <xsl:when test="@type='long text'"> +                <xsl:text disable-output-escaping="yes"><![CDATA[<xs:element name="]]></xsl:text> +                <xsl:value-of select="@value" />  +                <xsl:text disable-output-escaping="yes"><![CDATA[" type="xs:string" /> +                ]]></xsl:text> +            </xsl:when> +            <xsl:when test="@type='button'"> +                <xsl:text disable-output-escaping="yes"><![CDATA[<xs:element name="]]></xsl:text> +                <xsl:value-of select="@value" />  +                <xsl:text disable-output-escaping="yes"><![CDATA[" type="xs:string" /> +                ]]></xsl:text> +            </xsl:when> +            <xsl:when test="@type='yesno'"> +                <xsl:text disable-output-escaping="yes"><![CDATA[<xs:element name="]]></xsl:text> +                <xsl:value-of select="@value" />  +                <xsl:text disable-output-escaping="yes"><![CDATA[" type="xs:boolean" /> +                ]]></xsl:text> +            </xsl:when> +            <xsl:when test="@type='date'"> +                <xsl:text disable-output-escaping="yes"><![CDATA[ +                <xs:element name="]]></xsl:text> +                    <xsl:value-of select="@value" />  +                    <xsl:text disable-output-escaping="yes"><![CDATA["> +                    <xs:simpleType> +                        <xs:restriction base="xs:string"> +                            <xs:pattern value="\d\d/\d\d/\d\d\d\d" /> +                        </xs:restriction> +                    </xs:simpleType> +                </xs:element> +                ]]></xsl:text> +            </xsl:when> +            <xsl:when test="@type='single list'"> +                <xsl:text disable-output-escaping="yes"><![CDATA[ +                <xs:element name="]]></xsl:text> +                    <xsl:value-of select="@value" />  +                    <xsl:text disable-output-escaping="yes"><![CDATA["> +                    <xs:complexType> +                        <xs:sequence maxOccurs="unbounded"> +                            <xs:element name="line" maxOccurs="unbounded"> +                                <xs:complexType> +                                    <xs:sequence minOccurs="1" maxOccurs="1"> +                                        <xs:element name="col" type="xs:string" /> +                                    </xs:sequence> +                                </xs:complexType> +                            </xs:element> +                        </xs:sequence> +                    </xs:complexType> +                </xs:element> +                ]]></xsl:text> +            </xsl:when> +            <xsl:when test="@type='double list'"> +                <xsl:text disable-output-escaping="yes"><![CDATA[ +                <xs:element name="]]></xsl:text> +                    <xsl:value-of select="@value" />  +                    <xsl:text disable-output-escaping="yes"><![CDATA["> +                    <xs:complexType> +                        <xs:sequence maxOccurs="unbounded"> +                            <xs:element name="line" maxOccurs="unbounded"> +                                <xs:complexType> +                                    <xs:sequence minOccurs="2" maxOccurs="2"> +                                        <xs:element name="col" type="xs:string" /> +                                    </xs:sequence> +                                </xs:complexType> +                            </xs:element> +                        </xs:sequence> +                    </xs:complexType> +                </xs:element> +                ]]></xsl:text> +            </xsl:when> +            <xsl:when test="@type='history text'"> +                <xsl:text disable-output-escaping="yes"><![CDATA[<xs:element name="]]></xsl:text> +                <xsl:value-of select="@value" />  +                <xsl:text disable-output-escaping="yes"><![CDATA[" type="xs:string" /> +                ]]></xsl:text> +            </xsl:when> +            <xsl:otherwise> +                <p> +                    <xsl:text>Unknown Type - this should trigger error on XSD validation! </xsl:text>  +                    <xsl:value-of select="@type" /> +                </p><![CDATA[ +                ]]>                 +            </xsl:otherwise> +        </xsl:choose> +    </xsl:template> +</xsl:stylesheet>  | 
