summaryrefslogtreecommitdiff
path: root/share/gcstar/xslt/createGCSValidator.xsl
diff options
context:
space:
mode:
Diffstat (limited to 'share/gcstar/xslt/createGCSValidator.xsl')
-rw-r--r--share/gcstar/xslt/createGCSValidator.xsl165
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>