You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
239 lines
5.7 KiB
239 lines
5.7 KiB
<?xml version="1.0"?>
|
|
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
|
|
|
<xsl:strip-space elements="xsdtest datatype equiv class"/>
|
|
|
|
<xsl:output indent="yes" encoding="utf-8"/>
|
|
|
|
<xsl:template match="xsdtest">
|
|
<testSuite>
|
|
<xsl:apply-templates/>
|
|
</testSuite>
|
|
</xsl:template>
|
|
|
|
<xsl:template match="datatype">
|
|
<testSuite>
|
|
<documentation>Datatype <xsl:value-of select="@name"/></documentation>
|
|
<testCase>
|
|
<requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
|
|
<correct>
|
|
<element xmlns="http://relaxng.org/ns/structure/1.0" name="doc"
|
|
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
|
<data type="{@name}">
|
|
<xsl:for-each select="param">
|
|
<param name="{@name}"><xsl:value-of select="."/></param>
|
|
</xsl:for-each>
|
|
</data>
|
|
</element>
|
|
</correct>
|
|
<xsl:apply-templates select="valid|invalid"/>
|
|
</testCase>
|
|
<xsl:apply-templates select="equiv/class|length|lessThan|incomparable"/>
|
|
</testSuite>
|
|
</xsl:template>
|
|
|
|
<xsl:template match="valid">
|
|
<xsl:call-template name="valid"/>
|
|
</xsl:template>
|
|
|
|
<xsl:template match="invalid">
|
|
<xsl:call-template name="invalid"/>
|
|
</xsl:template>
|
|
|
|
<xsl:template name="valid">
|
|
<valid>
|
|
<xsl:apply-templates select="@internalSubset"/>
|
|
<doc>
|
|
<xsl:copy-of select="namespace::*"/>
|
|
<xsl:value-of select="."/>
|
|
</doc>
|
|
</valid>
|
|
</xsl:template>
|
|
|
|
<xsl:template name="invalid">
|
|
<invalid>
|
|
<xsl:apply-templates select="@internalSubset"/>
|
|
<doc>
|
|
<xsl:copy-of select="namespace::*"/>
|
|
<xsl:value-of select="."/>
|
|
</doc>
|
|
</invalid>
|
|
</xsl:template>
|
|
|
|
<xsl:template match="@internalSubset">
|
|
<xsl:param name="doc" select="'doc'"/>
|
|
<xsl:attribute name="dtd">
|
|
<xsl:text>
|
|
<!DOCTYPE </xsl:text>
|
|
<xsl:value-of select="$doc"/>
|
|
<xsl:text> [
|
|
</xsl:text>
|
|
<xsl:value-of select="."/>
|
|
<xsl:text>
|
|
]></xsl:text>
|
|
</xsl:attribute>
|
|
</xsl:template>
|
|
|
|
<xsl:template match="class">
|
|
<testCase>
|
|
<correct>
|
|
<xsl:for-each select="value[1]">
|
|
<xsl:apply-templates select="@internalSubset">
|
|
<xsl:with-param name="doc">element</xsl:with-param>
|
|
</xsl:apply-templates>
|
|
<element xmlns="http://relaxng.org/ns/structure/1.0" name="doc"
|
|
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
|
<value>
|
|
<xsl:copy-of select="namespace::*"/>
|
|
<xsl:attribute name="type"><xsl:value-of select="../../../@name"/></xsl:attribute>
|
|
<xsl:value-of select="."/>
|
|
</value>
|
|
</element>
|
|
</xsl:for-each>
|
|
</correct>
|
|
<xsl:for-each select="value[position() != 1]">
|
|
<xsl:call-template name="valid"/>
|
|
</xsl:for-each>
|
|
<xsl:for-each select="preceding-sibling::class/value|following-sibling::class/value">
|
|
<xsl:call-template name="invalid"/>
|
|
</xsl:for-each>
|
|
</testCase>
|
|
</xsl:template>
|
|
|
|
<xsl:template match="length">
|
|
<testCase>
|
|
<correct>
|
|
<element xmlns="http://relaxng.org/ns/structure/1.0" name="doc"
|
|
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
|
<data type="{../@name}">
|
|
<param name="length"><xsl:value-of select="@value"/></param>
|
|
</data>
|
|
</element>
|
|
</correct>
|
|
<xsl:call-template name="valid"/>
|
|
</testCase>
|
|
|
|
<testCase>
|
|
<correct>
|
|
<element xmlns="http://relaxng.org/ns/structure/1.0" name="doc"
|
|
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
|
<data type="{../@name}">
|
|
<param name="length"><xsl:value-of select="@value + 1"/></param>
|
|
</data>
|
|
</element>
|
|
</correct>
|
|
<xsl:call-template name="invalid"/>
|
|
</testCase>
|
|
|
|
<xsl:if test="@value != 0">
|
|
<testCase>
|
|
<correct>
|
|
<element xmlns="http://relaxng.org/ns/structure/1.0" name="doc"
|
|
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
|
<data type="{../@name}">
|
|
<param name="length"><xsl:value-of select="@value - 1"/></param>
|
|
</data>
|
|
</element>
|
|
</correct>
|
|
<xsl:call-template name="invalid"/>
|
|
</testCase>
|
|
</xsl:if>
|
|
|
|
</xsl:template>
|
|
|
|
<xsl:template match="lessThan">
|
|
<testCase>
|
|
<correct>
|
|
<element xmlns="http://relaxng.org/ns/structure/1.0" name="doc"
|
|
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
|
<data type="{../@name}">
|
|
<param name="minExclusive">
|
|
<xsl:value-of select="value[1]"/>
|
|
</param>
|
|
</data>
|
|
</element>
|
|
</correct>
|
|
<valid>
|
|
<doc>
|
|
<xsl:value-of select="value[2]"/>
|
|
</doc>
|
|
</valid>
|
|
<invalid>
|
|
<doc>
|
|
<xsl:value-of select="value[1]"/>
|
|
</doc>
|
|
</invalid>
|
|
</testCase>
|
|
<testCase>
|
|
<correct>
|
|
<element xmlns="http://relaxng.org/ns/structure/1.0" name="doc"
|
|
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
|
<data type="{../@name}">
|
|
<param name="minExclusive">
|
|
<xsl:value-of select="value[2]"/>
|
|
</param>
|
|
</data>
|
|
</element>
|
|
</correct>
|
|
<invalid>
|
|
<doc>
|
|
<xsl:value-of select="value[1]"/>
|
|
</doc>
|
|
</invalid>
|
|
<invalid>
|
|
<doc>
|
|
<xsl:value-of select="value[2]"/>
|
|
</doc>
|
|
</invalid>
|
|
</testCase>
|
|
</xsl:template>
|
|
|
|
<xsl:template match="incomparable">
|
|
<testCase>
|
|
<correct>
|
|
<element xmlns="http://relaxng.org/ns/structure/1.0" name="doc"
|
|
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
|
<data type="{../@name}">
|
|
<param name="minExclusive">
|
|
<xsl:value-of select="value[1]"/>
|
|
</param>
|
|
</data>
|
|
</element>
|
|
</correct>
|
|
<invalid>
|
|
<doc>
|
|
<xsl:value-of select="value[2]"/>
|
|
</doc>
|
|
</invalid>
|
|
<invalid>
|
|
<doc>
|
|
<xsl:value-of select="value[1]"/>
|
|
</doc>
|
|
</invalid>
|
|
</testCase>
|
|
<testCase>
|
|
<correct>
|
|
<element xmlns="http://relaxng.org/ns/structure/1.0" name="doc"
|
|
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
|
<data type="{../@name}">
|
|
<param name="minExclusive">
|
|
<xsl:value-of select="value[2]"/>
|
|
</param>
|
|
</data>
|
|
</element>
|
|
</correct>
|
|
<invalid>
|
|
<doc>
|
|
<xsl:value-of select="value[1]"/>
|
|
</doc>
|
|
</invalid>
|
|
<invalid>
|
|
<doc>
|
|
<xsl:value-of select="value[2]"/>
|
|
</doc>
|
|
</invalid>
|
|
</testCase>
|
|
</xsl:template>
|
|
|
|
</xsl:stylesheet>
|