File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / libxml2 / test / xsdtest / xsdtest.xsl
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 23:37:59 2012 UTC (12 years, 7 months ago) by misho
Branches: libxml2, MAIN
CVS tags: v2_9_1p0, v2_9_1, v2_8_0p0, v2_8_0, v2_7_8, HEAD
libxml2

    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: &lt;!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>

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>