Return to xsdtest.xsl CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / libxml2 / test / xsdtest |
1.1 ! misho 1: <?xml version="1.0"?> ! 2: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> ! 3: ! 4: <xsl:strip-space elements="xsdtest datatype equiv class"/> ! 5: ! 6: <xsl:output indent="yes" encoding="utf-8"/> ! 7: ! 8: <xsl:template match="xsdtest"> ! 9: <testSuite> ! 10: <xsl:apply-templates/> ! 11: </testSuite> ! 12: </xsl:template> ! 13: ! 14: <xsl:template match="datatype"> ! 15: <testSuite> ! 16: <documentation>Datatype <xsl:value-of select="@name"/></documentation> ! 17: <testCase> ! 18: <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/> ! 19: <correct> ! 20: <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" ! 21: datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> ! 22: <data type="{@name}"> ! 23: <xsl:for-each select="param"> ! 24: <param name="{@name}"><xsl:value-of select="."/></param> ! 25: </xsl:for-each> ! 26: </data> ! 27: </element> ! 28: </correct> ! 29: <xsl:apply-templates select="valid|invalid"/> ! 30: </testCase> ! 31: <xsl:apply-templates select="equiv/class|length|lessThan|incomparable"/> ! 32: </testSuite> ! 33: </xsl:template> ! 34: ! 35: <xsl:template match="valid"> ! 36: <xsl:call-template name="valid"/> ! 37: </xsl:template> ! 38: ! 39: <xsl:template match="invalid"> ! 40: <xsl:call-template name="invalid"/> ! 41: </xsl:template> ! 42: ! 43: <xsl:template name="valid"> ! 44: <valid> ! 45: <xsl:apply-templates select="@internalSubset"/> ! 46: <doc> ! 47: <xsl:copy-of select="namespace::*"/> ! 48: <xsl:value-of select="."/> ! 49: </doc> ! 50: </valid> ! 51: </xsl:template> ! 52: ! 53: <xsl:template name="invalid"> ! 54: <invalid> ! 55: <xsl:apply-templates select="@internalSubset"/> ! 56: <doc> ! 57: <xsl:copy-of select="namespace::*"/> ! 58: <xsl:value-of select="."/> ! 59: </doc> ! 60: </invalid> ! 61: </xsl:template> ! 62: ! 63: <xsl:template match="@internalSubset"> ! 64: <xsl:param name="doc" select="'doc'"/> ! 65: <xsl:attribute name="dtd"> ! 66: <xsl:text> ! 67: <!DOCTYPE </xsl:text> ! 68: <xsl:value-of select="$doc"/> ! 69: <xsl:text> [ ! 70: </xsl:text> ! 71: <xsl:value-of select="."/> ! 72: <xsl:text> ! 73: ]></xsl:text> ! 74: </xsl:attribute> ! 75: </xsl:template> ! 76: ! 77: <xsl:template match="class"> ! 78: <testCase> ! 79: <correct> ! 80: <xsl:for-each select="value[1]"> ! 81: <xsl:apply-templates select="@internalSubset"> ! 82: <xsl:with-param name="doc">element</xsl:with-param> ! 83: </xsl:apply-templates> ! 84: <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" ! 85: datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> ! 86: <value> ! 87: <xsl:copy-of select="namespace::*"/> ! 88: <xsl:attribute name="type"><xsl:value-of select="../../../@name"/></xsl:attribute> ! 89: <xsl:value-of select="."/> ! 90: </value> ! 91: </element> ! 92: </xsl:for-each> ! 93: </correct> ! 94: <xsl:for-each select="value[position() != 1]"> ! 95: <xsl:call-template name="valid"/> ! 96: </xsl:for-each> ! 97: <xsl:for-each select="preceding-sibling::class/value|following-sibling::class/value"> ! 98: <xsl:call-template name="invalid"/> ! 99: </xsl:for-each> ! 100: </testCase> ! 101: </xsl:template> ! 102: ! 103: <xsl:template match="length"> ! 104: <testCase> ! 105: <correct> ! 106: <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" ! 107: datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> ! 108: <data type="{../@name}"> ! 109: <param name="length"><xsl:value-of select="@value"/></param> ! 110: </data> ! 111: </element> ! 112: </correct> ! 113: <xsl:call-template name="valid"/> ! 114: </testCase> ! 115: ! 116: <testCase> ! 117: <correct> ! 118: <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" ! 119: datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> ! 120: <data type="{../@name}"> ! 121: <param name="length"><xsl:value-of select="@value + 1"/></param> ! 122: </data> ! 123: </element> ! 124: </correct> ! 125: <xsl:call-template name="invalid"/> ! 126: </testCase> ! 127: ! 128: <xsl:if test="@value != 0"> ! 129: <testCase> ! 130: <correct> ! 131: <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" ! 132: datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> ! 133: <data type="{../@name}"> ! 134: <param name="length"><xsl:value-of select="@value - 1"/></param> ! 135: </data> ! 136: </element> ! 137: </correct> ! 138: <xsl:call-template name="invalid"/> ! 139: </testCase> ! 140: </xsl:if> ! 141: ! 142: </xsl:template> ! 143: ! 144: <xsl:template match="lessThan"> ! 145: <testCase> ! 146: <correct> ! 147: <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" ! 148: datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> ! 149: <data type="{../@name}"> ! 150: <param name="minExclusive"> ! 151: <xsl:value-of select="value[1]"/> ! 152: </param> ! 153: </data> ! 154: </element> ! 155: </correct> ! 156: <valid> ! 157: <doc> ! 158: <xsl:value-of select="value[2]"/> ! 159: </doc> ! 160: </valid> ! 161: <invalid> ! 162: <doc> ! 163: <xsl:value-of select="value[1]"/> ! 164: </doc> ! 165: </invalid> ! 166: </testCase> ! 167: <testCase> ! 168: <correct> ! 169: <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" ! 170: datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> ! 171: <data type="{../@name}"> ! 172: <param name="minExclusive"> ! 173: <xsl:value-of select="value[2]"/> ! 174: </param> ! 175: </data> ! 176: </element> ! 177: </correct> ! 178: <invalid> ! 179: <doc> ! 180: <xsl:value-of select="value[1]"/> ! 181: </doc> ! 182: </invalid> ! 183: <invalid> ! 184: <doc> ! 185: <xsl:value-of select="value[2]"/> ! 186: </doc> ! 187: </invalid> ! 188: </testCase> ! 189: </xsl:template> ! 190: ! 191: <xsl:template match="incomparable"> ! 192: <testCase> ! 193: <correct> ! 194: <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" ! 195: datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> ! 196: <data type="{../@name}"> ! 197: <param name="minExclusive"> ! 198: <xsl:value-of select="value[1]"/> ! 199: </param> ! 200: </data> ! 201: </element> ! 202: </correct> ! 203: <invalid> ! 204: <doc> ! 205: <xsl:value-of select="value[2]"/> ! 206: </doc> ! 207: </invalid> ! 208: <invalid> ! 209: <doc> ! 210: <xsl:value-of select="value[1]"/> ! 211: </doc> ! 212: </invalid> ! 213: </testCase> ! 214: <testCase> ! 215: <correct> ! 216: <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" ! 217: datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> ! 218: <data type="{../@name}"> ! 219: <param name="minExclusive"> ! 220: <xsl:value-of select="value[2]"/> ! 221: </param> ! 222: </data> ! 223: </element> ! 224: </correct> ! 225: <invalid> ! 226: <doc> ! 227: <xsl:value-of select="value[1]"/> ! 228: </doc> ! 229: </invalid> ! 230: <invalid> ! 231: <doc> ! 232: <xsl:value-of select="value[2]"/> ! 233: </doc> ! 234: </invalid> ! 235: </testCase> ! 236: </xsl:template> ! 237: ! 238: </xsl:stylesheet>