|
|
<?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> |
|
|
|