Annotation of modules/damieng/clean_xml/loncapa.xsd, revision 1.7

1.1       damieng     1: <?xml version="1.0" encoding="UTF-8"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xml:lang="en">
                      2:   <xs:annotation>
                      3:     <xs:documentation>
                      4:       XML schema for LON-CAPA 2 documents.
                      5:     </xs:documentation>
                      6:   </xs:annotation>
                      7:   
                      8:   <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd">
                      9:     <xs:annotation>
                     10:       <xs:documentation>
                     11:         This import is needed to use xml:space="preserve".
                     12:       </xs:documentation>
                     13:     </xs:annotation>
                     14:   </xs:import>
                     15:   
                     16:   <xs:annotation>
                     17:     <xs:documentation>
                     18:       Shared simple types.
                     19:     </xs:documentation>
                     20:   </xs:annotation>
                     21:   <xs:simpleType name="perl">
                     22:     <xs:restriction base="xs:string">
                     23:       <xs:pattern value="\s*-?(($|&amp;)([#|$]*[A-Za-z][\w_]*|\{[A-Za-z][\w_]*\}))([\[\{].+[\]\}])*(\([^$&amp;\)]+\))*\s*"/>
                     24:     </xs:restriction>
                     25:   </xs:simpleType>
                     26:   <xs:simpleType name="int-or-perl">
                     27:     <xs:union memberTypes="xs:int perl"/>
                     28:   </xs:simpleType>
                     29:   <xs:simpleType name="non-negative-int-or-perl">
                     30:     <xs:union memberTypes="xs:nonNegativeInteger perl"/>
                     31:   </xs:simpleType>
                     32:   <xs:simpleType name="decimal-or-perl">
                     33:     <xs:union memberTypes="xs:decimal perl"/>
                     34:   </xs:simpleType>
                     35:   <xs:simpleType name="real">
                     36:     <xs:restriction base="xs:string">
                     37:       <xs:pattern value="[+-]?\d*\.?\d*([eE][+-]?\d+)?"/>
                     38:     </xs:restriction>
                     39:   </xs:simpleType>
                     40:   <xs:simpleType name="real-or-perl">
                     41:     <xs:union memberTypes="real perl"/>
                     42:   </xs:simpleType>
                     43:   <xs:simpleType name="yesno">
                     44:     <xs:restriction base="xs:string">
                     45:       <xs:enumeration value="yes"/>
                     46:       <xs:enumeration value="no"/>
                     47:     </xs:restriction>
                     48:   </xs:simpleType>
                     49:   <xs:simpleType name="yesno-or-perl">
                     50:     <xs:union memberTypes="yesno perl"/>
                     51:   </xs:simpleType>
                     52:   <xs:simpleType name="onoff">
                     53:     <xs:restriction base="xs:string">
                     54:       <xs:enumeration value="on"/>
                     55:       <xs:enumeration value="off"/>
                     56:     </xs:restriction>
                     57:   </xs:simpleType>
                     58:   <xs:simpleType name="onoff-or-perl">
                     59:     <xs:union memberTypes="onoff perl"/>
                     60:   </xs:simpleType>
                     61:   <xs:simpleType name="color">
                     62:     <xs:restriction base="xs:string">
                     63:       <xs:pattern value="[x#][\da-fA-F]{6}"/>
                     64:     </xs:restriction>
                     65:   </xs:simpleType>
                     66:   <xs:simpleType name="color-or-perl">
                     67:     <xs:union memberTypes="color perl"/>
                     68:   </xs:simpleType>
                     69:   <xs:simpleType name="location">
                     70:     <xs:restriction base="xs:string">
                     71:       <xs:enumeration value="random"/>
                     72:       <xs:enumeration value="top"/>
                     73:       <xs:enumeration value="bottom"/>
                     74:     </xs:restriction>
                     75:   </xs:simpleType>
                     76:   <xs:simpleType name="location-or-perl">
                     77:     <xs:union memberTypes="location perl"/>
                     78:   </xs:simpleType>
                     79:   
                     80:   <xs:annotation>
                     81:     <xs:documentation>
                     82:       Shared attributes
                     83:     </xs:documentation>
                     84:   </xs:annotation>
                     85:   <xs:attribute default="normalsize" name="TeXsize">
                     86:     <xs:annotation>
                     87:       <xs:documentation>
                     88:         Size of LaTeX fonts used in printing.
                     89:         
                     90:         Possible values of TeXsize attribute:
                     91:         - tiny: smallest
                     92:         - scriptsize: very small
                     93:         - footnotesize: smaller
                     94:         - small: small
                     95:         - normalsize: normal
                     96:         - large: large
                     97:         - Large: larger
                     98:         - LARGE: even larger
                     99:         - huge: still larger
                    100:         - Huge: largest
                    101:         
                    102:         Note, that all parameters coincide with standard LaTeX commands for changing font size though you do not escape them.
                    103:       </xs:documentation>
                    104:     </xs:annotation>
                    105:     <xs:simpleType>
                    106:       <xs:union memberTypes="perl">
                    107:         <xs:simpleType>
                    108:           <xs:restriction base="xs:string">
                    109:             <xs:enumeration value="tiny"/>
                    110:             <xs:enumeration value="scriptsize"/>
                    111:             <xs:enumeration value="footnotesize"/>
                    112:             <xs:enumeration value="small"/>
                    113:             <xs:enumeration value="normalsize"/>
                    114:             <xs:enumeration value="large"/>
                    115:             <xs:enumeration value="Large"/>
                    116:             <xs:enumeration value="LARGE"/>
                    117:             <xs:enumeration value="huge"/>
                    118:             <xs:enumeration value="Huge"/>
                    119:           </xs:restriction>
                    120:         </xs:simpleType>
                    121:       </xs:union>
                    122:     </xs:simpleType>
                    123:   </xs:attribute>
                    124:   
                    125:   <xs:annotation>
                    126:     <xs:documentation>
                    127:       Problem (root element)
                    128:     </xs:documentation>
                    129:   </xs:annotation>
                    130:   <xs:element name="problem">
                    131:     <xs:annotation>
                    132:       <xs:documentation>
                    133:         Root for .problem documents.
                    134:         
                    135:         This must be first in the file. It sets up the header of the webpage and generates the submit buttons. It also handles due dates properly.
                    136:       </xs:documentation>
                    137:     </xs:annotation>
                    138:     <xs:complexType mixed="true">
                    139:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                    140:         <xs:group ref="text-with-parts"/>
                    141:         <xs:group ref="inserts"/>
                    142:         <xs:element ref="allow"/>
                    143:         <xs:element ref="meta"/>
                    144:         <xs:element ref="parameter"/>
                    145:         <xs:element ref="parserlib"/>
                    146:         <xs:element ref="scriptlib"/>
                    147:       </xs:choice>
                    148:     </xs:complexType>
                    149:   </xs:element>
                    150:   
                    151:   <xs:annotation>
                    152:     <xs:documentation>
                    153:       Library (root element)
                    154:     </xs:documentation>
                    155:   </xs:annotation>
                    156:   <xs:element name="library">
                    157:     <xs:annotation>
                    158:       <xs:documentation>
                    159:         Root for .library documents.
                    160:         A LON-CAPA .library file can contain just a script block, or just response items, or both.
1.5       damieng   161:         Library content is loaded into a problem statement by using an &lt;import&gt; element.
1.1       damieng   162:       </xs:documentation>
                    163:     </xs:annotation>
                    164:     <xs:complexType mixed="true">
                    165:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                    166:         <xs:group ref="text-with-responses"/>
                    167:         <xs:group ref="inserts"/>
                    168:         <xs:element ref="part"/>
                    169:         <xs:element ref="parserlib"/>
                    170:         <xs:element ref="scriptlib"/>
                    171:       </xs:choice>
                    172:     </xs:complexType>
                    173:   </xs:element>
                    174:   
                    175:   <xs:annotation>
                    176:     <xs:documentation>
                    177:       Groups of block and inline elements.
                    178:     </xs:documentation>
                    179:   </xs:annotation>
                    180:   <xs:group name="text-with-parts">
                    181:     <xs:annotation>
                    182:       <xs:documentation>
                    183:         List of block and inline elements mixed with text. These elements can contain parts and responses.
                    184:       </xs:documentation>
                    185:     </xs:annotation>
                    186:     <xs:choice>
                    187:       <xs:element ref="part"/>
                    188:       <xs:group ref="responses"/>
                    189:       <xs:group ref="blocks-with-parts"/>
                    190:       <xs:group ref="inlines"/>
                    191:     </xs:choice>
                    192:   </xs:group>
                    193:   <xs:group name="text-with-responses">
                    194:     <xs:annotation>
                    195:       <xs:documentation>
                    196:         List of block and inline elements mixed with text. These elements can contain responses but not parts.
                    197:       </xs:documentation>
                    198:     </xs:annotation>
                    199:     <xs:choice>
                    200:       <xs:group ref="responses"/>
                    201:       <xs:group ref="blocks-with-responses"/>
                    202:       <xs:group ref="inlines"/>
                    203:     </xs:choice>
                    204:   </xs:group>
                    205:   <xs:group name="text-only">
                    206:     <xs:annotation>
                    207:       <xs:documentation>
                    208:         List of block and inline elements mixed with text. These elements cannot contain responses or parts.
                    209:       </xs:documentation>
                    210:     </xs:annotation>
                    211:     <xs:choice>
                    212:       <xs:group ref="blocks-with-text"/>
                    213:       <xs:group ref="inlines"/>
                    214:     </xs:choice>
                    215:   </xs:group>
                    216:   <xs:group name="universal-blocks">
                    217:     <xs:annotation>
                    218:       <xs:documentation>
                    219:         Blocks with a content that does not depend on the scope, and that can appear anywhere with text and blocks.
                    220:       </xs:documentation>
                    221:     </xs:annotation>
                    222:     <xs:choice>
                    223:       <xs:element ref="randomlabel"/>
                    224:       <xs:element ref="import"/>
                    225:       <xs:element ref="while"/>
                    226:       <xs:element ref="tex"/>
                    227:       <xs:element ref="print"/>
                    228:       <xs:element ref="web"/>
                    229:       <xs:element ref="standalone"/>
                    230:       <xs:element ref="script"/>
                    231:       <xs:element ref="languageblock"/>
                    232:       <xs:element ref="translated"/>
                    233:       <xs:element ref="window"/>
                    234:       <xs:element ref="windowlink"/>
                    235:       <xs:element ref="togglebox"/>
                    236:       <xs:element ref="instructorcomment"/>
                    237:       <xs:element ref="comment"/>
                    238:       <xs:element ref="gnuplot"/>
                    239:       <xs:element ref="organicstructure"/>
                    240:       <xs:element ref="drawimage"/>
                    241:       <xs:element ref="solved"/>
                    242:       <xs:element ref="notsolved"/>
                    243:       
                    244:       <xs:group ref="heading"/>
                    245:       <xs:element ref="noscript"/>
                    246:       <xs:element ref="header"/>
                    247:       <xs:element ref="footer"/>
                    248:       <xs:element ref="aside"/>
                    249:       <xs:element ref="pre"/>
                    250:       <xs:element ref="hr"/>
                    251:       <xs:element ref="address"/>
                    252:       <xs:element ref="blockquote"/>
                    253:       <xs:element ref="figure"/>
                    254:       <xs:element ref="object"/>
                    255:       <xs:element ref="applet"/>
                    256:       <xs:element ref="embed"/>
                    257:       <xs:element ref="video"/>
                    258:       <xs:element ref="audio"/>
                    259:       <xs:element ref="map"/>
                    260:       <xs:element ref="canvas"/>
                    261:       <xs:element ref="form"/>
                    262:       <xs:element ref="fieldset"/>
                    263:       <xs:element ref="iframe"/>
                    264:     </xs:choice>
                    265:   </xs:group>
                    266:   <xs:group name="blocks-with-parts">
                    267:     <xs:choice>
                    268:       <xs:group ref="universal-blocks"/>
                    269:       
                    270:       <xs:element name="block" type="block-with-parts"/>
                    271:       <xs:element name="problemtype" type="problemtype-with-parts"/>
                    272:       <xs:element name="randomlist" type="randomlist-with-parts"/>
                    273:       
                    274:       <xs:element name="section" type="section-with-parts"/>
                    275:       <xs:element name="div" type="div-with-parts"/>
                    276:       <xs:element name="p" type="p-with-responses"/>
                    277:       <xs:element name="ul" type="ul-with-parts"/>
                    278:       <xs:element name="ol" type="ol-with-parts"/>
                    279:       <xs:element name="dl" type="dl-with-parts"/>
                    280:       <xs:element name="table" type="table-with-parts"/>
                    281:     </xs:choice>
                    282:   </xs:group>
                    283:   <xs:group name="blocks-with-responses">
                    284:     <xs:choice>
                    285:       <xs:group ref="universal-blocks"/>
                    286:       
                    287:       <xs:element name="block" type="block-with-responses"/>
                    288:       <xs:element name="problemtype" type="problemtype-with-responses"/>
                    289:       <xs:element name="randomlist" type="randomlist-with-responses"/>
                    290:       
                    291:       <xs:element name="section" type="section-with-responses"/>
                    292:       <xs:element name="div" type="div-with-responses"/>
                    293:       <xs:element name="p" type="p-with-responses"/>
                    294:       <xs:element name="ul" type="ul-with-responses"/>
                    295:       <xs:element name="ol" type="ol-with-responses"/>
                    296:       <xs:element name="dl" type="dl-with-responses"/>
                    297:       <xs:element name="table" type="table-with-responses"/>
                    298:     </xs:choice>
                    299:   </xs:group>
                    300:   <xs:group name="blocks-with-text">
                    301:     <xs:choice>
                    302:       <xs:group ref="universal-blocks"/>
                    303:       
                    304:       <xs:element name="block" type="block-with-text"/>
                    305:       <xs:element name="problemtype" type="problemtype-with-text"/>
                    306:       <xs:element name="randomlist" type="randomlist-with-text"/>
                    307:       
                    308:       <xs:element name="section" type="section-with-text"/>
                    309:       <xs:element name="div" type="div-with-text"/>
                    310:       <xs:element name="p" type="p-with-text"/>
                    311:       <xs:element name="ul" type="ul-with-text"/>
                    312:       <xs:element name="ol" type="ol-with-text"/>
                    313:       <xs:element name="dl" type="dl-with-text"/>
                    314:       <xs:element name="table" type="table-with-text"/>
                    315:     </xs:choice>
                    316:   </xs:group>
                    317:   <xs:group name="inlines">
                    318:     <xs:choice>
                    319:       <xs:element ref="display"/>
                    320:       <xs:element ref="m"/>
                    321:       <xs:element ref="lm"/>
                    322:       <xs:element ref="chem"/>
                    323:       <xs:element ref="num"/>
                    324:       <xs:element ref="parse"/>
                    325:       <xs:element ref="algebra"/>
                    326:       <xs:element ref="textline"/>
                    327:       <xs:element ref="displayweight"/>
                    328:       <xs:element ref="displaystudentphoto"/>
                    329:       
                    330:       <xs:element ref="span"/>
                    331:       <xs:element ref="a"/>
                    332:       <xs:element ref="strong"/>
                    333:       <xs:element ref="em"/>
                    334:       <xs:element ref="b"/>
                    335:       <xs:element ref="i"/>
                    336:       <xs:element ref="sup"/>
                    337:       <xs:element ref="sub"/>
                    338:       <xs:element ref="code"/>
                    339:       <xs:element ref="kbd"/>
                    340:       <xs:element ref="samp"/>
                    341:       <xs:element ref="cite"/>
                    342:       <xs:element ref="q"/>
                    343:       <xs:element ref="tt"/>
                    344:       <xs:element ref="ins"/>
                    345:       <xs:element ref="del"/>
                    346:       <xs:element ref="var"/>
                    347:       <xs:element ref="small"/>
                    348:       <xs:element ref="big"/>
                    349:       <xs:element ref="br"/>
                    350:       <xs:element ref="img"/>
                    351:       <xs:element ref="input"/>
                    352:       <xs:element ref="select"/>
                    353:       <xs:element ref="textarea"/>
                    354:       <xs:element ref="label"/>
                    355:       <xs:element ref="button"/>
                    356:     </xs:choice>
                    357:   </xs:group>
                    358:   <xs:group name="inserts">
                    359:     <xs:annotation>
                    360:       <xs:documentation>
                    361:         List of elements that insert something if a condition is verified.
                    362:       </xs:documentation>
                    363:     </xs:annotation>
                    364:     <xs:choice>
                    365:       <xs:element ref="displaytitle"/>
                    366:       <xs:element ref="displayduedate"/>
                    367:       <xs:element ref="preduedate"/>
                    368:       <xs:element ref="postanswerdate"/>
                    369:     </xs:choice>
                    370:   </xs:group>
                    371:   
                    372:   <xs:annotation>
                    373:     <xs:documentation>
                    374:       List of responses
                    375:     </xs:documentation>
                    376:   </xs:annotation>
                    377:   <xs:group name="responses">
                    378:     <xs:choice>
                    379:       <xs:group ref="inlineResponses"/>
                    380:       <xs:group ref="blockResponses"/>
                    381:     </xs:choice>
                    382:   </xs:group>
                    383:   <xs:group name="inlineResponses">
                    384:     <xs:choice>
                    385:       <xs:element ref="stringresponse"/>
                    386:       <xs:element ref="optionresponse"/>
                    387:       <xs:element ref="numericalresponse"/>
                    388:       <xs:element ref="formularesponse"/>
                    389:       <xs:element ref="mathresponse"/>
                    390:       <xs:element ref="organicresponse"/>
                    391:       <xs:element ref="reactionresponse"/>
                    392:       <xs:element ref="customresponse"/>
                    393:       <xs:element ref="externalresponse"/>
                    394:     </xs:choice>
                    395:   </xs:group>
                    396:   <xs:group name="blockResponses">
                    397:     <xs:choice>
                    398:       <xs:element ref="essayresponse"/>
                    399:       <xs:element ref="radiobuttonresponse"/>
                    400:       <xs:element ref="matchresponse"/>
                    401:       <xs:element ref="rankresponse"/>
                    402:       <xs:element ref="imageresponse"/>
                    403:       <xs:element ref="functionplotresponse"/>
                    404:       <xs:element ref="dataresponse"/>
                    405:     </xs:choice>
                    406:   </xs:group>
                    407:   <xs:attributeGroup name="response-identification">
                    408:     <xs:attribute name="id" type="xs:string">
                    409:       <xs:annotation>
                    410:         <xs:documentation>
                    411:           Unique identifier for the response in the document. If this isn’t set, it will be set during the publication step. It is used to assign parameter names in a way that can be tracked if an instructor modifies by hand.
                    412:         </xs:documentation>
                    413:       </xs:annotation>
                    414:     </xs:attribute>
                    415:     <xs:attribute name="name" type="xs:string">
                    416:       <xs:annotation>
                    417:         <xs:documentation>
                    418:           If set, the name will be used by the resource assembly tool when one is modifying parameters.
                    419:         </xs:documentation>
                    420:       </xs:annotation>
                    421:     </xs:attribute>
                    422:   </xs:attributeGroup>
                    423:   
                    424:   <xs:annotation>
                    425:     <xs:documentation>
                    426:       String response
                    427:     </xs:documentation>
                    428:   </xs:annotation>
                    429:   <xs:element name="stringresponse">
                    430:     <xs:annotation>
                    431:       <xs:documentation>
                    432:         Query for a string.
1.5       damieng   433:         An internal textline element is necessary for the student’s response to go in. It can check the string for either case or order.
1.1       damieng   434:       </xs:documentation>
                    435:     </xs:annotation>
                    436:     <xs:complexType mixed="true">
                    437:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                    438:         <xs:element ref="responseparam"/>
                    439:         <xs:element ref="hiddenline"/>
                    440:         <xs:element ref="hintgroup"/>
                    441:         <xs:element ref="stringhint"/>
                    442:         <xs:element ref="hintpart"/>
                    443:         <xs:group ref="text-only"/>
                    444:       </xs:choice>
                    445:       <xs:attributeGroup ref="response-identification"/>
                    446:       <xs:attribute name="answer" type="xs:string" use="required">
                    447:         <xs:annotation>
                    448:           <xs:documentation>
                    449:             the correct answer, either a perl list or scalar
                    450:           </xs:documentation>
                    451:         </xs:annotation>
                    452:       </xs:attribute>
                    453:       <xs:attribute default="cs" name="type">
                    454:         <xs:annotation>
                    455:           <xs:documentation>
                    456:             Specifies how the string is checked (like the CAPA styles). Possible values are:
                    457:             – cs: case sensitive, order important.
                    458:             – ci: case insensitive, order important.
                    459:             – mc: case insensitive, order unimportant.
                    460:           </xs:documentation>
                    461:         </xs:annotation>
                    462:         <xs:simpleType>
                    463:           <xs:union memberTypes="perl">
                    464:             <xs:simpleType>
                    465:               <xs:restriction base="xs:string">
                    466:                 <xs:enumeration value="cs"/>
                    467:                 <xs:enumeration value="ci"/>
                    468:                 <xs:enumeration value="mc"/>
                    469:                 <xs:enumeration value="re"/>
                    470:               </xs:restriction>
                    471:             </xs:simpleType>
                    472:           </xs:union>
                    473:         </xs:simpleType>
                    474:       </xs:attribute>
                    475:       <xs:attribute name="answerdisplay" type="xs:string">
                    476:         <xs:annotation>
                    477:           <xs:documentation>
                    478:             String to display for answer
                    479:           </xs:documentation>
                    480:         </xs:annotation>
                    481:       </xs:attribute>
                    482:       <xs:attribute name="preprocess" type="xs:string">
                    483:         <xs:annotation>
                    484:           <xs:documentation>
                    485:             Pre-Processor Subroutine
                    486:           </xs:documentation>
                    487:         </xs:annotation>
                    488:       </xs:attribute>
                    489:     </xs:complexType>
                    490:   </xs:element>
                    491:   
                    492:   <xs:annotation>
                    493:     <xs:documentation>
                    494:       Essay response
                    495:     </xs:documentation>
                    496:   </xs:annotation>
                    497:   <xs:element name="essayresponse">
                    498:     <xs:annotation>
                    499:       <xs:documentation>
                    500:         Query for a long text or a line, possibly with spell checking.
                    501:       </xs:documentation>
                    502:     </xs:annotation>
                    503:     <xs:complexType mixed="true">
                    504:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                    505:         <xs:element ref="responseparam"/>
                    506:         <xs:element ref="textfield"/>
                    507:         <xs:element ref="hiddensubmission"/>
                    508:         <xs:element ref="hiddenline"/>
                    509:         <xs:element ref="hintgroup"/>
                    510:         <xs:element ref="stringhint"/>
                    511:         <xs:element ref="hintpart"/>
                    512:         <xs:group ref="text-only"/>
                    513:       </xs:choice>
                    514:       <xs:attributeGroup ref="response-identification"/>
                    515:     </xs:complexType>
                    516:   </xs:element>
                    517:   
                    518:   <xs:annotation>
                    519:     <xs:documentation>
                    520:       Radio button response
                    521:     </xs:documentation>
                    522:   </xs:annotation>
                    523:   <xs:element name="radiobuttonresponse">
                    524:     <xs:annotation>
                    525:       <xs:documentation>
                    526:         Query for a single choice among several statements.
                    527:         The value of the foils can only be true, false, or unused.
                    528:       </xs:documentation>
                    529:     </xs:annotation>
                    530:     <xs:complexType mixed="true">
                    531:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                    532:         <xs:element ref="responseparam"/>
                    533:         <xs:element name="foilgroup" type="radiobuttonresponse--foilgroup"/>
                    534:         <xs:element ref="hintgroup"/>
                    535:         <xs:element ref="radiobuttonhint"/>
                    536:         <xs:element ref="hintpart"/>
                    537:         <xs:group ref="text-only"/>
                    538:       </xs:choice>
                    539:       <xs:attributeGroup ref="response-identification"/>
                    540:       <xs:attribute name="max" type="int-or-perl">
                    541:         <xs:annotation>
                    542:           <xs:documentation>
                    543:             Max Number Of Shown Foils
                    544:           </xs:documentation>
                    545:         </xs:annotation>
                    546:       </xs:attribute>
                    547:       <xs:attribute default="yes" name="randomize" type="yesno-or-perl">
                    548:         <xs:annotation>
                    549:           <xs:documentation>
                    550:             Randomize Foil Order
                    551:           </xs:documentation>
                    552:         </xs:annotation>
                    553:       </xs:attribute>
                    554:       <xs:attribute default="vertical" name="direction">
                    555:         <xs:annotation>
                    556:           <xs:documentation>
                    557:             Display Direction
                    558:           </xs:documentation>
                    559:         </xs:annotation>
                    560:         <xs:simpleType>
                    561:           <xs:union memberTypes="perl">
                    562:             <xs:simpleType>
                    563:               <xs:restriction base="xs:string">
                    564:                 <xs:enumeration value="vertical"/>
                    565:                 <xs:enumeration value="horizontal"/>
                    566:               </xs:restriction>
                    567:             </xs:simpleType>
                    568:           </xs:union>
                    569:         </xs:simpleType>
                    570:       </xs:attribute>
                    571:     </xs:complexType>
                    572:   </xs:element>
                    573:   <xs:complexType name="radiobuttonresponse--foilgroup">
                    574:     <xs:annotation>
                    575:       <xs:documentation>Collection of Foils</xs:documentation>
                    576:     </xs:annotation>
                    577:     <xs:choice maxOccurs="unbounded">
                    578:       <xs:element name="conceptgroup" type="radiobuttonresponse--conceptgroup"/>
                    579:       <xs:element name="foil" type="radiobuttonresponse--foil"/>
                    580:       <xs:element ref="comment"/>
                    581:     </xs:choice>
                    582:   </xs:complexType>
                    583:   <xs:complexType name="radiobuttonresponse--conceptgroup">
                    584:     <xs:annotation>
                    585:       <xs:documentation>
                    586:         Collection of similar foils.
                    587:         When a problem is displayed, only one of the contained foils is selected for display.
                    588:       </xs:documentation>
                    589:     </xs:annotation>
                    590:     <xs:choice maxOccurs="unbounded">
                    591:       <xs:element name="foil" type="radiobuttonresponse--foil"/>
                    592:     </xs:choice>
                    593:     <xs:attribute name="concept" type="xs:string" use="required"/>
                    594:   </xs:complexType>
                    595:   <xs:complexType mixed="true" name="radiobuttonresponse--foil">
                    596:     <xs:annotation>
                    597:       <xs:documentation>
                    598:         Statement next to the radio button.
                    599:       </xs:documentation>
                    600:     </xs:annotation>
                    601:     <xs:choice maxOccurs="unbounded" minOccurs="0">
                    602:       <xs:group ref="text-only"/>
                    603:       <xs:element ref="parserlib"/>
                    604:       <xs:element ref="scriptlib"/>
                    605:     </xs:choice>
                    606:     <xs:attribute name="name" type="xs:string" use="required"/>
                    607:     <xs:attribute name="value" use="required">
                    608:       <xs:annotation>
                    609:         <xs:documentation>
                    610:           Correct Option (true, false, or unused).
                    611:         </xs:documentation>
                    612:       </xs:annotation>
                    613:       <xs:simpleType>
                    614:         <xs:union memberTypes="perl">
                    615:           <xs:simpleType>
                    616:             <xs:restriction base="xs:string">
                    617:               <xs:enumeration value="true"/>
                    618:               <xs:enumeration value="false"/>
                    619:               <xs:enumeration value="unused"/>
                    620:             </xs:restriction>
                    621:           </xs:simpleType>
                    622:         </xs:union>
                    623:       </xs:simpleType>
                    624:     </xs:attribute>
                    625:     <xs:attribute default="random" name="location" type="location-or-perl"/>
                    626:   </xs:complexType>
                    627:   
                    628:   <xs:annotation>
                    629:     <xs:documentation>
                    630:       Option response
                    631:     </xs:documentation>
                    632:   </xs:annotation>
                    633:   <xs:element name="optionresponse">
                    634:     <xs:annotation>
                    635:       <xs:documentation>
                    636:         Query for a choice for each given statement.
                    637:         
                    638:         Option Response problems present foils to the student with drop-down boxes. The student can select the matching choice for the foils from a list of choices. Optionally, the foils may be bundled into Concept Groups and the system will select one foil from each group to display to the student.
                    639:         
                    640:         By default, the list of options is presented in front of the foils. Using the optional drawoptionlist element, the list of options can be embedded into the foil. 
                    641:         
                    642:         The foilgroup is required to have an options attribute which should be a perl list of possible options for the student.
                    643:       </xs:documentation>
                    644:     </xs:annotation>
                    645:     <xs:complexType mixed="true">
                    646:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                    647:         <xs:element ref="responseparam"/>
                    648:         <xs:element name="foilgroup" type="optionresponse--foilgroup"/>
                    649:         <xs:element ref="hintgroup"/>
                    650:         <xs:element ref="optionhint"/>
                    651:         <xs:element ref="hintpart"/>
                    652:         <xs:group ref="text-only"/>
                    653:       </xs:choice>
                    654:       <xs:attributeGroup ref="response-identification"/>
                    655:       <xs:attribute name="max" type="int-or-perl">
                    656:         <xs:annotation>
                    657:           <xs:documentation>
                    658:             Max Number Of Shown Foils
                    659:           </xs:documentation>
                    660:         </xs:annotation>
                    661:       </xs:attribute>
                    662:       <xs:attribute default="yes" name="randomize" type="yesno-or-perl">
                    663:         <xs:annotation>
                    664:           <xs:documentation>
                    665:             Randomize Foil Order
                    666:           </xs:documentation>
                    667:         </xs:annotation>
                    668:       </xs:attribute>
                    669:       <xs:attribute default="horizontal" name="TeXlayout">
                    670:         <xs:annotation>
                    671:           <xs:documentation>
                    672:             Display of options when printed
                    673:           </xs:documentation>
                    674:         </xs:annotation>
                    675:         <xs:simpleType>
                    676:           <xs:union memberTypes="perl">
                    677:             <xs:simpleType>
                    678:               <xs:restriction base="xs:string">
                    679:                 <xs:enumeration value="horizontal"/>
                    680:                 <xs:enumeration value="vertical"/>
                    681:               </xs:restriction>
                    682:             </xs:simpleType>
                    683:           </xs:union>
                    684:         </xs:simpleType>
                    685:       </xs:attribute>
                    686:     </xs:complexType>
                    687:   </xs:element>
                    688:   <xs:complexType name="optionresponse--foilgroup">
                    689:     <xs:annotation>
                    690:       <xs:documentation>Collection of Foils</xs:documentation>
                    691:     </xs:annotation>
                    692:     <xs:choice maxOccurs="unbounded">
                    693:       <xs:element name="conceptgroup" type="optionresponse--conceptgroup"/>
                    694:       <xs:element name="foil" type="optionresponse--foil"/>
                    695:       <xs:element ref="comment"/>
                    696:     </xs:choice>
                    697:     <xs:attribute name="options" use="required">
                    698:       <xs:annotation>
                    699:         <xs:documentation>
                    700:           Perl list of possible foil values.
                    701:         </xs:documentation>
                    702:       </xs:annotation>
                    703:       <xs:simpleType>
                    704:         <xs:union memberTypes="perl">
                    705:           <xs:simpleType>
                    706:             <xs:restriction base="xs:string">
                    707:               <xs:pattern value="@[a-zA-Z0-9_\-]+"/>
                    708:             </xs:restriction>
                    709:           </xs:simpleType>
                    710:           <xs:simpleType>
                    711:             <xs:restriction base="xs:string">
                    712:               <xs:pattern value="\(.+\)"/>
                    713:             </xs:restriction>
                    714:           </xs:simpleType>
                    715:         </xs:union>
                    716:       </xs:simpleType>
                    717:     </xs:attribute>
                    718:     <xs:attribute name="texoptions">
                    719:       <xs:annotation>
                    720:         <xs:documentation>
                    721:           Print options
                    722:         </xs:documentation>
                    723:       </xs:annotation>
                    724:       <xs:simpleType>
                    725:         <xs:union memberTypes="perl">
                    726:           <xs:simpleType>
                    727:             <xs:restriction base="xs:string">
                    728:               <xs:enumeration value="nochoice"/>
                    729:             </xs:restriction>
                    730:           </xs:simpleType>
                    731:         </xs:union>
                    732:       </xs:simpleType>
                    733:     </xs:attribute>
                    734:     <xs:attribute name="checkboxvalue" type="xs:string">
                    735:       <xs:annotation>
                    736:         <xs:documentation>
1.4       damieng   737:           When there are only 2 option values, set this attribute to one of them in order to display checkboxes. A foil checkbox will have to be checked when the foil has the chosen option value.
1.1       damieng   738:         </xs:documentation>
                    739:       </xs:annotation>
                    740:     </xs:attribute>
                    741:     <xs:attribute name="checkboxoptions">
                    742:       <xs:annotation>
                    743:         <xs:documentation>
1.4       damieng   744:           Set to "nochoice" to avoid the display of the list of option values.
1.1       damieng   745:         </xs:documentation>
                    746:       </xs:annotation>
                    747:       <xs:simpleType>
                    748:         <xs:union memberTypes="perl">
                    749:           <xs:simpleType>
                    750:             <xs:restriction base="xs:string">
                    751:               <xs:enumeration value="nochoice"/>
                    752:             </xs:restriction>
                    753:           </xs:simpleType>
                    754:         </xs:union>
                    755:       </xs:simpleType>
                    756:     </xs:attribute>
                    757:   </xs:complexType>
                    758:   <xs:complexType name="optionresponse--conceptgroup">
                    759:     <xs:annotation>
                    760:       <xs:documentation>
                    761:         Collection of similar foils.
                    762:         When a problem is displayed, only one of the contained foils is selected for display.
                    763:       </xs:documentation>
                    764:     </xs:annotation>
                    765:     <xs:choice maxOccurs="unbounded">
                    766:       <xs:element name="foil" type="optionresponse--foil"/>
                    767:     </xs:choice>
                    768:     <xs:attribute name="concept" type="xs:string" use="required"/>
                    769:   </xs:complexType>
                    770:   <xs:complexType mixed="true" name="optionresponse--foil">
                    771:     <xs:annotation>
                    772:       <xs:documentation>
                    773:         Statement next to the drop-down box.
                    774:       </xs:documentation>
                    775:     </xs:annotation>
                    776:     <xs:choice maxOccurs="unbounded" minOccurs="0">
                    777:       <xs:group ref="text-only"/>
                    778:       <xs:element ref="parserlib"/>
                    779:       <xs:element ref="scriptlib"/>
                    780:       <xs:element name="drawoptionlist" type="optionresponse--drawoptionlist"/>
                    781:     </xs:choice>
                    782:     <xs:attribute name="name" type="xs:string" use="required"/>
                    783:     <xs:attribute name="value" type="xs:string" use="required">
                    784:       <xs:annotation>
                    785:         <xs:documentation>
                    786:           Correct Option
                    787:         </xs:documentation>
                    788:       </xs:annotation>
                    789:     </xs:attribute>
                    790:     <xs:attribute default="random" name="location" type="location-or-perl"/>
                    791:   </xs:complexType>
                    792:   <xs:complexType name="optionresponse--drawoptionlist">
                    793:     <xs:annotation>
1.3       damieng   794:       <xs:documentation>
                    795:         Draw Option List
                    796:         
                    797:         By default, the list of options is presented in front of the foils. Using the optional &lt;drawoptionlist&gt; element, the list of options can be embedded into a foil.
                    798:       </xs:documentation>
1.1       damieng   799:     </xs:annotation>
                    800:   </xs:complexType>
                    801:   
                    802:   <xs:annotation>
                    803:     <xs:documentation>
                    804:       Match response
                    805:     </xs:documentation>
                    806:   </xs:annotation>
                    807:   <xs:element name="matchresponse">
                    808:     <xs:annotation>
                    809:       <xs:documentation>
                    810:         Query for matches betweens items from two lists.
1.3       damieng   811:         It is also possible to query for matches with optionresponse, but optionresponse only accepts simple text for the matches. With matchresponse, it is possible to use anything as a match, such as equations, images, plots, or long styled texts.
1.1       damieng   812:       </xs:documentation>
                    813:     </xs:annotation>
                    814:     <xs:complexType mixed="true">
                    815:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                    816:         <xs:element ref="responseparam"/>
                    817:         <xs:element name="foilgroup" type="matchresponse--foilgroup"/>
                    818:         <xs:element ref="hintgroup"/>
                    819:         <xs:group ref="text-only"/>
                    820:       </xs:choice>
                    821:       <xs:attributeGroup ref="response-identification"/>
                    822:       <xs:attribute name="max" type="int-or-perl">
                    823:         <xs:annotation>
                    824:           <xs:documentation>
                    825:             Max Number Of Shown Foils
                    826:           </xs:documentation>
                    827:         </xs:annotation>
                    828:       </xs:attribute>
                    829:       <xs:attribute default="yes" name="randomize" type="yesno-or-perl">
                    830:         <xs:annotation>
                    831:           <xs:documentation>
                    832:             Randomize Foil Order
                    833:           </xs:documentation>
                    834:         </xs:annotation>
                    835:       </xs:attribute>
                    836:     </xs:complexType>
                    837:   </xs:element>
                    838:   <xs:complexType name="matchresponse--itemgroup">
                    839:     <xs:annotation>
                    840:       <xs:documentation>Items to Match</xs:documentation>
                    841:     </xs:annotation>
                    842:     <xs:choice maxOccurs="unbounded">
                    843:       <xs:element name="item" type="matchresponse--item"/>
                    844:     </xs:choice>
                    845:     <xs:attribute default="yes" name="randomize" type="yesno-or-perl">
                    846:       <xs:annotation>
                    847:         <xs:documentation>
                    848:           Randomize Order
                    849:         </xs:documentation>
                    850:       </xs:annotation>
                    851:     </xs:attribute>
                    852:     <xs:attribute default="top" name="location">
                    853:       <xs:annotation>
                    854:         <xs:documentation>
                    855:           Items Display Location
                    856:         </xs:documentation>
                    857:       </xs:annotation>
                    858:       <xs:simpleType>
                    859:         <xs:union memberTypes="perl">
                    860:           <xs:simpleType>
                    861:             <xs:restriction base="xs:string">
                    862:               <xs:enumeration value="top"/>
                    863:               <xs:enumeration value="bottom"/>
                    864:               <xs:enumeration value="left"/>
                    865:               <xs:enumeration value="right"/>
                    866:             </xs:restriction>
                    867:           </xs:simpleType>
                    868:         </xs:union>
                    869:       </xs:simpleType>
                    870:     </xs:attribute>
                    871:     <xs:attribute default="vertical" name="direction">
                    872:       <xs:annotation>
                    873:         <xs:documentation>
                    874:           Items Display Direction
                    875:         </xs:documentation>
                    876:       </xs:annotation>
                    877:       <xs:simpleType>
                    878:         <xs:union memberTypes="perl">
                    879:           <xs:simpleType>
                    880:             <xs:restriction base="xs:string">
                    881:               <xs:enumeration value="vertical"/>
                    882:               <xs:enumeration value="horizontal"/>
                    883:             </xs:restriction>
                    884:           </xs:simpleType>
                    885:         </xs:union>
                    886:       </xs:simpleType>
                    887:     </xs:attribute>
                    888:     <xs:attribute name="columns">
                    889:       <xs:annotation>
                    890:         <xs:documentation>
                    891:           Items Columns
                    892:         </xs:documentation>
                    893:       </xs:annotation>
                    894:       <xs:simpleType>
                    895:         <xs:union memberTypes="perl">
                    896:           <xs:simpleType>
                    897:             <xs:restriction base="xs:int">
                    898:               <xs:enumeration value="1"/>
                    899:               <xs:enumeration value="2"/>
                    900:               <xs:enumeration value="3"/>
                    901:               <xs:enumeration value="4"/>
                    902:             </xs:restriction>
                    903:           </xs:simpleType>
                    904:         </xs:union>
                    905:       </xs:simpleType>
                    906:     </xs:attribute>
                    907:     <xs:attribute name="TeXitemgroupwidth">
                    908:       <xs:annotation>
                    909:         <xs:documentation>
                    910:           TeXitemgroupwidth attribute allows you to specify the width of table with items for matching. The value of this attribute defines the width in percents with respect to text line width.
                    911:         </xs:documentation>
                    912:       </xs:annotation>
                    913:       <xs:simpleType>
                    914:         <xs:restriction base="xs:string">
                    915:           <xs:pattern value="\d+%"/>
                    916:         </xs:restriction>
                    917:       </xs:simpleType>
                    918:     </xs:attribute>
                    919:   </xs:complexType>
                    920:   <xs:complexType mixed="true" name="matchresponse--item">
                    921:     <xs:annotation>
                    922:       <xs:documentation>Item</xs:documentation>
                    923:     </xs:annotation>
                    924:     <xs:choice maxOccurs="unbounded" minOccurs="0">
                    925:       <xs:group ref="text-only"/>
                    926:       <xs:element ref="parserlib"/>
                    927:       <xs:element ref="scriptlib"/>
                    928:     </xs:choice>
                    929:     <xs:attribute name="name" type="xs:string"/>
                    930:     <xs:attribute default="random" name="location" type="location-or-perl"/>
                    931:   </xs:complexType>
                    932:   <xs:complexType name="matchresponse--foilgroup">
                    933:     <xs:annotation>
                    934:       <xs:documentation>Collection of Foils</xs:documentation>
                    935:     </xs:annotation>
                    936:     <xs:choice maxOccurs="unbounded">
                    937:       <xs:element name="itemgroup" type="matchresponse--itemgroup"/>
                    938:       <xs:element name="conceptgroup" type="matchresponse--conceptgroup"/>
                    939:       <xs:element name="foil" type="matchresponse--foil"/>
                    940:       <xs:element ref="comment"/>
                    941:     </xs:choice>
                    942:   </xs:complexType>
                    943:   <xs:complexType name="matchresponse--conceptgroup">
                    944:     <xs:annotation>
                    945:       <xs:documentation>
                    946:         Collection of similar foils.
                    947:         When a problem is displayed, only one of the contained foils is selected for display.
                    948:       </xs:documentation>
                    949:     </xs:annotation>
                    950:     <xs:choice maxOccurs="unbounded">
                    951:       <xs:element name="foil" type="matchresponse--foil"/>
                    952:     </xs:choice>
                    953:     <xs:attribute name="concept" type="xs:string" use="required"/>
                    954:   </xs:complexType>
                    955:   <xs:complexType mixed="true" name="matchresponse--foil">
                    956:     <xs:annotation>
                    957:       <xs:documentation>Foil</xs:documentation>
                    958:     </xs:annotation>
                    959:     <xs:choice maxOccurs="unbounded" minOccurs="0">
                    960:       <xs:group ref="text-only"/>
                    961:       <xs:element ref="parserlib"/>
                    962:       <xs:element ref="scriptlib"/>
                    963:     </xs:choice>
                    964:     <xs:attribute name="name" type="xs:string" use="required"/>
                    965:     <xs:attribute name="value" type="xs:string">
                    966:       <xs:annotation>
                    967:         <xs:documentation>
                    968:           Correct Option
                    969:         </xs:documentation>
                    970:       </xs:annotation>
                    971:     </xs:attribute>
                    972:     <xs:attribute default="random" name="location" type="location-or-perl"/>
                    973:   </xs:complexType>
                    974:   
                    975:   <xs:annotation>
                    976:     <xs:documentation>
                    977:       Rank response
                    978:     </xs:documentation>
                    979:   </xs:annotation>
                    980:   <xs:element name="rankresponse">
                    981:     <xs:annotation>
                    982:       <xs:documentation>
                    983:         Query to sort a list of items in the right order.
                    984:       </xs:documentation>
                    985:     </xs:annotation>
                    986:     <xs:complexType mixed="true">
                    987:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                    988:         <xs:element ref="responseparam"/>
                    989:         <xs:element name="foilgroup" type="rankresponse--foilgroup"/>
                    990:         <xs:element ref="hintgroup"/>
                    991:         <xs:group ref="text-only"/>
                    992:       </xs:choice>
                    993:       <xs:attributeGroup ref="response-identification"/>
                    994:       <xs:attribute name="max" type="int-or-perl">
                    995:         <xs:annotation>
                    996:           <xs:documentation>
                    997:             Max Number Of Shown Foils
                    998:           </xs:documentation>
                    999:         </xs:annotation>
                   1000:       </xs:attribute>
                   1001:       <xs:attribute default="yes" name="randomize" type="yesno-or-perl">
                   1002:         <xs:annotation>
                   1003:           <xs:documentation>
                   1004:             Randomize Foil Order
                   1005:           </xs:documentation>
                   1006:         </xs:annotation>
                   1007:       </xs:attribute>
                   1008:     </xs:complexType>
                   1009:   </xs:element>
                   1010:   <xs:complexType name="rankresponse--foilgroup">
                   1011:     <xs:annotation>
                   1012:       <xs:documentation>Collection of Foils</xs:documentation>
                   1013:     </xs:annotation>
                   1014:     <xs:choice maxOccurs="unbounded">
                   1015:       <xs:element name="conceptgroup" type="rankresponse--conceptgroup"/>
                   1016:       <xs:element name="foil" type="rankresponse--foil"/>
                   1017:       <xs:element ref="comment"/>
                   1018:     </xs:choice>
                   1019:   </xs:complexType>
                   1020:   <xs:complexType name="rankresponse--conceptgroup">
                   1021:     <xs:annotation>
                   1022:       <xs:documentation>
                   1023:         Collection of similar foils.
                   1024:         When a problem is displayed, only one of the contained foils is selected for display.
                   1025:       </xs:documentation>
                   1026:     </xs:annotation>
                   1027:     <xs:choice maxOccurs="unbounded">
                   1028:       <xs:element name="foil" type="rankresponse--foil"/>
                   1029:     </xs:choice>
                   1030:     <xs:attribute name="concept" type="xs:string" use="required"/>
                   1031:   </xs:complexType>
                   1032:   <xs:complexType mixed="true" name="rankresponse--foil">
                   1033:     <xs:annotation>
                   1034:       <xs:documentation>Foil</xs:documentation>
                   1035:     </xs:annotation>
                   1036:     <xs:choice maxOccurs="unbounded" minOccurs="0">
                   1037:       <xs:group ref="text-only"/>
                   1038:       <xs:element ref="parserlib"/>
                   1039:       <xs:element ref="scriptlib"/>
                   1040:     </xs:choice>
                   1041:     <xs:attribute name="name" type="xs:string" use="required"/>
                   1042:     <xs:attribute name="value" type="xs:string">
                   1043:       <xs:annotation>
                   1044:         <xs:documentation>
                   1045:           Rank Value
                   1046:         </xs:documentation>
                   1047:       </xs:annotation>
                   1048:     </xs:attribute>
                   1049:     <xs:attribute default="random" name="location" type="location-or-perl"/>
                   1050:   </xs:complexType>
                   1051:   
                   1052:   <xs:annotation>
                   1053:     <xs:documentation>
                   1054:       Image response
                   1055:     </xs:documentation>
                   1056:   </xs:annotation>
                   1057:   <xs:element name="imageresponse">
                   1058:     <xs:annotation>
                   1059:       <xs:documentation>
                   1060:         Query for the selection of an image in a list.
                   1061:       </xs:documentation>
                   1062:     </xs:annotation>
                   1063:     <xs:complexType mixed="true">
                   1064:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   1065:         <xs:element ref="responseparam"/>
                   1066:         <xs:element name="foilgroup" type="imageresponse--foilgroup"/>
                   1067:         <xs:element ref="hintgroup"/>
                   1068:         <xs:group ref="text-only"/>
                   1069:       </xs:choice>
                   1070:       <xs:attributeGroup ref="response-identification"/>
                   1071:       <xs:attribute name="max" type="int-or-perl">
                   1072:         <xs:annotation>
                   1073:           <xs:documentation>
                   1074:             Max Number Of Shown Foils
                   1075:           </xs:documentation>
                   1076:         </xs:annotation>
                   1077:       </xs:attribute>
                   1078:     </xs:complexType>
                   1079:   </xs:element>
                   1080:   <xs:complexType name="imageresponse--foilgroup">
                   1081:     <xs:annotation>
                   1082:       <xs:documentation>Collection of Imageresponse foils</xs:documentation>
                   1083:     </xs:annotation>
                   1084:     <xs:choice maxOccurs="unbounded">
                   1085:       <xs:element name="conceptgroup" type="imageresponse--conceptgroup"/>
                   1086:       <xs:element name="foil" type="imageresponse--foil"/>
                   1087:       <xs:element ref="comment"/>
                   1088:     </xs:choice>
                   1089:   </xs:complexType>
                   1090:   <xs:complexType name="imageresponse--conceptgroup">
                   1091:     <xs:annotation>
                   1092:       <xs:documentation>
                   1093:         Collection of similar foils.
                   1094:         When a problem is displayed, only one of the contained foils is selected for display.
                   1095:       </xs:documentation>
                   1096:     </xs:annotation>
                   1097:     <xs:choice maxOccurs="unbounded">
                   1098:       <xs:element name="foil" type="imageresponse--foil"/>
                   1099:     </xs:choice>
                   1100:     <xs:attribute name="concept" type="xs:string" use="required"/>
                   1101:   </xs:complexType>
                   1102:   <xs:complexType name="imageresponse--foil">
                   1103:     <xs:annotation>
                   1104:       <xs:documentation>Image response foil. image and rectangle are required.</xs:documentation>
                   1105:     </xs:annotation>
                   1106:     <xs:choice maxOccurs="unbounded" minOccurs="0">
                   1107:       <xs:element name="image" type="imageresponse--image"/>
                   1108:       <xs:element name="polygon" type="imageresponse--polygon"/>
                   1109:       <xs:element name="rectangle" type="imageresponse--rectangle"/>
                   1110:       <xs:element name="text" type="imageresponse--text"/>
                   1111:     </xs:choice>
                   1112:     <xs:attribute name="name" type="xs:string" use="required"/>
                   1113:   </xs:complexType>
                   1114:   <xs:complexType mixed="true" name="imageresponse--image">
                   1115:     <xs:annotation>
                   1116:       <xs:documentation>
                   1117:         Imageresponse Image (contains the image source file).
                   1118:         
                   1119:         The delimited text should correspond to a published image resource.
                   1120:         Example: &lt;image&gt;/res/adm/includes/templates/man1.jpg&lt;/image&gt;. The following image formats are recommended - gif, jpg or png. Other formats may work, but there may be printing or display issues. The image should only appear once per foil.
                   1121:       </xs:documentation>
                   1122:     </xs:annotation>
                   1123:     <xs:choice minOccurs="0">
                   1124:       <xs:element ref="gnuplot"/>
                   1125:     </xs:choice>
                   1126:   </xs:complexType>
                   1127:   <xs:simpleType name="imageresponse--rectangle">
                   1128:     <xs:annotation>
                   1129:       <xs:documentation>
                   1130:         Rectangular area in image (contains coordinate pairs).
                   1131:         
                   1132:         The delimited text specifies a rectangular area that is correct, specified as (x1,y1)-(x2,y2), where x1, x2, y1, and y2 are number corresponding to the x and y coordinates of two corners that define a rectangle which specifies where the right answer for this foil is located on the image. For example, (0,0)-(100,200) will specify that a rectangle 100 pixels wide and 200 pixels tall, situated in the upper left of the image, is correct. At least one rectangle is required; multiple rectangles may be specified.
                   1133:       </xs:documentation>
                   1134:     </xs:annotation>
                   1135:     <xs:union memberTypes="perl">
                   1136:       <xs:simpleType>
                   1137:         <xs:restriction base="xs:string">
                   1138:           <xs:pattern value="\s*\(.+\)-\(.+\)\s*"/>
                   1139:         </xs:restriction>
                   1140:       </xs:simpleType>
                   1141:     </xs:union>
                   1142:   </xs:simpleType>
                   1143:   <xs:simpleType name="imageresponse--polygon">
                   1144:     <xs:annotation>
                   1145:       <xs:documentation>Polygonal area in image (contains coordinate list)</xs:documentation>
                   1146:     </xs:annotation>
                   1147:     <xs:union memberTypes="perl">
                   1148:       <xs:simpleType>
                   1149:         <xs:restriction base="xs:string">
                   1150:           <xs:pattern value="\s*\(.+\)(-\(.+\))+\s*"/>
                   1151:         </xs:restriction>
                   1152:       </xs:simpleType>
                   1153:     </xs:union>
                   1154:   </xs:simpleType>
                   1155:   <xs:complexType mixed="true" name="imageresponse--text">
                   1156:     <xs:annotation>
                   1157:       <xs:documentation>
                   1158:         Text to describe option
                   1159:         
                   1160:         The delimited text is printed before the image is shown on the screen.
                   1161:         This text is typically used to describe to the student what they are expected to click on.
                   1162:       </xs:documentation>
                   1163:     </xs:annotation>
                   1164:     <xs:choice maxOccurs="unbounded" minOccurs="0">
                   1165:       <xs:group ref="text-only"/>
                   1166:       <xs:element ref="parserlib"/>
                   1167:       <xs:element ref="scriptlib"/>
                   1168:     </xs:choice>
                   1169:   </xs:complexType>
                   1170:   
                   1171:   <xs:annotation>
                   1172:     <xs:documentation>
                   1173:       Numerical response
                   1174:     </xs:documentation>
                   1175:   </xs:annotation>
                   1176:   <xs:element name="numericalresponse">
                   1177:     <xs:annotation>
                   1178:       <xs:documentation>
                   1179:         Query for one or several numbers, possibly with units.
                   1180:         
                   1181:         A tolerance parameter should be used to determine how closely the system will require the student’s answer to be in order to count it correct. The tolerance will default to zero if it is not defined. The tolerance parameter should always be defined for a numerical problem unless you are certain only integer answers are generated from your script and you want students to reply with exactly that integer.
                   1182:         
                   1183:         A significant figures parameter tells the system how many significant figures there are in the problem, as either a single number, e.g. 3, or a range of acceptable values, expressed as min,max. The system will check to make sure that the student’s answer contains this many significant digits, useful in many scientific calculations.
                   1184:       </xs:documentation>
                   1185:     </xs:annotation>
                   1186:     <xs:complexType mixed="true">
                   1187:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   1188:         <xs:element ref="responseparam"/>
                   1189:         <xs:element name="answergroup" type="caparesponse--answergroup"/>
                   1190:         <xs:element ref="hiddenline"/>
                   1191:         <xs:element ref="hintgroup"/>
                   1192:         <xs:element ref="numericalhint"/>
                   1193:         <xs:element ref="hintpart"/>
                   1194:         <xs:group ref="text-only"/>
                   1195:       </xs:choice>
                   1196:       <xs:attributeGroup ref="response-identification"/>
                   1197:       <xs:attribute name="answer" type="xs:string">
                   1198:         <xs:annotation>
                   1199:           <xs:documentation>
                   1200:             The answer the system is looking for. The answer can use variables calculated/defined in the problem’s script block, allowing the answer to be determined dynamically (including randomization).
                   1201:           </xs:documentation>
                   1202:         </xs:annotation>
                   1203:       </xs:attribute>
                   1204:       <xs:attribute name="incorrect" type="xs:string">
                   1205:         <xs:annotation>
                   1206:           <xs:documentation>
                   1207:             Incorrect Answers
                   1208:             When switched into exam ("bubble sheet") mode, LON-CAPA usually create wrong answers automatically. To specify wrong answers yourself, you need to provide an array of incorrect values in this attribute. You need to provide at least as many incorrects as 1 less than the number of bubbles on the exam. You can provide more if you want to.
                   1209:           </xs:documentation>
                   1210:         </xs:annotation>
                   1211:       </xs:attribute>
                   1212:       <xs:attribute name="unit" type="xs:string">
                   1213:         <xs:annotation>
                   1214:           <xs:documentation>
                   1215:             Expected units for the answer. For instance, "m/s^2" or "km/(A*hr)".
                   1216:             LON-CAPA will automatically perform some conversions between units of the same dimension when units are provided for a problem. You can provide an answer of "1.45 km" for a distance. If the computer expects the answer in cm, it will convert your answer before comparing against the numerical solution.
                   1217:           </xs:documentation>
                   1218:         </xs:annotation>
                   1219:       </xs:attribute>
                   1220:       <xs:attribute name="format" type="xs:string">
                   1221:         <xs:annotation>
                   1222:           <xs:documentation>
                   1223:             You can format the number displayed by the computer as the answer. For instance, if the answer is one-third, the computer will display that it computed ".333333333" as the answer. If you'd like to shorten that, you can use the Format field. Format strings like "2E" (without the quotes) will display three significant digits in scientific notation. Format strings like "2f" will display two digits after the decimal point. Format strings like "2s" will round a number to 2 significant digits.
                   1224:           </xs:documentation>
                   1225:         </xs:annotation>
                   1226:       </xs:attribute>
                   1227:       <xs:attribute name="preprocess" type="xs:string">
                   1228:         <xs:annotation>
                   1229:           <xs:documentation>
                   1230:             Pre-Processor Subroutine
                   1231:           </xs:documentation>
                   1232:         </xs:annotation>
                   1233:       </xs:attribute>
                   1234:     </xs:complexType>
                   1235:   </xs:element>
                   1236:   <xs:complexType name="caparesponse--answergroup">
                   1237:     <xs:annotation>
1.2       damieng  1238:       <xs:documentation>
                   1239:         Collection of Answers.
                   1240:         This element can be used instead of the answer attribute on the response element when several answers are correct, or when the correct answer has several components.
                   1241:       </xs:documentation>
1.1       damieng  1242:     </xs:annotation>
                   1243:     <xs:choice maxOccurs="unbounded">
                   1244:       <xs:element name="answer" type="caparesponse--answer"/>
                   1245:     </xs:choice>
                   1246:     <xs:attribute default="ordered" name="type">
                   1247:       <xs:simpleType>
                   1248:         <xs:union memberTypes="perl">
                   1249:           <xs:simpleType>
                   1250:             <xs:restriction base="xs:string">
                   1251:               <xs:enumeration value="ordered"/>
                   1252:               <xs:enumeration value="unordered"/>
                   1253:             </xs:restriction>
                   1254:           </xs:simpleType>
                   1255:         </xs:union>
                   1256:       </xs:simpleType>
                   1257:     </xs:attribute>
                   1258:   </xs:complexType>
                   1259:   <xs:complexType name="caparesponse--answer">
                   1260:     <xs:annotation>
                   1261:       <xs:documentation>
1.2       damieng  1262:         A correct list of values or vectors.
1.1       damieng  1263:       </xs:documentation>
                   1264:     </xs:annotation>
                   1265:     <xs:choice maxOccurs="unbounded" minOccurs="0">
1.2       damieng  1266:       <xs:element name="vector" type="caparesponse--vector">
                   1267:         <xs:annotation>
                   1268:           <xs:documentation>
                   1269:             A vector, part of a correct answer.
                   1270:           </xs:documentation>
                   1271:         </xs:annotation>
                   1272:       </xs:element>
                   1273:       <xs:element name="value" type="caparesponse--value">
                   1274:         <xs:annotation>
                   1275:           <xs:documentation>
                   1276:             A value, part of a correct answer.
                   1277:           </xs:documentation>
                   1278:         </xs:annotation>
                   1279:       </xs:element>
1.1       damieng  1280:     </xs:choice>
                   1281:     <xs:attribute name="name" type="xs:string"/>
                   1282:     <xs:attribute default="ordered" name="type">
                   1283:       <xs:simpleType>
                   1284:         <xs:union memberTypes="perl">
                   1285:           <xs:simpleType>
                   1286:             <xs:restriction base="xs:string">
                   1287:               <xs:enumeration value="ordered"/>
                   1288:               <xs:enumeration value="unordered"/>
                   1289:             </xs:restriction>
                   1290:           </xs:simpleType>
                   1291:         </xs:union>
                   1292:       </xs:simpleType>
                   1293:     </xs:attribute>
                   1294:   </xs:complexType>
                   1295:   <xs:simpleType name="caparesponse--value">
                   1296:     <xs:annotation>
                   1297:       <xs:documentation>Value</xs:documentation>
                   1298:     </xs:annotation>
                   1299:     <xs:restriction base="xs:string"/>
                   1300:   </xs:simpleType>
                   1301:   <xs:simpleType name="caparesponse--vector">
                   1302:     <xs:annotation>
                   1303:       <xs:documentation>Vector</xs:documentation>
                   1304:     </xs:annotation>
                   1305:     <xs:restriction base="xs:string"/>
                   1306:   </xs:simpleType>
                   1307:   <xs:annotation>
                   1308:     <xs:documentation>
                   1309:       Formula response (using caparesponse--answergroup like numericalresponse).
                   1310:     </xs:documentation>
                   1311:   </xs:annotation>
                   1312:   <xs:element name="formularesponse">
                   1313:     <xs:annotation>
1.2       damieng  1314:       <xs:documentation>
                   1315:         Formula Response asks the student to type in a formula as an answer.
                   1316:         
                   1317:         If the answer is 2x² + 4, the student is allowed to type “2*x*x+4”, “x*x + x*x + 4”, “2*xˆ2 + 14 - 10”, or any other equivalent expression.
                   1318:         Formula Response problems have many of the same characteristics of Numerical Response problems, including the ability to run scripts, dynamically generate answers, etc.
                   1319:       </xs:documentation>
1.1       damieng  1320:     </xs:annotation>
                   1321:     <xs:complexType mixed="true">
                   1322:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   1323:         <xs:element ref="responseparam"/>
                   1324:         <xs:element name="answergroup" type="caparesponse--answergroup"/>
                   1325:         <xs:element ref="hiddenline"/>
                   1326:         <xs:element ref="hintgroup"/>
                   1327:         <xs:element ref="formulahint"/>
                   1328:         <xs:element ref="hintpart"/>
                   1329:         <xs:group ref="text-only"/>
                   1330:       </xs:choice>
                   1331:       <xs:attributeGroup ref="response-identification"/>
1.2       damieng  1332:       <xs:attribute name="answer" type="xs:string">
                   1333:         <xs:annotation>
                   1334:           <xs:documentation>
                   1335:             The correct answer. It can use variables calculated/defined in the problem’s Perl script block, allowing the answer to be determined dynamically.
                   1336:           </xs:documentation>
                   1337:         </xs:annotation>
                   1338:       </xs:attribute>
1.1       damieng  1339:       <xs:attribute name="samples" type="xs:string">
                   1340:         <xs:annotation>
                   1341:           <xs:documentation>
                   1342:             Sample Points.
                   1343:             
                   1344:             Format:
                   1345:             1. A comma-separated list of the variables you wish to interpret,
                   1346:             2. followed by “@” (not in quotes),
                   1347:             3. followed by any number of the following two things, separated by semi-colons:
                   1348:             (a) a comma-separated list of as many numbers as there are variables, which specifies one sampling point, OR
                   1349:             (b) a comma-separated list of as many numbers as there are variables, followed by a colon, followed by another list of as many numbers as there are variables, followed by a #, followed by an integer.
1.7     ! damieng  1350:             
        !          1351:             a) specifies one point to sample. b) specifies a range for each variable, and the system will take as many random samples from that range as the number after the #.
1.1       damieng  1352:           </xs:documentation>
                   1353:         </xs:annotation>
                   1354:       </xs:attribute>
                   1355:       <xs:attribute name="preprocess" type="xs:string">
                   1356:         <xs:annotation>
                   1357:           <xs:documentation>
                   1358:             Pre-Processor Subroutine
                   1359:           </xs:documentation>
                   1360:         </xs:annotation>
                   1361:       </xs:attribute>
                   1362:     </xs:complexType>
                   1363:   </xs:element>
                   1364:   
                   1365:   <xs:annotation>
                   1366:     <xs:documentation>
                   1367:       Math response
                   1368:     </xs:documentation>
                   1369:   </xs:annotation>
                   1370:   <xs:element name="mathresponse">
                   1371:     <xs:annotation>
                   1372:       <xs:documentation>
1.2       damieng  1373:         Query for text that is evaluated with a script written in a Computer Algebra System (CAS) language.
                   1374:         The CAS script must be included in the response with an &lt;answer&gt; element.
1.1       damieng  1375:         
                   1376:         MathResponse is extremely powerful, as it tests answers for conditions rather than agreement with a particular correct answer. An unfortunate byproduct, however, is that it cannot be analyzed by several of the LON-CAPA statistics tools.
                   1377:       </xs:documentation>
                   1378:     </xs:annotation>
                   1379:     <xs:complexType mixed="true">
                   1380:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   1381:         <xs:element ref="responseparam"/>
                   1382:         <xs:element name="answer" type="mathresponse--answer">
                   1383:           <xs:annotation>
                   1384:             <xs:documentation>
1.2       damieng  1385:               Maxima or R script using the arrays RESPONSE (the student response) and LONCAPALIST (from the args attribute).
                   1386:               Returns a boolean in the last statement that will be true if the answer is correct.
1.1       damieng  1387:             </xs:documentation>
                   1388:           </xs:annotation>
                   1389:         </xs:element>
                   1390:         <xs:element ref="textfield"/>
                   1391:         <xs:element ref="hiddensubmission"/>
                   1392:         <xs:element ref="hiddenline"/>
                   1393:         <xs:element ref="hintgroup"/>
                   1394:         <xs:element ref="mathhint"/>
                   1395:         <xs:element ref="hintpart"/>
                   1396:         <xs:group ref="text-only"/>
                   1397:       </xs:choice>
                   1398:       <xs:attributeGroup ref="response-identification"/>
                   1399:       <xs:attribute name="answerdisplay" type="xs:string">
                   1400:         <xs:annotation>
                   1401:           <xs:documentation>
1.2       damieng  1402:             This attribute contains what is displayed when the problem is in "Show Answer" mode.
1.6       damieng  1403:             You will want to use it so that the students can see the correct answer after the "Show Answer Date" configured when the problem is assigned in the course space.
1.2       damieng  1404:             
1.6       damieng  1405:             This is usually the name of a Perl string variable (starting with '$') created in a Perl script before the response.
1.1       damieng  1406:           </xs:documentation>
                   1407:         </xs:annotation>
                   1408:       </xs:attribute>
                   1409:       <xs:attribute name="cas" use="required">
                   1410:         <xs:annotation>
                   1411:           <xs:documentation>
                   1412:             Algebra System. Maxima and R are supported.
                   1413:           </xs:documentation>
                   1414:         </xs:annotation>
                   1415:         <xs:simpleType>
                   1416:           <xs:union memberTypes="perl">
                   1417:             <xs:simpleType>
                   1418:               <xs:restriction base="xs:string">
                   1419:                 <xs:enumeration value="maxima"/>
                   1420:                 <xs:enumeration value="R"/>
                   1421:               </xs:restriction>
                   1422:             </xs:simpleType>
                   1423:           </xs:union>
                   1424:         </xs:simpleType>
                   1425:       </xs:attribute>
                   1426:       <xs:attribute name="args" type="xs:string">
                   1427:         <xs:annotation>
                   1428:           <xs:documentation>
1.2       damieng  1429:             Perl array that will be passed to the CAS script as the LONCAPALIST variable.
                   1430:             This is usually the name of a Perl array variable (starting with '@') created in a Perl script before the response.
1.1       damieng  1431:           </xs:documentation>
                   1432:         </xs:annotation>
                   1433:       </xs:attribute>
                   1434:       <xs:attribute name="libraries" type="xs:string"/>
                   1435:     </xs:complexType>
                   1436:   </xs:element>
                   1437:   <xs:complexType mixed="true" name="mathresponse--answer">
                   1438:     <xs:attribute name="type" type="xs:string"/>
                   1439:     <xs:attribute fixed="preserve" ref="xml:space"/>
                   1440:   </xs:complexType>
                   1441:   
                   1442:   <xs:annotation>
                   1443:     <xs:documentation>
                   1444:       Function plot response
                   1445:     </xs:documentation>
                   1446:   </xs:annotation>
                   1447:   <xs:element name="functionplotresponse">
                   1448:     <xs:annotation>
                   1449:       <xs:documentation>
                   1450:         Query for the drawing of a function.
                   1451:         
                   1452:         Requires that the student creates a plot that matches specified criteria.
                   1453:         Examples can be functions that have certain slopes, curvature, maxima or minima at specified independent coordinate values. The students create their answer by dragging the curves and adjusting the slopes.
                   1454:       </xs:documentation>
                   1455:     </xs:annotation>
                   1456:     <xs:complexType mixed="true">
                   1457:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   1458:         <xs:element ref="functionplotelements"/>
                   1459:         <xs:element ref="functionplotruleset"/>
                   1460:         <xs:element ref="hintgroup"/>
                   1461:         <xs:group ref="text-only"/>
                   1462:       </xs:choice>
                   1463:       <xs:attributeGroup ref="response-identification"/>
                   1464:       <xs:attribute name="width" type="int-or-perl">
                   1465:         <xs:annotation>
                   1466:           <xs:documentation>
                   1467:             Width (pixels)
                   1468:           </xs:documentation>
                   1469:         </xs:annotation>
                   1470:       </xs:attribute>
                   1471:       <xs:attribute name="height" type="int-or-perl">
                   1472:         <xs:annotation>
                   1473:           <xs:documentation>
                   1474:             Height (pixels)
                   1475:           </xs:documentation>
                   1476:         </xs:annotation>
                   1477:       </xs:attribute>
                   1478:       <xs:attribute name="xlabel" type="xs:string">
                   1479:         <xs:annotation>
                   1480:           <xs:documentation>
                   1481:             Label x-axis
                   1482:           </xs:documentation>
                   1483:         </xs:annotation>
                   1484:       </xs:attribute>
                   1485:       <xs:attribute default="-10" name="xmin" type="real-or-perl">
                   1486:         <xs:annotation>
                   1487:           <xs:documentation>
                   1488:             Minimum x-value
                   1489:           </xs:documentation>
                   1490:         </xs:annotation>
                   1491:       </xs:attribute>
                   1492:       <xs:attribute default="10" name="xmax" type="real-or-perl">
                   1493:         <xs:annotation>
                   1494:           <xs:documentation>
                   1495:             Maximum x-value
                   1496:           </xs:documentation>
                   1497:         </xs:annotation>
                   1498:       </xs:attribute>
                   1499:       <xs:attribute default="yes" name="xaxisvisible" type="yesno-or-perl">
                   1500:         <xs:annotation>
                   1501:           <xs:documentation>
                   1502:             x-axis visible
                   1503:           </xs:documentation>
                   1504:         </xs:annotation>
                   1505:       </xs:attribute>
                   1506:       <xs:attribute name="ylabel" type="xs:string">
                   1507:         <xs:annotation>
                   1508:           <xs:documentation>
                   1509:             Label y-axis
                   1510:           </xs:documentation>
                   1511:         </xs:annotation>
                   1512:       </xs:attribute>
                   1513:       <xs:attribute default="-10" name="ymin" type="real-or-perl">
                   1514:         <xs:annotation>
                   1515:           <xs:documentation>
                   1516:             Minimum y-value
                   1517:           </xs:documentation>
                   1518:         </xs:annotation>
                   1519:       </xs:attribute>
                   1520:       <xs:attribute default="10" name="ymax" type="real-or-perl">
                   1521:         <xs:annotation>
                   1522:           <xs:documentation>
                   1523:             Maximum y-value
                   1524:           </xs:documentation>
                   1525:         </xs:annotation>
                   1526:       </xs:attribute>
                   1527:       <xs:attribute default="yes" name="yaxisvisible" type="yesno-or-perl">
                   1528:         <xs:annotation>
                   1529:           <xs:documentation>
                   1530:             y-axis visible
                   1531:           </xs:documentation>
                   1532:         </xs:annotation>
                   1533:       </xs:attribute>
                   1534:       <xs:attribute default="yes" name="gridvisible" type="yesno-or-perl">
                   1535:         <xs:annotation>
                   1536:           <xs:documentation>
                   1537:             This determines whether or not the grid is on the graph.
                   1538:           </xs:documentation>
                   1539:         </xs:annotation>
                   1540:       </xs:attribute>
                   1541:       <xs:attribute name="answerdisplay" type="xs:string">
                   1542:         <xs:annotation>
                   1543:           <xs:documentation>
                   1544:             Background plot(s) for answer (function(x):xmin:xmax,function(x):xmin:xmax,x1:y1:sx1:sy1:x2:y2:sx2:sy2,...)
                   1545:             
                   1546:             This is a green curve the computer will display once the correct answer has been submitted. It is static, and can be given as a piecewise function.
                   1547:             Since some problems will have multiple correct answers, this necessarily will only be a possible answer. Only the left hand side of the equation is necessary. For example, entering x + 2 will display the line y = x + 2.
                   1548:             The syntax must be syntax recognized by GeoGebra. To test syntax for Geogebra directly, visit http://www.geogebra.org/webstart/geogebra.html .
                   1549:           </xs:documentation>
                   1550:         </xs:annotation>
                   1551:       </xs:attribute>
                   1552:     </xs:complexType>
                   1553:   </xs:element>
                   1554:   <xs:element name="functionplotelements">
                   1555:     <xs:annotation>
                   1556:       <xs:documentation>Function Plot Elements</xs:documentation>
                   1557:     </xs:annotation>
                   1558:     <xs:complexType>
                   1559:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   1560:         <xs:element ref="spline"/>
                   1561:         <xs:element ref="backgroundplot"/>
                   1562:         <xs:element ref="plotobject"/>
                   1563:         <xs:element ref="plotvector"/>
                   1564:         <xs:element ref="drawvectorsum"/>
                   1565:       </xs:choice>
                   1566:     </xs:complexType>
                   1567:   </xs:element>
                   1568:   <xs:element name="spline">
                   1569:     <xs:annotation>
                   1570:       <xs:documentation>
                   1571:         At least one spline is necessary for a graph problem. These splines are what will be adjusted and analyzed to solve the problem.
                   1572:       </xs:documentation>
                   1573:     </xs:annotation>
                   1574:     <xs:complexType>
                   1575:       <xs:attribute name="index">
                   1576:         <xs:annotation>
                   1577:           <xs:documentation>
                   1578:             This is the label assigned to the spline. In general, it's simplest just to label them A, B, C etc.
                   1579:           </xs:documentation>
                   1580:         </xs:annotation>
                   1581:         <xs:simpleType>
                   1582:           <xs:union memberTypes="perl">
                   1583:             <xs:simpleType>
                   1584:               <xs:restriction base="xs:string">
                   1585:                 <xs:pattern value="[a-zA-Z_]+"/>
                   1586:               </xs:restriction>
                   1587:             </xs:simpleType>
                   1588:           </xs:union>
                   1589:         </xs:simpleType>
                   1590:       </xs:attribute>
                   1591:       <xs:attribute name="order">
                   1592:         <xs:annotation>
                   1593:           <xs:documentation>
                   1594:             This determines the number of Control Points on the spline. For example, selecting '3' means there will be 3 points on the spline that can be moved, as well as 3 points off the spline that will control the slope. 
                   1595:           </xs:documentation>
                   1596:         </xs:annotation>
                   1597:         <xs:simpleType>
                   1598:           <xs:union memberTypes="perl">
                   1599:             <xs:simpleType>
                   1600:               <xs:restriction base="xs:int">
                   1601:                 <xs:minInclusive value="2"/>
                   1602:                 <xs:maxInclusive value="8"/>
                   1603:               </xs:restriction>
                   1604:             </xs:simpleType>
                   1605:           </xs:union>
                   1606:         </xs:simpleType>
                   1607:       </xs:attribute>
                   1608:       <xs:attribute name="initx" type="real-or-perl">
                   1609:         <xs:annotation>
                   1610:           <xs:documentation>
                   1611:             Initial x-value
                   1612:             "Initial x-value" and "Initial y-value" determine where the left most Control Point will be.
                   1613:           </xs:documentation>
                   1614:         </xs:annotation>
                   1615:       </xs:attribute>
                   1616:       <xs:attribute name="inity" type="real-or-perl">
                   1617:         <xs:annotation>
                   1618:           <xs:documentation>
                   1619:             Initial y-value
                   1620:             "Initial x-value" and "Initial y-value" determine where the left most Control Point will be.
                   1621:           </xs:documentation>
                   1622:         </xs:annotation>
                   1623:       </xs:attribute>
                   1624:       <xs:attribute name="scalex" type="real-or-perl">
                   1625:         <xs:annotation>
                   1626:           <xs:documentation>
                   1627:             This determines the right most location of the Control Points (on the spline). To figure out where this point will be, add 'Initial x-value' to 'Scale x'.
                   1628:           </xs:documentation>
                   1629:         </xs:annotation>
                   1630:       </xs:attribute>
                   1631:       <xs:attribute name="scaley" type="real-or-perl">
                   1632:         <xs:annotation>
                   1633:           <xs:documentation>
                   1634:             This determines the distance (in the y-direction) between the Control Points on the spline, and the ones that control the slope.
                   1635:           </xs:documentation>
                   1636:         </xs:annotation>
                   1637:       </xs:attribute>
                   1638:     </xs:complexType>
                   1639:   </xs:element>
                   1640:   <xs:element name="backgroundplot">
                   1641:     <xs:annotation>
                   1642:       <xs:documentation>
                   1643:         Background Function Plot.
                   1644:         This places a static curve on the graph of your choosing. It can be labeled, moveable or fixed, and any color desired. Only the right hand side of the function you want displayed is necessary. For example, entering x+2 will display the line y=x+2. The syntax must be syntax recognized by GeoGebra.
                   1645:       </xs:documentation>
                   1646:     </xs:annotation>
                   1647:     <xs:complexType>
                   1648:       <xs:attribute name="function" type="xs:string" use="required">
                   1649:         <xs:annotation>
                   1650:           <xs:documentation>
                   1651:             An equals sign is not necessary. Just give the right hand side of the function. LON-CAPA variables are usable as well to allow individualized problems for each student. The syntax must be syntax recognized by GeoGebra.
                   1652:           </xs:documentation>
                   1653:         </xs:annotation>
                   1654:       </xs:attribute>
                   1655:       <xs:attribute name="xinitial" type="real-or-perl">
                   1656:         <xs:annotation>
                   1657:           <xs:documentation>
                   1658:             Initial x-value (optional)
                   1659:           </xs:documentation>
                   1660:         </xs:annotation>
                   1661:       </xs:attribute>
                   1662:       <xs:attribute name="xfinal" type="real-or-perl">
                   1663:         <xs:annotation>
                   1664:           <xs:documentation>
                   1665:             Final x-value (optional)
                   1666:           </xs:documentation>
                   1667:         </xs:annotation>
                   1668:       </xs:attribute>
                   1669:       <xs:attribute name="label" type="xs:string">
                   1670:         <xs:annotation>
                   1671:           <xs:documentation>
                   1672:             Label on Plot
                   1673:           </xs:documentation>
                   1674:         </xs:annotation>
                   1675:       </xs:attribute>
                   1676:       <xs:attribute name="color">
                   1677:         <xs:annotation>
                   1678:           <xs:documentation>
                   1679:             Color of the background function (hex code).
                   1680:             The default is 000000 (black). It is recommended to choose a color other than green, since it is easily confused with being the answer.
                   1681:           </xs:documentation>
                   1682:         </xs:annotation>
                   1683:         <xs:simpleType>
                   1684:           <xs:union memberTypes="perl">
                   1685:             <xs:simpleType>
                   1686:               <xs:restriction base="xs:string">
                   1687:                 <xs:pattern value="[\da-fA-F]{6}"/>
                   1688:               </xs:restriction>
                   1689:             </xs:simpleType>
                   1690:           </xs:union>
                   1691:         </xs:simpleType>
                   1692:       </xs:attribute>
                   1693:       <xs:attribute default="yes" name="fixed" type="yesno-or-perl">
                   1694:         <xs:annotation>
                   1695:           <xs:documentation>
                   1696:             Fixed location
                   1697:           </xs:documentation>
                   1698:         </xs:annotation>
                   1699:       </xs:attribute>
                   1700:     </xs:complexType>
                   1701:   </xs:element>
                   1702:   <xs:element name="plotobject">
                   1703:     <xs:annotation>
                   1704:       <xs:documentation>
                   1705:         This places a point in the applet. Generally intended to be used with Vectors to create problems involving Free-Body Diagrams or any other points that vectors (or arrows) connect to and from.
                   1706:       </xs:documentation>
                   1707:     </xs:annotation>
                   1708:     <xs:complexType>
                   1709:       <xs:attribute name="label" type="xs:string">
                   1710:         <xs:annotation>
                   1711:           <xs:documentation>
                   1712:             Label on Plot
                   1713:           </xs:documentation>
                   1714:         </xs:annotation>
                   1715:       </xs:attribute>
                   1716:       <xs:attribute name="x" type="real-or-perl"/>
                   1717:       <xs:attribute name="y" type="real-or-perl"/>
                   1718:     </xs:complexType>
                   1719:   </xs:element>
                   1720:   <xs:element name="plotvector">
                   1721:     <xs:annotation>
                   1722:       <xs:documentation>
                   1723:         This creates a vector (or arrow) in the applet. Generally intended to be used with Objects to create problems involving Free-Body Diagrams or to establish connections between Objects.
                   1724:       </xs:documentation>
                   1725:     </xs:annotation>
                   1726:     <xs:complexType>
                   1727:       <xs:attribute name="label" type="xs:string">
                   1728:         <xs:annotation>
                   1729:           <xs:documentation>
                   1730:             Label on Plot.
                   1731:             Determines the name of the vector, as well as the name that will be visible in the problem.
                   1732:             This value MUST be capitalized and cannot include spaces or most symbols. To be safe, stick with letters and numbers.
                   1733:           </xs:documentation>
                   1734:         </xs:annotation>
                   1735:       </xs:attribute>
                   1736:       <xs:attribute name="tailx" type="real-or-perl"/>
                   1737:       <xs:attribute name="taily" type="real-or-perl"/>
                   1738:       <xs:attribute name="tipx" type="real-or-perl"/>
                   1739:       <xs:attribute name="tipy" type="real-or-perl"/>
                   1740:     </xs:complexType>
                   1741:   </xs:element>
                   1742:   <xs:element name="drawvectorsum">
                   1743:     <xs:annotation>
                   1744:       <xs:documentation>Draw Vector Sum</xs:documentation>
                   1745:     </xs:annotation>
                   1746:     <xs:complexType>
                   1747:       <xs:attribute name="label" type="xs:string">
                   1748:         <xs:annotation>
                   1749:           <xs:documentation>
                   1750:             Label on Plot
                   1751:           </xs:documentation>
                   1752:         </xs:annotation>
                   1753:       </xs:attribute>
                   1754:       <xs:attribute name="tailx" type="real-or-perl"/>
                   1755:       <xs:attribute name="taily" type="real-or-perl"/>
                   1756:       <xs:attribute default="yes" name="showvalue" type="yesno-or-perl"/>
                   1757:       <xs:attribute name="vectorlist" type="xs:string"/>
                   1758:     </xs:complexType>
                   1759:   </xs:element>
                   1760:   <xs:element name="functionplotruleset">
                   1761:     <xs:annotation>
                   1762:       <xs:documentation>
                   1763:         This is where the rules are defined. These rules will determine whether or not an entered answer is correct or not. If there are no rules, any answer will be deemed correct. If there is more than one rule, when an answer is submitted, the server will analyze them in order until one of them is broken (of course, if it's a correct answer, it will go through all of them and return a green box). In such an event, any subsequent rules will be ignored. If conditional hints related to these rules are added, only the first broken rule's hint will be shown, even if all rules are broken.
                   1764:       </xs:documentation>
                   1765:     </xs:annotation>
                   1766:     <xs:complexType>
                   1767:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   1768:         <xs:element ref="functionplotrule"/>
                   1769:         <xs:element ref="functionplotvectorrule"/>
                   1770:         <xs:element ref="functionplotvectorsumrule"/>
                   1771:         <xs:element ref="functionplotcustomrule"/>
                   1772:       </xs:choice>
                   1773:     </xs:complexType>
                   1774:   </xs:element>
                   1775:   <xs:element name="functionplotrule">
                   1776:     <xs:annotation>
                   1777:       <xs:documentation>
                   1778:         Function Plot Graph Rule.
                   1779:         
                   1780:         Used to create a rule that determines whether or not a submitted graph is correct. In general, it takes the form of testing the function, its integral, or its first or second derivative over a given set of x-values. The test can be to see if it equals, is greater than, or less than a specified value. Anywhere a number is needed, a variable can also be used.
                   1781:       </xs:documentation>
                   1782:     </xs:annotation>
                   1783:     <xs:complexType>
                   1784:       <xs:attribute name="index" type="xs:string">
                   1785:         <xs:annotation>
                   1786:           <xs:documentation>
                   1787:             This is an internal label for the rule. Something must be entered here, and it must be different for each rule. This same value will be used to add a conditional hint.
                   1788:           </xs:documentation>
                   1789:         </xs:annotation>
                   1790:       </xs:attribute>
                   1791:       <xs:attribute default="0" name="derivativeorder">
                   1792:         <xs:annotation>
                   1793:           <xs:documentation>
                   1794:             This determines what the server will be testing. For instance, choose 'First derivative' causes the server to evaluate the derivative of the entered answer over the given domain.
                   1795:           </xs:documentation>
                   1796:         </xs:annotation>
                   1797:         <xs:simpleType>
                   1798:           <xs:union memberTypes="perl">
                   1799:             <xs:simpleType>
                   1800:               <xs:restriction base="xs:int">
                   1801:                 <xs:enumeration value="0"/>
                   1802:                 <xs:enumeration value="1"/>
                   1803:                 <xs:enumeration value="2"/>
                   1804:                 <xs:enumeration value="-1"/>
                   1805:               </xs:restriction>
                   1806:             </xs:simpleType>
                   1807:           </xs:union>
                   1808:         </xs:simpleType>
                   1809:       </xs:attribute>
                   1810:       <xs:attribute name="xinitial" type="real-or-perl">
                   1811:         <xs:annotation>
                   1812:           <xs:documentation>
                   1813:             Initial x-value.
                   1814:             A value must be entered for one of "Initial x-value" and "Initial x-value label". Either choose a numerical value for x (the first option), or choose the beginning of the submitted answer, the end, or a previously chosen named point.
                   1815:           </xs:documentation>
                   1816:         </xs:annotation>
                   1817:       </xs:attribute>
                   1818:       <xs:attribute name="xinitiallabel">
                   1819:         <xs:annotation>
                   1820:           <xs:documentation>
                   1821:             Initial x-value label.
                   1822:             A value must be entered for one of "Initial x-value" and "Initial x-value label". Either choose a numerical value for x (the first option), or choose the beginning of the submitted answer, the end, or a previously chosen named point.
                   1823:           </xs:documentation>
                   1824:         </xs:annotation>
                   1825:         <xs:simpleType>
                   1826:           <xs:union memberTypes="perl">
                   1827:             <xs:simpleType>
                   1828:               <xs:restriction base="xs:string">
                   1829:                 <xs:pattern value="[a-zA-Z_]+"/>
                   1830:               </xs:restriction>
                   1831:             </xs:simpleType>
                   1832:           </xs:union>
                   1833:         </xs:simpleType>
                   1834:       </xs:attribute>
                   1835:       <xs:attribute name="xfinal" type="real-or-perl">
                   1836:         <xs:annotation>
                   1837:           <xs:documentation>
                   1838:             Final x-value (optional).
                   1839:             This determines the end of the domain over which the rule examines. To test only a single point (the initial value), leave "Final x-value" and "Final x-value label" blank. If a label is entered, such as 'positive', the point at which the rule fails will be given this special label. This label can then be used in subsequent rules as an 'Initial x-value label'.
                   1840:           </xs:documentation>
                   1841:         </xs:annotation>
                   1842:       </xs:attribute>
                   1843:       <xs:attribute name="xfinallabel">
                   1844:         <xs:annotation>
                   1845:           <xs:documentation>
                   1846:             Final x-value label (optional).
                   1847:             This determines the end of the domain over which the rule examines. To test only a single point (the initial value), leave "Final x-value" and "Final x-value label" blank. If a label is entered, such as 'positive', the point at which the rule fails will be given this special label. This label can then be used in subsequent rules as an 'Initial x-value label'.
                   1848:           </xs:documentation>
                   1849:         </xs:annotation>
                   1850:         <xs:simpleType>
                   1851:           <xs:union memberTypes="perl">
                   1852:             <xs:simpleType>
                   1853:               <xs:restriction base="xs:string">
                   1854:                 <xs:pattern value="[a-zA-Z_]+"/>
                   1855:               </xs:restriction>
                   1856:             </xs:simpleType>
                   1857:           </xs:union>
                   1858:         </xs:simpleType>
                   1859:       </xs:attribute>
                   1860:       <xs:attribute name="minimumlength" type="real-or-perl">
                   1861:         <xs:annotation>
                   1862:           <xs:documentation>
                   1863:             Minimum length for range (optional).
                   1864:             This tests that the difference between the initial and final x-values are at least a certain length apart. This is only useful if there is at least one label.
                   1865:           </xs:documentation>
                   1866:         </xs:annotation>
                   1867:       </xs:attribute>
                   1868:       <xs:attribute name="maximumlength" type="real-or-perl">
                   1869:         <xs:annotation>
                   1870:           <xs:documentation>
                   1871:             Maximum length for range (optional).
                   1872:             This tests that the difference between the initial and final x-values are at most a certain length apart. This is only useful if there is at least one label.
                   1873:           </xs:documentation>
                   1874:         </xs:annotation>
                   1875:       </xs:attribute>
                   1876:       <xs:attribute default="eq" name="relationship">
                   1877:         <xs:annotation>
                   1878:           <xs:documentation>
                   1879:             The heart of the rule. This choice determines whether the chosen 'function' is greater than, less than, equal to, etc. a certain 'value'.
                   1880:           </xs:documentation>
                   1881:         </xs:annotation>
                   1882:         <xs:simpleType>
                   1883:           <xs:union memberTypes="perl">
                   1884:             <xs:simpleType>
                   1885:               <xs:restriction base="xs:string">
                   1886:                 <xs:enumeration value="eq"/>
                   1887:                 <xs:enumeration value="ne"/>
                   1888:                 <xs:enumeration value="ge"/>
                   1889:                 <xs:enumeration value="gt"/>
                   1890:                 <xs:enumeration value="lt"/>
                   1891:                 <xs:enumeration value="le"/>
                   1892:               </xs:restriction>
                   1893:             </xs:simpleType>
                   1894:           </xs:union>
                   1895:         </xs:simpleType>
                   1896:       </xs:attribute>
                   1897:       <xs:attribute default="undef" name="value" type="xs:string">
                   1898:         <xs:annotation>
                   1899:           <xs:documentation>
                   1900:             Enter the number you wish to compare to. It is also possible to choose 'not defined', in the event the answer should not have a value for the given domain. Within the value argument, the function itself can be evaluated using &amp;fpr_f(), its derivative using &amp;fpr_dfdx(), and its second derivative using &amp;fpr_d2fdx2(). This allows for a comparison of two points on the graph. The value of a previously defined label can be retrieved using the function &amp;fpr_val(), e.g., &amp;fpr_val('positive'). Previous defined values from script blocks can also be retrieved as normal variables, e.g., $x.
                   1901:           </xs:documentation>
                   1902:         </xs:annotation>
                   1903:       </xs:attribute>
                   1904:       <xs:attribute name="percenterror" type="real-or-perl">
                   1905:         <xs:annotation>
                   1906:           <xs:documentation>
                   1907:             This allows for a margin of error in the y-direction. For instance, if the rule requires that the derivative be equal to 5, the server will accept values close enough to 5 that are within the percent error defined here. Note: Choosing 10% would not mean that the answer is correct as long as it is within the range 4.5-5.5. Instead, the percent corresponds to the total size of the graph. For the function itself, the 'percent error' is multiplied by the ymax-ymin; for the first derivative, it's multiplied by (ymax-ymin)/(xmax-xmin); for the second derivative, it's multiplied by (ymax-ymin)/(xmax-xmin)2; and for the integral, it's multiplied by (ymax-ymin)*(xmax-xmin).
                   1908:           </xs:documentation>
                   1909:         </xs:annotation>
                   1910:       </xs:attribute>
                   1911:     </xs:complexType>
                   1912:   </xs:element>
                   1913:   <xs:element name="functionplotvectorrule">
                   1914:     <xs:annotation>
                   1915:       <xs:documentation>
                   1916:         Function Plot Vector Rule
                   1917:         Used to test whether vectors are in the right place, pointed in the right direction, and have the correct length.
                   1918:       </xs:documentation>
                   1919:     </xs:annotation>
                   1920:     <xs:complexType>
                   1921:       <xs:attribute name="index" type="xs:string">
                   1922:         <xs:annotation>
                   1923:           <xs:documentation>
                   1924:             Index/Name
                   1925:             This is an internal label for the rule. This attribute must be different for each rule. This same value will be used to add a conditional hint.
                   1926:           </xs:documentation>
                   1927:         </xs:annotation>
                   1928:       </xs:attribute>
                   1929:       <xs:attribute name="vector" type="xs:string">
                   1930:         <xs:annotation>
                   1931:           <xs:documentation>
                   1932:             The name of one of the vectors in the list of function plot elements. Specifically, the one you want to test.
                   1933:           </xs:documentation>
                   1934:         </xs:annotation>
                   1935:       </xs:attribute>
                   1936:       <xs:attribute name="attachpoint" type="xs:string">
                   1937:         <xs:annotation>
                   1938:           <xs:documentation>
                   1939:             Attached to object.
                   1940:             Object(s) this vector should be attached to. For more than one object, separate them by commas. If the vector should not be attached to any object, leave this blank. In this case, an object is considered attached if its tail OR its tip is in the vicinity of the object.
                   1941:           </xs:documentation>
                   1942:         </xs:annotation>
                   1943:       </xs:attribute>
                   1944:       <xs:attribute name="notattachpoint" type="xs:string">
                   1945:         <xs:annotation>
                   1946:           <xs:documentation>
                   1947:             Not attached to object.
                   1948:             Object(s) that this vector should be not be near.
                   1949:             For more than one object, separate them by commas. Particularly useful for distractor vectors.
                   1950:           </xs:documentation>
                   1951:         </xs:annotation>
                   1952:       </xs:attribute>
                   1953:       <xs:attribute name="tailpoint" type="xs:string">
                   1954:         <xs:annotation>
                   1955:           <xs:documentation>
                   1956:             Tail attached to object.
                   1957:             Tail(s) this vector should be attached to.
                   1958:           </xs:documentation>
                   1959:         </xs:annotation>
                   1960:       </xs:attribute>
                   1961:       <xs:attribute name="tippoint" type="xs:string">
                   1962:         <xs:annotation>
                   1963:           <xs:documentation>
                   1964:             Tip attached to object.
                   1965:             Tip(s) this vector should be attached to.
                   1966:           </xs:documentation>
                   1967:         </xs:annotation>
                   1968:       </xs:attribute>
                   1969:       <xs:attribute name="nottailpoint" type="xs:string">
                   1970:         <xs:annotation>
                   1971:           <xs:documentation>
                   1972:             Tail not attached to object.
                   1973:             Tail(s) this vector should not be attached to.
                   1974:           </xs:documentation>
                   1975:         </xs:annotation>
                   1976:       </xs:attribute>
                   1977:       <xs:attribute name="nottippoint" type="xs:string">
                   1978:         <xs:annotation>
                   1979:           <xs:documentation>
                   1980:             Tip not attached to object.
                   1981:             Tip(s) this vector should not be attached to.
                   1982:           </xs:documentation>
                   1983:         </xs:annotation>
                   1984:       </xs:attribute>
                   1985:       <xs:attribute name="length" type="real-or-perl">
                   1986:         <xs:annotation>
                   1987:           <xs:documentation>
                   1988:             How long the vector should be.
                   1989:           </xs:documentation>
                   1990:         </xs:annotation>
                   1991:       </xs:attribute>
                   1992:       <xs:attribute name="lengtherror" type="real-or-perl">
                   1993:         <xs:annotation>
                   1994:           <xs:documentation>
                   1995:             Absolute error length.
                   1996:             How accurate the length must be to get the answer correct.
                   1997:           </xs:documentation>
                   1998:         </xs:annotation>
                   1999:       </xs:attribute>
                   2000:       <xs:attribute name="angle" type="real-or-perl">
                   2001:         <xs:annotation>
                   2002:           <xs:documentation>
                   2003:             What direction should the vector point. All values are measured in degrees, counterclockwise starting at the positive x-axis. Values must be 0 ≤ θ &lt; 360.
                   2004:           </xs:documentation>
                   2005:         </xs:annotation>
                   2006:       </xs:attribute>
                   2007:       <xs:attribute name="angleerror" type="real-or-perl">
                   2008:         <xs:annotation>
                   2009:           <xs:documentation>
                   2010:             Absolute error angle.
                   2011:             How accurate the angle must be to get the answer correct.
                   2012:           </xs:documentation>
                   2013:         </xs:annotation>
                   2014:       </xs:attribute>
                   2015:     </xs:complexType>
                   2016:   </xs:element>
                   2017:   <xs:element name="functionplotvectorsumrule">
                   2018:     <xs:annotation>
                   2019:       <xs:documentation>
                   2020:         Function Plot Vector Sum Rule
                   2021:         Used to test the sum of a set of vectors.
                   2022:       </xs:documentation>
                   2023:     </xs:annotation>
                   2024:     <xs:complexType>
                   2025:       <xs:attribute name="index" type="xs:string">
                   2026:         <xs:annotation>
                   2027:           <xs:documentation>
                   2028:             Index/Name.
                   2029:             This is an internal label for the rule. It must be different for each rule. This same value will be used to add a conditional hint.
                   2030:           </xs:documentation>
                   2031:         </xs:annotation>
                   2032:       </xs:attribute>
                   2033:       <xs:attribute name="vectors" type="xs:string">
                   2034:         <xs:annotation>
                   2035:           <xs:documentation>
                   2036:             Comma-separated list of vectors.
                   2037:             List all of the vectors that should be added up to be tested.
                   2038:           </xs:documentation>
                   2039:         </xs:annotation>
                   2040:       </xs:attribute>
                   2041:       <xs:attribute name="length" type="real-or-perl">
                   2042:         <xs:annotation>
                   2043:           <xs:documentation>
                   2044:             Sum vector length.
                   2045:             How long the sum of these vectors should be.
                   2046:           </xs:documentation>
                   2047:         </xs:annotation>
                   2048:       </xs:attribute>
                   2049:       <xs:attribute name="lengtherror" type="real-or-perl">
                   2050:         <xs:annotation>
                   2051:           <xs:documentation>
                   2052:             Absolute error length.
                   2053:             How accurate the length must be to get the answer correct.
                   2054:           </xs:documentation>
                   2055:         </xs:annotation>
                   2056:       </xs:attribute>
                   2057:       <xs:attribute name="angle" type="real-or-perl">
                   2058:         <xs:annotation>
                   2059:           <xs:documentation>
                   2060:             Sum vector angle.
                   2061:             What direction should the sum of these vectors point. All values are measured in degrees, counterclockwise starting at the positive x-axis. Values must be 0 ≤ θ &lt; 360.
                   2062:           </xs:documentation>
                   2063:         </xs:annotation>
                   2064:       </xs:attribute>
                   2065:       <xs:attribute name="angleerror" type="real-or-perl">
                   2066:         <xs:annotation>
                   2067:           <xs:documentation>
                   2068:             Absolute error angle.
                   2069:             How accurate the angle must be to get the answer correct.
                   2070:           </xs:documentation>
                   2071:         </xs:annotation>
                   2072:       </xs:attribute>
                   2073:     </xs:complexType>
                   2074:   </xs:element>
                   2075:   <xs:element name="functionplotcustomrule">
                   2076:     <xs:annotation>
                   2077:       <xs:documentation>
                   2078:         Used to create rules that aren't options using the other rules. The coding is done in Perl and follows Perl syntax. Any variable written inside this rule will be recognized as normal and any evaluation function can be used as well.
                   2079:       </xs:documentation>
                   2080:     </xs:annotation>
                   2081:     <xs:complexType>
                   2082:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   2083:         <xs:element name="answer">
                   2084:           <xs:annotation>
                   2085:             <xs:documentation>
                   2086:               Answer algorithm, normally in Perl
                   2087:             </xs:documentation>
                   2088:           </xs:annotation>
                   2089:           <xs:complexType mixed="true">
                   2090:             <xs:attribute default="loncapa/perl" name="type" type="xs:string"/>
                   2091:             <xs:attribute fixed="preserve" ref="xml:space"/>
                   2092:           </xs:complexType>
                   2093:         </xs:element>
                   2094:       </xs:choice>
                   2095:       <xs:attribute name="index" type="xs:string">
                   2096:         <xs:annotation>
                   2097:           <xs:documentation>
                   2098:             Index/Name
                   2099:           </xs:documentation>
                   2100:         </xs:annotation>
                   2101:       </xs:attribute>
                   2102:     </xs:complexType>
                   2103:   </xs:element>
                   2104:   
                   2105:   <xs:annotation>
                   2106:     <xs:documentation>
                   2107:       Organic response
                   2108:     </xs:documentation>
                   2109:   </xs:annotation>
                   2110:   <xs:element name="organicresponse">
                   2111:     <xs:annotation>
                   2112:       <xs:documentation>
                   2113:         Query for an organic chemical structure with a molecular editor.
                   2114:       </xs:documentation>
                   2115:     </xs:annotation>
                   2116:     <xs:complexType mixed="true">
                   2117:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   2118:         <xs:element ref="responseparam"/>
                   2119:         <xs:element ref="hiddenline"/>
                   2120:         <xs:element ref="hintgroup"/>
                   2121:         <xs:element ref="organichint"/>
                   2122:         <xs:element ref="hintpart"/>
                   2123:         <xs:group ref="text-only"/>
                   2124:       </xs:choice>
                   2125:       <xs:attributeGroup ref="response-identification"/>
                   2126:       <xs:attribute default="autoez" name="options">
                   2127:         <xs:simpleType>
                   2128:           <xs:union memberTypes="perl">
                   2129:             <xs:simpleType>
                   2130:               <xs:restriction base="xs:string">
                   2131:                 <xs:pattern value="(autoez|multipart|nostereo|reaction|number)(\s*,\s*(autoez|multipart|nostereo|reaction|number))*"/>
                   2132:               </xs:restriction>
                   2133:             </xs:simpleType>
                   2134:           </xs:union>
                   2135:         </xs:simpleType>
                   2136:       </xs:attribute>
                   2137:       <xs:attribute name="molecule" type="xs:string">
                   2138:         <xs:annotation>
                   2139:           <xs:documentation>
                   2140:             Starting Molecule
                   2141:           </xs:documentation>
                   2142:         </xs:annotation>
                   2143:       </xs:attribute>
                   2144:       <xs:attribute name="answer" type="xs:string">
                   2145:         <xs:annotation>
                   2146:           <xs:documentation>
                   2147:             Correct Answer
                   2148:           </xs:documentation>
                   2149:         </xs:annotation>
                   2150:       </xs:attribute>
                   2151:       <xs:attribute name="jmeanswer" type="xs:string">
                   2152:         <xs:annotation>
                   2153:           <xs:documentation>
                   2154:             JME string of the answer
                   2155:           </xs:documentation>
                   2156:         </xs:annotation>
                   2157:       </xs:attribute>
                   2158:       <xs:attribute name="width" type="int-or-perl">
                   2159:         <xs:annotation>
                   2160:           <xs:documentation>
                   2161:             Width of correct answer image
                   2162:           </xs:documentation>
                   2163:         </xs:annotation>
                   2164:       </xs:attribute>
                   2165:     </xs:complexType>
                   2166:   </xs:element>
                   2167:   
                   2168:   <xs:annotation>
                   2169:     <xs:documentation>
                   2170:       Reaction response
                   2171:     </xs:documentation>
                   2172:   </xs:annotation>
                   2173:   <xs:element name="reactionresponse">
                   2174:     <xs:annotation>
                   2175:       <xs:documentation>
                   2176:         Query for a chemical reaction.
                   2177:       </xs:documentation>
                   2178:     </xs:annotation>
                   2179:     <xs:complexType mixed="true">
                   2180:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   2181:         <xs:element ref="responseparam"/>
                   2182:         <xs:element ref="hiddenline"/>
                   2183:         <xs:element ref="hintgroup"/>
                   2184:         <xs:element ref="reactionhint"/>
                   2185:         <xs:element ref="hintpart"/>
                   2186:         <xs:group ref="text-only"/>
                   2187:       </xs:choice>
                   2188:       <xs:attributeGroup ref="response-identification"/>
                   2189:       <xs:attribute name="answer" type="xs:string" use="required"/>
                   2190:       <xs:attribute name="initial" type="xs:string">
                   2191:         <xs:annotation>
                   2192:           <xs:documentation>
                   2193:             Initial Reaction
                   2194:           </xs:documentation>
                   2195:         </xs:annotation>
                   2196:       </xs:attribute>
                   2197:     </xs:complexType>
                   2198:   </xs:element>
                   2199:   
                   2200:   <xs:annotation>
                   2201:     <xs:documentation>
                   2202:       Custom response
                   2203:     </xs:documentation>
                   2204:   </xs:annotation>
                   2205:   <xs:element name="customresponse">
                   2206:     <xs:annotation>
                   2207:       <xs:documentation>
                   2208:         Query for text without any constraint (any character is allowed). A script analyzes the answer to grade it automatically.
                   2209:         The use of this response type is generally discouraged, since the responses will not be analyzable by the LON-CAPA statistics tools.
                   2210:       </xs:documentation>
                   2211:     </xs:annotation>
                   2212:     <xs:complexType mixed="true">
                   2213:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   2214:         <xs:element ref="responseparam"/>
                   2215:         <xs:element name="answer" type="customresponse--answer"/>
                   2216:         <xs:element ref="textfield"/>
                   2217:         <xs:element ref="hiddensubmission"/>
                   2218:         <xs:element ref="hiddenline"/>
                   2219:         <xs:element ref="hintgroup"/>
                   2220:         <xs:element ref="customhint"/>
                   2221:         <xs:element ref="hintpart"/>
                   2222:         <xs:group ref="text-only"/>
                   2223:       </xs:choice>
                   2224:       <xs:attributeGroup ref="response-identification"/>
                   2225:       <xs:attribute name="answerdisplay" type="xs:string">
                   2226:         <xs:annotation>
                   2227:           <xs:documentation>
                   2228:             String to display for answer
                   2229:           </xs:documentation>
                   2230:         </xs:annotation>
                   2231:       </xs:attribute>
                   2232:     </xs:complexType>
                   2233:   </xs:element>
                   2234:   <xs:complexType mixed="true" name="customresponse--answer">
                   2235:     <xs:annotation>
                   2236:       <xs:documentation>
                   2237:         Perl script evaluating the student answer.
                   2238:         
                   2239:         For a single textfield, the student’s answer will be in a variable $submission. If the Custom Response has multiple textfields, the answers will be in an array reference, and can be accessed as $$submission[0], $$submission[1], etc.
                   2240:         
                   2241:         The script must return a standard LON-CAPA response. The most common LON-CAPA responses are:
                   2242:         - EXACT ANS: return if solved exactly correctly
                   2243:         - APPROX ANS: return if solved approximately
                   2244:         - INCORRECT: return if not correct, uses up a try
                   2245:         - ASSIGNED SCORE: partial credit (also return the credit factor, e.g. return(ASSIGNED SCORE,0.3);)
                   2246:         - SIG FAIL, NO UNIT, EXTRA ANSWER, MISSING ANSWER, BAD FORMULA, WANTED NUMERIC, WRONG FORMAT: return if not correct for different reasons, does not use up a try
                   2247:       </xs:documentation>
                   2248:     </xs:annotation>
                   2249:     <xs:attribute name="type" type="xs:string"/>
                   2250:     <xs:attribute fixed="preserve" ref="xml:space"/>
                   2251:   </xs:complexType>
                   2252:   
                   2253:   <xs:annotation>
                   2254:     <xs:documentation>
                   2255:       External response
                   2256:     </xs:documentation>
                   2257:   </xs:annotation>
                   2258:   <xs:element name="externalresponse">
                   2259:     <xs:annotation>
                   2260:       <xs:documentation>
                   2261:         Query for a long text or a line, sent to an external program for grading.
                   2262:         
                   2263:         The form sent will consist of:
                   2264:         - LONCAPA student response full text of what the student entered in the entry field
                   2265:         - LONCAPA correct answer contents of the answer attribute
                   2266:         - LONCAPA language specified language encoding of the requesting resource
                   2267:         - all items in the form attribute if any of these clash with the above, the above values will overwite the value in the form attribute
                   2268:         
                   2269:         The response of the remote server needs to be in XML as follows:
                   2270:         - loncapagrade: takes no attributes, but must surround the response.
                   2271:         - awarddetail: required. The delimited text inside must be one of the detailed results that appears in the data storage documentation. CVS:loncapa/doc/homework/datastorage, look for resource.partid.responseid.awarddetail.
                   2272:         - message: optional message to have shown to the student.
                   2273:       </xs:documentation>
                   2274:     </xs:annotation>
                   2275:     <xs:complexType mixed="true">
                   2276:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   2277:         <xs:element ref="textfield"/>
                   2278:         <xs:element ref="hiddensubmission"/>
                   2279:         <xs:element ref="hiddenline"/>
                   2280:         <xs:element ref="hintgroup"/>
                   2281:         <xs:group ref="text-only"/>
                   2282:       </xs:choice>
                   2283:       <xs:attributeGroup ref="response-identification"/>
                   2284:       <xs:attribute name="url" type="xs:anyURI">
                   2285:         <xs:annotation>
                   2286:           <xs:documentation>
                   2287:             url to submit the answer form to. It does not need to be a LON-CAPA machine.
                   2288:           </xs:documentation>
                   2289:         </xs:annotation>
                   2290:       </xs:attribute>
                   2291:       <xs:attribute name="answer" type="xs:string">
                   2292:         <xs:annotation>
                   2293:           <xs:documentation>
                   2294:             data to post in the form element LONCAPA_correct_answer to the remote site.
                   2295:           </xs:documentation>
                   2296:         </xs:annotation>
                   2297:       </xs:attribute>
                   2298:       <xs:attribute name="form" type="xs:string">
                   2299:         <xs:annotation>
                   2300:           <xs:documentation>
                   2301:             hash variable name that will be submitted to the remote site as a HTTP form.
                   2302:           </xs:documentation>
                   2303:         </xs:annotation>
                   2304:       </xs:attribute>
                   2305:       <xs:attribute name="answerdisplay" type="xs:string"/>
                   2306:     </xs:complexType>
                   2307:   </xs:element>
                   2308:   
                   2309:   <xs:annotation>
                   2310:     <xs:documentation>
                   2311:       Data response
                   2312:     </xs:documentation>
                   2313:   </xs:annotation>
                   2314:   <xs:element name="dataresponse">
                   2315:     <xs:annotation>
                   2316:       <xs:documentation>
                   2317:         Query for text or numbers.
1.5       damieng  2318:         Advanced type of response that implements a simple data storage and needs an input element, such as textline, to work correctly.
1.1       damieng  2319:       </xs:documentation>
                   2320:     </xs:annotation>
                   2321:     <xs:complexType mixed="true">
                   2322:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   2323:         <xs:element ref="textfield"/>
                   2324:         <xs:element ref="hiddensubmission"/>
                   2325:         <xs:element ref="hiddenline"/>
                   2326:         <xs:group ref="text-only"/>
                   2327:       </xs:choice>
                   2328:       <xs:attributeGroup ref="response-identification"/>
                   2329:       <xs:attribute name="type" type="xs:string">
                   2330:         <xs:annotation>
                   2331:           <xs:documentation>
                   2332:             type of data stored in this response field. It should be one of the types supported by parameter.html
                   2333:           </xs:documentation>
                   2334:         </xs:annotation>
                   2335:       </xs:attribute>
                   2336:       <xs:attribute name="display" type="xs:string">
                   2337:         <xs:annotation>
                   2338:           <xs:documentation>
                   2339:             string that will be used to describe the field when interfacing with humans.
                   2340:           </xs:documentation>
                   2341:         </xs:annotation>
                   2342:       </xs:attribute>
                   2343:     </xs:complexType>
                   2344:   </xs:element>
                   2345:   
                   2346:   <xs:annotation>
                   2347:     <xs:documentation>
                   2348:       Shared response elements
                   2349:     </xs:documentation>
                   2350:   </xs:annotation>
                   2351:   <xs:element name="responseparam">
                   2352:     <xs:annotation>
                   2353:       <xs:documentation>
                   2354:         Parameters for a response
                   2355:         
                   2356:         Defines an externally adjustable parameter for the question, which the question can then use to allow other users to customize the problem for their courses without changing the source code of the problem.
                   2357:       </xs:documentation>
                   2358:     </xs:annotation>
                   2359:     <xs:complexType>
                   2360:       <xs:attribute name="name" type="xs:string"/>
                   2361:       <xs:attribute name="type" type="xs:string" use="required"/>
                   2362:       <xs:attribute name="default" type="xs:string">
                   2363:         <xs:annotation>
                   2364:           <xs:documentation>
                   2365:             default value
                   2366:           </xs:documentation>
                   2367:         </xs:annotation>
                   2368:       </xs:attribute>
                   2369:       <xs:attribute name="description" type="xs:string"/>
                   2370:     </xs:complexType>
                   2371:   </xs:element>
                   2372:   <xs:element name="textfield">
                   2373:     <xs:annotation>
                   2374:       <xs:documentation>
                   2375:         Large Text Entry Area, contains the text that appears by default
                   2376:         
                   2377:         Creates a large text input box. If data appears between the start and end tags, the data will appear in the textfield if the student has not yet made a submission.
                   2378:         Additionally, it takes two attributes: rows and cols, which control the height and width of the text area respectively.
                   2379:       </xs:documentation>
                   2380:     </xs:annotation>
                   2381:     <xs:complexType mixed="true">
                   2382:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   2383:         <xs:element ref="tex"/>
                   2384:         <xs:element ref="web"/>
                   2385:       </xs:choice>
                   2386:       <xs:attribute default="10" name="rows" type="int-or-perl"/>
                   2387:       <xs:attribute default="80" name="cols" type="int-or-perl">
                   2388:         <xs:annotation>
                   2389:           <xs:documentation>
                   2390:             Columns
                   2391:           </xs:documentation>
                   2392:         </xs:annotation>
                   2393:       </xs:attribute>
                   2394:       <xs:attribute name="addchars" type="xs:string">
                   2395:         <xs:annotation>
                   2396:           <xs:documentation>
                   2397:             Click-On Texts (comma sep)
                   2398:           </xs:documentation>
                   2399:         </xs:annotation>
                   2400:       </xs:attribute>
                   2401:       <xs:attribute name="spellcheck">
                   2402:         <xs:annotation>
                   2403:           <xs:documentation>
                   2404:             Spellcheck for
                   2405:           </xs:documentation>
                   2406:         </xs:annotation>
                   2407:         <xs:simpleType>
                   2408:           <xs:union memberTypes="perl">
                   2409:             <xs:simpleType>
                   2410:               <xs:restriction base="xs:string">
                   2411:                 <xs:enumeration value="none"/>
                   2412:                 <xs:enumeration value="en"/>
                   2413:                 <xs:enumeration value="de"/>
                   2414:                 <xs:enumeration value="he"/>
                   2415:                 <xs:enumeration value="es"/>
                   2416:                 <xs:enumeration value="fr"/>
                   2417:                 <xs:enumeration value="pt"/>
                   2418:                 <xs:enumeration value="tr"/>
                   2419:               </xs:restriction>
                   2420:             </xs:simpleType>
                   2421:           </xs:union>
                   2422:         </xs:simpleType>
                   2423:       </xs:attribute>
                   2424:     </xs:complexType>
                   2425:   </xs:element>
                   2426:   <xs:element name="textline">
                   2427:     <xs:annotation>
                   2428:       <xs:documentation>
                   2429:         Single Line Text Entry Area. Displays a field to enter text for a response.
                   2430:         Should only be used inside stringresponse, numericalresponse, formularesponse, mathresponse, organicresponse, reactionresponse and customresponse.
                   2431:       </xs:documentation>
                   2432:     </xs:annotation>
                   2433:     <xs:complexType>
                   2434:       <xs:attribute default="20" name="size" type="int-or-perl">
                   2435:         <xs:annotation>
                   2436:           <xs:documentation>
                   2437:             controls the width of the textline
                   2438:           </xs:documentation>
                   2439:         </xs:annotation>
                   2440:       </xs:attribute>
                   2441:       <xs:attribute name="addchars" type="xs:string">
                   2442:         <xs:annotation>
                   2443:           <xs:documentation>
                   2444:             Comma-separated list of characters or words that can be inserted with a click.
                   2445:           </xs:documentation>
                   2446:         </xs:annotation>
                   2447:       </xs:attribute>
                   2448:       <xs:attribute default="no" name="readonly" type="yesno-or-perl"/>
                   2449:       <xs:attribute name="spellcheck">
                   2450:         <xs:simpleType>
                   2451:           <xs:union memberTypes="perl">
                   2452:             <xs:simpleType>
                   2453:               <xs:restriction base="xs:string">
                   2454:                 <xs:enumeration value="none"/>
                   2455:                 <xs:enumeration value="en"/>
                   2456:                 <xs:enumeration value="de"/>
                   2457:                 <xs:enumeration value="he"/>
                   2458:                 <xs:enumeration value="es"/>
                   2459:                 <xs:enumeration value="fr"/>
                   2460:                 <xs:enumeration value="pt"/>
                   2461:                 <xs:enumeration value="tr"/>
                   2462:               </xs:restriction>
                   2463:             </xs:simpleType>
                   2464:           </xs:union>
                   2465:         </xs:simpleType>
                   2466:       </xs:attribute>
                   2467:     </xs:complexType>
                   2468:   </xs:element>
                   2469:   <xs:element name="hiddensubmission">
                   2470:     <xs:annotation>
                   2471:       <xs:documentation>
                   2472:         This creates a hidden form field with the given value.
                   2473:       </xs:documentation>
                   2474:     </xs:annotation>
                   2475:     <xs:complexType>
                   2476:       <xs:attribute name="value" type="xs:string"/>
                   2477:     </xs:complexType>
                   2478:   </xs:element>
                   2479:   <xs:element name="hiddenline">
                   2480:     <xs:annotation>
                   2481:       <xs:documentation>
                   2482:         This creates a hidden form field with the old response value.
                   2483:       </xs:documentation>
                   2484:     </xs:annotation>
                   2485:     <xs:complexType>
                   2486:     </xs:complexType>
                   2487:   </xs:element>
                   2488:   
                   2489:   <xs:annotation>
                   2490:     <xs:documentation>
                   2491:       Hints
                   2492:     </xs:documentation>
                   2493:   </xs:annotation>
                   2494:   <xs:element name="hintgroup">
                   2495:     <xs:annotation>
                   2496:       <xs:documentation>
                   2497:         The first part of the hint is the condition, which includes a specification of the foil(s) and foil answer(s) required to trigger the hint. The answers specified in the hint condition are compared with the user's submission, and if the condition is met, the hint action included in the conditional hint block will be executed (for example this could be the display of a block of text). You can set multiple hint conditions for a particular problem. Hint conditions are identified by a name. The corresponding hint action includes this hint condition name in the "on" parameter. When a hint condition evaluates to true, the corresponding hint action is triggered. Besides providing hint actions within &lt;hintpart on="NAME"&gt; &lt;/hintpart&gt; tags for each named (NAME) hint condition, a hint can be designated for display if none of the conditional hints evaluate to true. The default hint is not displayed if the conditions were met for any of the conditional hints. The default hint action is included between &lt;hintpart on="default"&gt; &lt;/hintpart&gt; tags.
                   2498:       </xs:documentation>
                   2499:     </xs:annotation>
                   2500:     <xs:complexType mixed="true">
                   2501:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   2502:         <xs:group ref="text-only"/>
                   2503:         <xs:element ref="hintpart"/>
                   2504:         <xs:element ref="stringhint"/>
                   2505:         <xs:element ref="radiobuttonhint"/>
                   2506:         <xs:element ref="optionhint"/>
                   2507:         <xs:element ref="numericalhint"/>
                   2508:         <xs:element ref="formulahint"/>
                   2509:         <xs:element ref="mathhint"/>
                   2510:         <xs:element ref="organichint"/>
                   2511:         <xs:element ref="reactionhint"/>
                   2512:         <xs:element ref="customhint"/>
                   2513:       </xs:choice>
                   2514:       <xs:attribute default="no" name="showoncorrect" type="yesno-or-perl">
                   2515:         <xs:annotation>
                   2516:           <xs:documentation>
                   2517:             Show hint even if problem Correct
                   2518:           </xs:documentation>
                   2519:         </xs:annotation>
                   2520:       </xs:attribute>
                   2521:     </xs:complexType>
                   2522:   </xs:element>
                   2523:   <xs:element name="hintpart">
                   2524:     <xs:annotation>
                   2525:       <xs:documentation>
                   2526:         Conditional Hint
                   2527:         
1.5       damieng  2528:         When a hint element named the same as the on attribute evaluates to be correct, the hintpart will show.
1.1       damieng  2529:         If no other hintpart is to show then all hintparts with an on value set to “default” will show.
                   2530:       </xs:documentation>
                   2531:     </xs:annotation>
                   2532:     <xs:complexType mixed="true">
                   2533:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   2534:         <xs:group ref="text-only"/>
                   2535:         <xs:element ref="parserlib"/>
                   2536:         <xs:element ref="scriptlib"/>
                   2537:       </xs:choice>
                   2538:       <xs:attribute name="on" type="xs:string" use="required"/>
                   2539:     </xs:complexType>
                   2540:   </xs:element>
                   2541:   <xs:element name="stringhint">
                   2542:     <xs:annotation>
                   2543:       <xs:documentation>
                   2544:         String Hint Condition
                   2545:       </xs:documentation>
                   2546:     </xs:annotation>
                   2547:     <xs:complexType>
                   2548:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   2549:         <xs:element ref="responseparam"/>
                   2550:       </xs:choice>
                   2551:       <xs:attribute name="id" type="xs:string"/>
                   2552:       <xs:attribute name="name" type="xs:string" use="required">
                   2553:         <xs:annotation>
                   2554:           <xs:documentation>
                   2555:             Name of the hint condition.
                   2556:             Should be set to the value of which hintpart will be shown.
                   2557:           </xs:documentation>
                   2558:         </xs:annotation>
                   2559:       </xs:attribute>
                   2560:       <xs:attribute name="answer" type="xs:string" use="required">
                   2561:         <xs:annotation>
                   2562:           <xs:documentation>
                   2563:             Text string.
                   2564:             Should be set to the value of which hintpart will be shown.
                   2565:           </xs:documentation>
                   2566:         </xs:annotation>
                   2567:       </xs:attribute>
                   2568:       <xs:attribute default="cs" name="type">
                   2569:         <xs:simpleType>
                   2570:           <xs:union memberTypes="perl">
                   2571:             <xs:simpleType>
                   2572:               <xs:restriction base="xs:string">
                   2573:                 <xs:enumeration value="cs"/>
                   2574:                 <xs:enumeration value="ci"/>
                   2575:                 <xs:enumeration value="mc"/>
                   2576:                 <xs:enumeration value="re"/>
                   2577:               </xs:restriction>
                   2578:             </xs:simpleType>
                   2579:           </xs:union>
                   2580:         </xs:simpleType>
                   2581:       </xs:attribute>
                   2582:       <xs:attribute name="preprocess" type="xs:string">
                   2583:         <xs:annotation>
                   2584:           <xs:documentation>
                   2585:             Pre-Processor Subroutine
                   2586:           </xs:documentation>
                   2587:         </xs:annotation>
                   2588:       </xs:attribute>
                   2589:     </xs:complexType>
                   2590:   </xs:element>
                   2591:   <xs:element name="radiobuttonhint">
                   2592:     <xs:annotation>
                   2593:       <xs:documentation>
                   2594:         Radiobutton Hint Condition
                   2595:         
1.5       damieng  2596:         The radiobutton hint element takes two parameters: answer and name. The name is the name of the hint condition, and the answer is an array. The first element of the array will be 'foil'; the remaining elements are the names of the foils that you require to have been checked by the student for the hint to be displayed. For example, if you create a radiobutton response problem with six foils named: granite, gabbro, gneiss, shale, sandstone and schist, and you want your hint named: igneous to be displayed when either granite or basalt had been checked your radiobutton hint would be as follows:
1.1       damieng  2597:         
                   2598:         &lt;radiobuttonhint answer="('foil','granite','gabbro')" name="igneous"&gt;&lt;/radiobuttonhint&gt;
                   2599:         
                   2600:         In order to trigger display of this hint you also need to create a &lt;hintpart&gt; &lt;/hintpart&gt; block that will include a textblock that contains the text of the actual hint.
                   2601:       </xs:documentation>
                   2602:     </xs:annotation>
                   2603:     <xs:complexType>
                   2604:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   2605:         <xs:element ref="responseparam"/>
                   2606:       </xs:choice>
                   2607:       <xs:attribute name="id" type="xs:string"/>
                   2608:       <xs:attribute name="name" type="xs:string" use="required">
                   2609:         <xs:annotation>
                   2610:           <xs:documentation>
                   2611:             should be set to the value of which hintpart will be shown
                   2612:           </xs:documentation>
                   2613:         </xs:annotation>
                   2614:       </xs:attribute>
                   2615:       <xs:attribute name="answer" type="xs:string">
                   2616:         <xs:annotation>
                   2617:           <xs:documentation>
                   2618:             should be at least a two element list: first the type (foil or concept) and then either the foil name(s) or the concept string(s), e.g., “(’foil’,’greaterthan’,’equal’)” if the condition should be triggered by the foils named “greaterthan” or “equal”
                   2619:           </xs:documentation>
                   2620:         </xs:annotation>
                   2621:       </xs:attribute>
                   2622:     </xs:complexType>
                   2623:   </xs:element>
                   2624:   <xs:element name="optionhint">
                   2625:     <xs:annotation>
                   2626:       <xs:documentation>
                   2627:         Option Response Hint Condition
                   2628:         
1.5       damieng  2629:         There are two types of option response hint conditions: one for standalone foils and one for concept groups. In both cases the option hint element includes two parameters: answer and name for standalone foils, and concept and name for foils grouped together in a concept group. For the answer parameter, the names and submitted values for each of the foils that are being included in the hint condition are provided in a hash, i.e., in the format: ('Foil1'= &gt; 'True','Foil2'= &gt; 'False'). In the case of a conditional hint for a concept group, the format of the concept parameter is also a hash that links the name of each concept group included in the hint condition to either 'correct' or 'incorrect' - e.g., &lt; optionhint concept="('buoyancy'= &gt; 'correct','density'= &gt; 'correct')" name="fluids" / &gt; If 'correct' is specified for a named concept then when the conditional hint is evaluated answers for each of the foils selected by a student must be correct for the hint action to be triggered. If anything other than 'correct' is provided in the concept hash in the optionhint element then then students answers will be compared with the set answers for the foils in the concept group and as long as at least one answer is incorrect (i.e., the concept group was not correctly answered) then the corresponding hint action will be triggered. 
1.1       damieng  2630:       </xs:documentation>
                   2631:     </xs:annotation>
                   2632:     <xs:complexType>
                   2633:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   2634:         <xs:element ref="responseparam"/>
                   2635:       </xs:choice>
                   2636:       <xs:attribute name="id" type="xs:string"/>
                   2637:       <xs:attribute name="name" type="xs:string" use="required">
                   2638:         <xs:annotation>
                   2639:           <xs:documentation>
                   2640:             should be set to the value of which hintpart will be shown
                   2641:           </xs:documentation>
                   2642:         </xs:annotation>
                   2643:       </xs:attribute>
                   2644:       <xs:attribute name="answer" type="xs:string"/>
                   2645:       <xs:attribute name="concept" type="xs:string"/>
                   2646:     </xs:complexType>
                   2647:   </xs:element>
                   2648:   <xs:element name="numericalhint">
                   2649:     <xs:annotation>
                   2650:       <xs:documentation>
                   2651:         Numerical Hint Condition
                   2652:       </xs:documentation>
                   2653:     </xs:annotation>
                   2654:     <xs:complexType>
                   2655:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   2656:         <xs:element ref="responseparam"/>
                   2657:       </xs:choice>
                   2658:       <xs:attribute name="id" type="xs:string"/>
                   2659:       <xs:attribute name="name" type="xs:string" use="required">
                   2660:         <xs:annotation>
                   2661:           <xs:documentation>
                   2662:             Unique name given to the hint condition.
                   2663:             Should be set to the value of which hintpart will be shown.
                   2664:           </xs:documentation>
                   2665:         </xs:annotation>
                   2666:       </xs:attribute>
                   2667:       <xs:attribute name="answer" type="xs:string">
                   2668:         <xs:annotation>
                   2669:           <xs:documentation>
                   2670:             Numerical answer for which the conditional is provided.
                   2671:             Student submission of that answer in combination with the "unit" attribute in the hint condition will trigger the hint action specified in the &lt;hintpart&gt; element.
                   2672:           </xs:documentation>
                   2673:         </xs:annotation>
                   2674:       </xs:attribute>
                   2675:       <xs:attribute name="unit" type="xs:string"/>
                   2676:       <xs:attribute name="format" type="xs:string"/>
                   2677:       <xs:attribute name="preprocess" type="xs:string">
                   2678:         <xs:annotation>
                   2679:           <xs:documentation>
                   2680:             Pre-Processor Subroutine
                   2681:           </xs:documentation>
                   2682:         </xs:annotation>
                   2683:       </xs:attribute>
                   2684:     </xs:complexType>
                   2685:   </xs:element>
                   2686:   <xs:element name="formulahint">
                   2687:     <xs:annotation>
                   2688:       <xs:documentation>
                   2689:         Formula Hint Condition
                   2690:         
                   2691:         The formula submitted by the student is evaluated at the sample points for the hint and the calculated values are compared with the corresponding values determined by evaluating the "hint" answer at the same sampling points. A close correspondence between the two sets of values will trigger the hint action specified in the &lt;hintpart&gt; element.
                   2692:       </xs:documentation>
                   2693:     </xs:annotation>
                   2694:     <xs:complexType>
                   2695:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   2696:         <xs:element ref="responseparam"/>
                   2697:       </xs:choice>
                   2698:       <xs:attribute name="id" type="xs:string"/>
                   2699:       <xs:attribute name="name" type="xs:string" use="required">
                   2700:         <xs:annotation>
                   2701:           <xs:documentation>
                   2702:             Unique name given to the hint condition.
                   2703:             Should be set to the value of which hintpart will be shown.
                   2704:           </xs:documentation>
                   2705:         </xs:annotation>
                   2706:       </xs:attribute>
                   2707:       <xs:attribute name="answer" type="xs:string">
                   2708:         <xs:annotation>
                   2709:           <xs:documentation>
                   2710:             Formula answer for which the conditional is provided.
                   2711:           </xs:documentation>
                   2712:         </xs:annotation>
                   2713:       </xs:attribute>
                   2714:       <xs:attribute name="samples" type="xs:string">
                   2715:         <xs:annotation>
                   2716:           <xs:documentation>
                   2717:             Sample points (or range of points) over which sampling of the student’s submitted answer and the formula included in the formula hint answer parameter are to be compared. The syntax is the same as used to specify sampling points in the samples
                   2718:             parameter of the formula reponse element itself.
                   2719:           </xs:documentation>
                   2720:         </xs:annotation>
                   2721:       </xs:attribute>
                   2722:       <xs:attribute name="preprocess" type="xs:string">
                   2723:         <xs:annotation>
                   2724:           <xs:documentation>
                   2725:             Pre-Processor Subroutine
                   2726:           </xs:documentation>
                   2727:         </xs:annotation>
                   2728:       </xs:attribute>
                   2729:     </xs:complexType>
                   2730:   </xs:element>
                   2731:   <xs:element name="mathhint">
                   2732:     <xs:annotation>
                   2733:       <xs:documentation>Math Hint Condition</xs:documentation>
                   2734:     </xs:annotation>
                   2735:     <xs:complexType>
                   2736:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   2737:         <xs:element ref="responseparam"/>
                   2738:         <xs:element name="answer" type="mathhint--answer"/>
                   2739:       </xs:choice>
                   2740:       <xs:attribute name="id" type="xs:string"/>
                   2741:       <xs:attribute name="name" type="xs:string"/>
                   2742:       <xs:attribute default="maxima" name="cas">
                   2743:         <xs:annotation>
                   2744:           <xs:documentation>
                   2745:             Algebra System
                   2746:           </xs:documentation>
                   2747:         </xs:annotation>
                   2748:         <xs:simpleType>
                   2749:           <xs:union memberTypes="perl">
                   2750:             <xs:simpleType>
                   2751:               <xs:restriction base="xs:string">
                   2752:                 <xs:enumeration value="maxima"/>
                   2753:                 <xs:enumeration value="R"/>
                   2754:               </xs:restriction>
                   2755:             </xs:simpleType>
                   2756:           </xs:union>
                   2757:         </xs:simpleType>
                   2758:       </xs:attribute>
                   2759:       <xs:attribute name="args" type="xs:string">
                   2760:         <xs:annotation>
                   2761:           <xs:documentation>
                   2762:             Argument Array
                   2763:           </xs:documentation>
                   2764:         </xs:annotation>
                   2765:       </xs:attribute>
                   2766:     </xs:complexType>
                   2767:   </xs:element>
                   2768:   <xs:element name="organichint">
                   2769:     <xs:annotation>
                   2770:       <xs:documentation>Organic Hint Condition</xs:documentation>
                   2771:     </xs:annotation>
                   2772:     <xs:complexType>
                   2773:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   2774:         <xs:element ref="responseparam"/>
                   2775:       </xs:choice>
                   2776:       <xs:attribute name="id" type="xs:string"/>
                   2777:       <xs:attribute name="name" type="xs:string"/>
                   2778:       <xs:attribute name="answer" type="xs:string"/>
                   2779:     </xs:complexType>
                   2780:   </xs:element>
                   2781:   <xs:element name="reactionhint">
                   2782:     <xs:annotation>
                   2783:       <xs:documentation>Reaction Hint Condition</xs:documentation>
                   2784:     </xs:annotation>
                   2785:     <xs:complexType>
                   2786:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   2787:         <xs:element ref="responseparam"/>
                   2788:       </xs:choice>
                   2789:       <xs:attribute name="id" type="xs:string"/>
                   2790:       <xs:attribute name="name" type="xs:string"/>
                   2791:       <xs:attribute name="answer" type="xs:string"/>
                   2792:     </xs:complexType>
                   2793:   </xs:element>
                   2794:   <xs:element name="customhint">
                   2795:     <xs:annotation>
                   2796:       <xs:documentation>
                   2797:         Custom Hint Condition
                   2798:         
                   2799:         Define the hint condition within an answer block inside of the customhint block. The condition is defined like how an answer is defined in customresponse where you need to return EXACT ANS to indicate when customhint criteria are met.
                   2800:       </xs:documentation>
                   2801:     </xs:annotation>
                   2802:     <xs:complexType>
                   2803:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   2804:         <xs:element ref="responseparam"/>
                   2805:         <xs:element name="answer" type="customhint--answer"/>
                   2806:       </xs:choice>
                   2807:       <xs:attribute name="id" type="xs:string"/>
                   2808:       <xs:attribute name="name" type="xs:string" use="required">
                   2809:         <xs:annotation>
                   2810:           <xs:documentation>
                   2811:             should be set to the value of which hintpart will be shown
                   2812:           </xs:documentation>
                   2813:         </xs:annotation>
                   2814:       </xs:attribute>
                   2815:     </xs:complexType>
                   2816:   </xs:element>
                   2817:   <xs:complexType mixed="true" name="customhint--answer">
                   2818:     <xs:annotation>
                   2819:       <xs:documentation>Hint algorithm</xs:documentation>
                   2820:     </xs:annotation>
                   2821:     <xs:attribute name="type" type="xs:string"/>
                   2822:     <xs:attribute fixed="preserve" ref="xml:space"/>
                   2823:   </xs:complexType>
                   2824:   <xs:complexType mixed="true" name="mathhint--answer">
                   2825:     <xs:annotation>
                   2826:       <xs:documentation>Hint algorithm</xs:documentation>
                   2827:     </xs:annotation>
                   2828:     <xs:attribute name="type" type="xs:string"/>
                   2829:     <xs:attribute fixed="preserve" ref="xml:space"/>
                   2830:   </xs:complexType>
                   2831:   
                   2832:   <xs:annotation>
                   2833:     <xs:documentation>
                   2834:       Random label
                   2835:     </xs:documentation>
                   2836:   </xs:annotation>
                   2837:   <xs:element name="randomlabel">
                   2838:     <xs:annotation>
                   2839:       <xs:documentation>
                   2840:         Randomly labeled image
                   2841:         
                   2842:         This shows a specified image with images or text labels randomly assigned to a set of specific locations. Those locations may also have values assigned to them. A hash is generated that contains the mapping of labels to locations, labels to values, and locations to values.
                   2843:       </xs:documentation>
                   2844:     </xs:annotation>
                   2845:     <xs:complexType>
                   2846:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   2847:         <xs:element name="labelgroup" type="randomlabel--labelgroup">
                   2848:           <xs:annotation>
                   2849:             <xs:documentation>
                   2850:               One is required, but multiple are allowed. This declares a group of locations and labels associated with them.
                   2851:             </xs:documentation>
                   2852:           </xs:annotation>
                   2853:         </xs:element>
                   2854:         <xs:element name="bgimg">
                   2855:           <xs:annotation>
                   2856:             <xs:documentation>
                   2857:               Element alternative to the bgimg attribute, which makes it possible to use a plot as a background image.
                   2858:             </xs:documentation>
                   2859:           </xs:annotation>
                   2860:           <xs:complexType mixed="true">
                   2861:             <xs:choice maxOccurs="unbounded" minOccurs="0">
                   2862:               <xs:element ref="gnuplot"/>
                   2863:             </xs:choice>
                   2864:           </xs:complexType>
                   2865:         </xs:element>
                   2866:       </xs:choice>
                   2867:       <xs:attribute name="bgimg" type="xs:anyURI">
                   2868:         <xs:annotation>
                   2869:           <xs:documentation>
                   2870:             Either a fully qualified URL for an external image or a LON-CAPA resource. It supports relative references (../images/apicture.gif). The image must either be a GIF or JPEG.
                   2871:           </xs:documentation>
                   2872:         </xs:annotation>
                   2873:       </xs:attribute>
                   2874:       <xs:attribute name="width" type="int-or-perl">
                   2875:         <xs:annotation>
                   2876:           <xs:documentation>
                   2877:             The width of the image in pixels.
                   2878:           </xs:documentation>
                   2879:         </xs:annotation>
                   2880:       </xs:attribute>
                   2881:       <xs:attribute name="height" type="int-or-perl">
                   2882:         <xs:annotation>
                   2883:           <xs:documentation>
                   2884:             The height of the image in pixels.
                   2885:           </xs:documentation>
                   2886:         </xs:annotation>
                   2887:       </xs:attribute>
                   2888:       <xs:attribute name="texwidth" type="decimal-or-perl">
                   2889:         <xs:annotation>
                   2890:           <xs:documentation>
                   2891:             The width of the image in millimeters.
                   2892:           </xs:documentation>
                   2893:         </xs:annotation>
                   2894:       </xs:attribute>
                   2895:     </xs:complexType>
                   2896:   </xs:element>
                   2897:   <xs:complexType name="randomlabel--labelgroup">
                   2898:     <xs:annotation>
                   2899:       <xs:documentation>Group of Labels</xs:documentation>
                   2900:     </xs:annotation>
                   2901:     <xs:choice maxOccurs="unbounded">
                   2902:       <xs:element name="label" type="randomlabel--label"/>
                   2903:       <xs:element name="location" type="randomlabel--location">
                   2904:         <xs:annotation>
                   2905:           <xs:documentation>
                   2906:             declares a location on the image that a label should appear at
                   2907:           </xs:documentation>
                   2908:         </xs:annotation>
                   2909:       </xs:element>
                   2910:     </xs:choice>
                   2911:     <xs:attribute name="name" type="xs:string">
                   2912:       <xs:annotation>
                   2913:         <xs:documentation>
                   2914:           This is the name of the group.
                   2915:         </xs:documentation>
                   2916:       </xs:annotation>
                   2917:     </xs:attribute>
                   2918:     <xs:attribute default="text" name="type">
                   2919:       <xs:annotation>
                   2920:         <xs:documentation>
                   2921:           the type of labels in this group
                   2922:         </xs:documentation>
                   2923:       </xs:annotation>
                   2924:       <xs:simpleType>
                   2925:         <xs:union memberTypes="perl">
                   2926:           <xs:simpleType>
                   2927:             <xs:restriction base="xs:string">
                   2928:               <xs:enumeration value="text"/>
                   2929:               <xs:enumeration value="image"/>
                   2930:             </xs:restriction>
                   2931:           </xs:simpleType>
                   2932:         </xs:union>
                   2933:       </xs:simpleType>
                   2934:     </xs:attribute>
                   2935:     <xs:attribute default="\normalsize" name="TeXsize">
                   2936:       <xs:annotation>
                   2937:         <xs:documentation>
                   2938:           TeX font size
                   2939:           Warning: as opposed to the TeXsize attribute in &lt;h1&gt;..&lt;h6&gt; &lt;font&gt; and &lt;basefont&gt;, this one requires a \ at the beginning of the values.
                   2940:         </xs:documentation>
                   2941:       </xs:annotation>
                   2942:       <xs:simpleType>
                   2943:         <xs:union memberTypes="perl">
                   2944:           <xs:simpleType>
                   2945:             <xs:restriction base="xs:string">
                   2946:               <xs:enumeration value="\tiny"/>
                   2947:               <xs:enumeration value="\scriptsize"/>
                   2948:               <xs:enumeration value="\footnotesize"/>
                   2949:               <xs:enumeration value="\small"/>
                   2950:               <xs:enumeration value="\normalsize"/>
                   2951:               <xs:enumeration value="\large"/>
                   2952:               <xs:enumeration value="\Large"/>
                   2953:               <xs:enumeration value="\LARGE"/>
                   2954:               <xs:enumeration value="\huge"/>
                   2955:               <xs:enumeration value="\Huge"/>
                   2956:             </xs:restriction>
                   2957:           </xs:simpleType>
                   2958:         </xs:union>
                   2959:       </xs:simpleType>
                   2960:     </xs:attribute>
                   2961:   </xs:complexType>
                   2962:   <xs:complexType mixed="true" name="randomlabel--label">
                   2963:     <xs:annotation>
                   2964:       <xs:documentation>Label Text or Path to image</xs:documentation>
                   2965:     </xs:annotation>
                   2966:     <xs:choice maxOccurs="unbounded" minOccurs="0">
                   2967:       <xs:group ref="text-only"/>
                   2968:       <xs:element ref="preduedate"/>
                   2969:       <xs:element ref="postanswerdate"/>
                   2970:       <xs:element ref="parserlib"/>
                   2971:       <xs:element ref="scriptlib"/>
                   2972:     </xs:choice>
                   2973:     <xs:attribute name="description" type="xs:string"/>
                   2974:   </xs:complexType>
                   2975:   <xs:complexType name="randomlabel--location">
                   2976:     <xs:annotation>
                   2977:       <xs:documentation>Label Location</xs:documentation>
                   2978:     </xs:annotation>
                   2979:     <xs:attribute name="x" type="int-or-perl" use="required"/>
                   2980:     <xs:attribute name="y" type="int-or-perl" use="required"/>
                   2981:     <xs:attribute name="value" type="xs:string"/>
                   2982:   </xs:complexType>
                   2983:   
                   2984:   <xs:annotation>
                   2985:     <xs:documentation>
                   2986:       Gnuplot
                   2987:     </xs:documentation>
                   2988:   </xs:annotation>
                   2989:   <xs:element name="gnuplot">
                   2990:     <xs:annotation>
                   2991:       <xs:documentation>
1.5       damieng  2992:         The gnuplot LON-CAPA element allows an author to design a plot which will be created programatically at the time when it is requested for display by a student. This is intended for use in homework problems where a distinct plot should be rendered for each student. It can be used in conjunction with a script to generate curve data for random plots.
1.1       damieng  2993:       </xs:documentation>
                   2994:     </xs:annotation>
                   2995:     <xs:complexType>
                   2996:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   2997:         <xs:group ref="gnuplot-children"/>
                   2998:       </xs:choice>
                   2999:       <xs:attribute default="dynamically generated plot" name="alttag" type="xs:string">
                   3000:         <xs:annotation>
                   3001:           <xs:documentation>
                   3002:             Brief description of the plot.
1.5       damieng  3003:             This text is used as the alt value of the img element used to display the plot on a web page.
1.1       damieng  3004:           </xs:documentation>
                   3005:         </xs:annotation>
                   3006:       </xs:attribute>
                   3007:       <xs:attribute default="300" name="height" type="int-or-perl">
                   3008:         <xs:annotation>
                   3009:           <xs:documentation>
                   3010:             Height of image (pixels)
                   3011:           </xs:documentation>
                   3012:         </xs:annotation>
                   3013:       </xs:attribute>
                   3014:       <xs:attribute default="400" name="width" type="int-or-perl">
                   3015:         <xs:annotation>
                   3016:           <xs:documentation>
                   3017:             Width of image (pixels)
                   3018:           </xs:documentation>
                   3019:         </xs:annotation>
                   3020:       </xs:attribute>
                   3021:       <xs:attribute default="xffffff" name="bgcolor" type="color-or-perl">
                   3022:         <xs:annotation>
                   3023:           <xs:documentation>
                   3024:             Background color of image
                   3025:           </xs:documentation>
                   3026:         </xs:annotation>
                   3027:       </xs:attribute>
                   3028:       <xs:attribute default="x000000" name="fgcolor" type="color-or-perl">
                   3029:         <xs:annotation>
                   3030:           <xs:documentation>
                   3031:             Foreground color of image
                   3032:           </xs:documentation>
                   3033:         </xs:annotation>
                   3034:       </xs:attribute>
                   3035:       <xs:attribute default="off" name="transparent" type="onoff-or-perl">
                   3036:         <xs:annotation>
                   3037:           <xs:documentation>
                   3038:             Transparent image. If the image is transparent the background color will be ignored.
                   3039:           </xs:documentation>
                   3040:         </xs:annotation>
                   3041:       </xs:attribute>
                   3042:       <xs:attribute default="on" name="grid" type="onoff-or-perl">
                   3043:         <xs:annotation>
                   3044:           <xs:documentation>
                   3045:             Display grid
                   3046:           </xs:documentation>
                   3047:         </xs:annotation>
                   3048:       </xs:attribute>
                   3049:       <xs:attribute default="off" name="gridlayer" type="onoff-or-perl">
                   3050:         <xs:annotation>
                   3051:           <xs:documentation>
                   3052:             Display grid front layer over filled boxes or filled curves
                   3053:           </xs:documentation>
                   3054:         </xs:annotation>
                   3055:       </xs:attribute>
                   3056:       <xs:attribute default="noborder" name="box_border">
                   3057:         <xs:annotation>
                   3058:           <xs:documentation>
                   3059:             Draw border for boxes
                   3060:           </xs:documentation>
                   3061:         </xs:annotation>
                   3062:         <xs:simpleType>
                   3063:           <xs:union memberTypes="perl">
                   3064:             <xs:simpleType>
                   3065:               <xs:restriction base="xs:string">
                   3066:                 <xs:enumeration value="border"/>
                   3067:                 <xs:enumeration value="noborder"/>
                   3068:               </xs:restriction>
                   3069:             </xs:simpleType>
                   3070:           </xs:union>
                   3071:         </xs:simpleType>
                   3072:       </xs:attribute>
                   3073:       <xs:attribute default="on" name="border" type="onoff-or-perl">
                   3074:         <xs:annotation>
                   3075:           <xs:documentation>
                   3076:             Draw border around plot
                   3077:           </xs:documentation>
                   3078:         </xs:annotation>
                   3079:       </xs:attribute>
                   3080:       <xs:attribute default="9" name="font">
                   3081:         <xs:annotation>
                   3082:           <xs:documentation>
                   3083:             Font size to use in web output (in pts, or "small", "medium" or "large").
                   3084:           </xs:documentation>
                   3085:         </xs:annotation>
                   3086:         <xs:simpleType>
                   3087:           <xs:union memberTypes="perl">
                   3088:             <xs:simpleType>
                   3089:               <xs:restriction base="xs:int">
                   3090:                 <xs:minInclusive value="5"/>
                   3091:                 <xs:maxInclusive value="15"/>
                   3092:               </xs:restriction>
                   3093:             </xs:simpleType>
                   3094:             <xs:simpleType>
                   3095:               <xs:restriction base="xs:string">
                   3096:                 <xs:enumeration value="small"/>
                   3097:                 <xs:enumeration value="medium"/>
                   3098:                 <xs:enumeration value="large"/>
                   3099:               </xs:restriction>
                   3100:             </xs:simpleType>
                   3101:           </xs:union>
                   3102:         </xs:simpleType>
                   3103:       </xs:attribute>
                   3104:       <xs:attribute default="sans-serif" name="fontface">
                   3105:         <xs:annotation>
                   3106:           <xs:documentation>
                   3107:             Type of font to use
                   3108:           </xs:documentation>
                   3109:         </xs:annotation>
                   3110:         <xs:simpleType>
                   3111:           <xs:union memberTypes="perl">
                   3112:             <xs:simpleType>
                   3113:               <xs:restriction base="xs:string">
                   3114:                 <xs:enumeration value="sans-serif"/>
                   3115:                 <xs:enumeration value="serif"/>
                   3116:                 <xs:enumeration value="classic"/>
                   3117:               </xs:restriction>
                   3118:             </xs:simpleType>
                   3119:           </xs:union>
                   3120:         </xs:simpleType>
                   3121:       </xs:attribute>
                   3122:       <xs:attribute default="100" name="samples">
                   3123:         <xs:annotation>
                   3124:           <xs:documentation>
                   3125:             Number of samples for non-data plots.
                   3126:             If a function element is used to specify the curve, this indicates the number of sample points to use.
                   3127:           </xs:documentation>
                   3128:         </xs:annotation>
                   3129:         <xs:simpleType>
                   3130:           <xs:union memberTypes="perl">
                   3131:             <xs:simpleType>
                   3132:               <xs:restriction base="xs:int">
                   3133:                 <xs:minInclusive value="100"/>
                   3134:                 <xs:maxInclusive value="5000"/>
                   3135:               </xs:restriction>
                   3136:             </xs:simpleType>
                   3137:           </xs:union>
                   3138:         </xs:simpleType>
                   3139:       </xs:attribute>
                   3140:       <xs:attribute default="middle" name="align">
                   3141:         <xs:annotation>
                   3142:           <xs:documentation>
                   3143:             Alignment for image in HTML
                   3144:           </xs:documentation>
                   3145:         </xs:annotation>
                   3146:         <xs:simpleType>
                   3147:           <xs:union memberTypes="perl">
                   3148:             <xs:simpleType>
                   3149:               <xs:restriction base="xs:string">
                   3150:                 <xs:enumeration value="left"/>
                   3151:                 <xs:enumeration value="right"/>
                   3152:                 <xs:enumeration value="middle"/>
                   3153:                 <xs:enumeration value="center"/>
                   3154:               </xs:restriction>
                   3155:             </xs:simpleType>
                   3156:           </xs:union>
                   3157:         </xs:simpleType>
                   3158:       </xs:attribute>
                   3159:       <xs:attribute default="93" name="texwidth" type="int-or-perl">
                   3160:         <xs:annotation>
                   3161:           <xs:documentation>
                   3162:             Width of plot when printed (mm)
                   3163:           </xs:documentation>
                   3164:         </xs:annotation>
                   3165:       </xs:attribute>
                   3166:       <xs:attribute default="22" name="texfont">
                   3167:         <xs:annotation>
                   3168:           <xs:documentation>
                   3169:             Font size to use in TeX output (pts)
                   3170:           </xs:documentation>
                   3171:         </xs:annotation>
                   3172:         <xs:simpleType>
                   3173:           <xs:union memberTypes="perl">
                   3174:             <xs:simpleType>
                   3175:               <xs:restriction base="xs:int">
                   3176:                 <xs:minInclusive value="8"/>
                   3177:                 <xs:maxInclusive value="36"/>
                   3178:               </xs:restriction>
                   3179:             </xs:simpleType>
                   3180:           </xs:union>
                   3181:         </xs:simpleType>
                   3182:       </xs:attribute>
                   3183:       <xs:attribute default="monochrome" name="plotcolor">
                   3184:         <xs:annotation>
                   3185:           <xs:documentation>
                   3186:             Color setting for printing
                   3187:           </xs:documentation>
                   3188:         </xs:annotation>
                   3189:         <xs:simpleType>
                   3190:           <xs:union memberTypes="perl">
                   3191:             <xs:simpleType>
                   3192:               <xs:restriction base="xs:string">
                   3193:                 <xs:enumeration value="monochrome"/>
                   3194:                 <xs:enumeration value="color"/>
                   3195:                 <xs:enumeration value="colour"/>
                   3196:               </xs:restriction>
                   3197:             </xs:simpleType>
                   3198:           </xs:union>
                   3199:         </xs:simpleType>
                   3200:       </xs:attribute>
                   3201:       <xs:attribute name="pattern">
                   3202:         <xs:annotation>
                   3203:           <xs:documentation>
                   3204:             Pattern value for boxes
                   3205:           </xs:documentation>
                   3206:         </xs:annotation>
                   3207:         <xs:simpleType>
                   3208:           <xs:union memberTypes="perl">
                   3209:             <xs:simpleType>
                   3210:               <xs:restriction base="xs:int">
                   3211:                 <xs:minInclusive value="0"/>
                   3212:                 <xs:maxInclusive value="6"/>
                   3213:               </xs:restriction>
                   3214:             </xs:simpleType>
                   3215:           </xs:union>
                   3216:         </xs:simpleType>
                   3217:       </xs:attribute>
                   3218:       <xs:attribute default="0" name="solid" type="int-or-perl">
                   3219:         <xs:annotation>
                   3220:           <xs:documentation>
                   3221:             The density of fill style for boxes
                   3222:           </xs:documentation>
                   3223:         </xs:annotation>
                   3224:       </xs:attribute>
                   3225:       <xs:attribute default="empty" name="fillstyle">
                   3226:         <xs:annotation>
                   3227:           <xs:documentation>
                   3228:             Filled style for boxes
                   3229:           </xs:documentation>
                   3230:         </xs:annotation>
                   3231:         <xs:simpleType>
                   3232:           <xs:union memberTypes="perl">
                   3233:             <xs:simpleType>
                   3234:               <xs:restriction base="xs:string">
                   3235:                 <xs:enumeration value="empty"/>
                   3236:                 <xs:enumeration value="solid"/>
                   3237:                 <xs:enumeration value="pattern"/>
                   3238:               </xs:restriction>
                   3239:             </xs:simpleType>
                   3240:           </xs:union>
                   3241:         </xs:simpleType>
                   3242:       </xs:attribute>
                   3243:       <xs:attribute default="Cartesian" name="plottype">
                   3244:         <xs:annotation>
                   3245:           <xs:documentation>
                   3246:             Plot type
                   3247:           </xs:documentation>
                   3248:         </xs:annotation>
                   3249:         <xs:simpleType>
                   3250:           <xs:union memberTypes="perl">
                   3251:             <xs:simpleType>
                   3252:               <xs:restriction base="xs:string">
                   3253:                 <xs:enumeration value="Cartesian"/>
                   3254:                 <xs:enumeration value="Polar"/>
                   3255:               </xs:restriction>
                   3256:             </xs:simpleType>
                   3257:           </xs:union>
                   3258:         </xs:simpleType>
                   3259:       </xs:attribute>
                   3260:       <xs:attribute default="Cartesian" name="gridtype">
                   3261:         <xs:annotation>
                   3262:           <xs:documentation>
                   3263:             Grid type
                   3264:           </xs:documentation>
                   3265:         </xs:annotation>
                   3266:         <xs:simpleType>
                   3267:           <xs:union memberTypes="perl">
                   3268:             <xs:simpleType>
                   3269:               <xs:restriction base="xs:string">
                   3270:                 <xs:enumeration value="Cartesian"/>
                   3271:                 <xs:enumeration value="Polar"/>
                   3272:                 <xs:enumeration value="Linear-Log"/>
                   3273:                 <xs:enumeration value="Log-Linear"/>
                   3274:                 <xs:enumeration value="Log-Log"/>
                   3275:               </xs:restriction>
                   3276:             </xs:simpleType>
                   3277:           </xs:union>
                   3278:         </xs:simpleType>
                   3279:       </xs:attribute>
                   3280:       <xs:attribute default="default" name="lmargin">
                   3281:         <xs:annotation>
                   3282:           <xs:documentation>
                   3283:             Left margin width (pts)
                   3284:           </xs:documentation>
                   3285:         </xs:annotation>
                   3286:         <xs:simpleType>
                   3287:           <xs:union memberTypes="perl xs:int">
                   3288:             <xs:simpleType>
                   3289:               <xs:restriction base="xs:string">
                   3290:                 <xs:enumeration value="default"/>
                   3291:               </xs:restriction>
                   3292:             </xs:simpleType>
                   3293:           </xs:union>
                   3294:         </xs:simpleType>
                   3295:       </xs:attribute>
                   3296:       <xs:attribute default="default" name="rmargin">
                   3297:         <xs:annotation>
                   3298:           <xs:documentation>
                   3299:             Right margin width (pts)
                   3300:           </xs:documentation>
                   3301:         </xs:annotation>
                   3302:         <xs:simpleType>
                   3303:           <xs:union memberTypes="perl xs:int">
                   3304:             <xs:simpleType>
                   3305:               <xs:restriction base="xs:string">
                   3306:                 <xs:enumeration value="default"/>
                   3307:               </xs:restriction>
                   3308:             </xs:simpleType>
                   3309:           </xs:union>
                   3310:         </xs:simpleType>
                   3311:       </xs:attribute>
                   3312:       <xs:attribute default="default" name="tmargin">
                   3313:         <xs:annotation>
                   3314:           <xs:documentation>
                   3315:             Top margin width (pts)
                   3316:           </xs:documentation>
                   3317:         </xs:annotation>
                   3318:         <xs:simpleType>
                   3319:           <xs:union memberTypes="perl xs:int">
                   3320:             <xs:simpleType>
                   3321:               <xs:restriction base="xs:string">
                   3322:                 <xs:enumeration value="default"/>
                   3323:               </xs:restriction>
                   3324:             </xs:simpleType>
                   3325:           </xs:union>
                   3326:         </xs:simpleType>
                   3327:       </xs:attribute>
                   3328:       <xs:attribute default="default" name="bmargin">
                   3329:         <xs:annotation>
                   3330:           <xs:documentation>
                   3331:             Bottom margin width (pts)
                   3332:           </xs:documentation>
                   3333:         </xs:annotation>
                   3334:         <xs:simpleType>
                   3335:           <xs:union memberTypes="perl xs:int">
                   3336:             <xs:simpleType>
                   3337:               <xs:restriction base="xs:string">
                   3338:                 <xs:enumeration value="default"/>
                   3339:               </xs:restriction>
                   3340:             </xs:simpleType>
                   3341:           </xs:union>
                   3342:         </xs:simpleType>
                   3343:       </xs:attribute>
                   3344:       <xs:attribute name="boxwidth" type="xs:string">
                   3345:         <xs:annotation>
                   3346:           <xs:documentation>
                   3347:             Width of boxes, default is auto
                   3348:           </xs:documentation>
                   3349:         </xs:annotation>
                   3350:       </xs:attribute>
                   3351:       <xs:attribute default="1" name="major_ticscale" type="real-or-perl">
                   3352:         <xs:annotation>
                   3353:           <xs:documentation>
                   3354:             Size of major tic marks (plot coordinates)
                   3355:           </xs:documentation>
                   3356:         </xs:annotation>
                   3357:       </xs:attribute>
                   3358:       <xs:attribute default="0.5" name="minor_ticscale" type="real-or-perl">
                   3359:         <xs:annotation>
                   3360:           <xs:documentation>
                   3361:             Size of minor tic mark (plot coordinates)
                   3362:           </xs:documentation>
                   3363:         </xs:annotation>
                   3364:       </xs:attribute>
                   3365:     </xs:complexType>
                   3366:   </xs:element>
                   3367:   <xs:group name="gnuplot-children">
                   3368:     <xs:annotation>
                   3369:       <xs:documentation>
                   3370:         List of children, used in gnuplot and lonplot--block
                   3371:       </xs:documentation>
                   3372:     </xs:annotation>
                   3373:     <xs:choice>
                   3374:       <xs:element name="title" type="lonplot--title"/>
                   3375:       <xs:element name="axis" type="lonplot--axis">
                   3376:         <xs:annotation>
                   3377:           <xs:documentation>
1.5       damieng  3378:             The Plot Axes element allows you to specify the domain and range of the data to display. It is closely tied with the Plot Ticks elements, which specify where the gridlines are drawn on the plot.
1.1       damieng  3379:           </xs:documentation>
                   3380:         </xs:annotation>
                   3381:       </xs:element>
                   3382:       <xs:element name="curve" type="lonplot--curve">
                   3383:         <xs:annotation>
                   3384:           <xs:documentation>
1.5       damieng  3385:             The curve element is where you set the data to be plotted by gnuplot.
1.1       damieng  3386:           </xs:documentation>
                   3387:         </xs:annotation>
                   3388:       </xs:element>
                   3389:       <xs:element name="key" type="lonplot--key">
                   3390:         <xs:annotation>
                   3391:           <xs:documentation>
1.5       damieng  3392:             The key element causes a key to be drawn on the plot when it is generated. The key will contain an entry for each curve which has a name.
                   3393:             The key is the color of the foreground of the plot, specified in the gnuplot element.
1.1       damieng  3394:           </xs:documentation>
                   3395:         </xs:annotation>
                   3396:       </xs:element>
                   3397:       <xs:element name="label" type="lonplot--label">
                   3398:         <xs:annotation>
                   3399:           <xs:documentation>
1.5       damieng  3400:             The label element allows the author to place text at any position on the plot. There may be many label elements on one plot and all the labels which fall within the plot will show. The color used will be to foreground color of the plot and the font will be the size specified for the plot, both of which are set in the gnuplot element.
1.1       damieng  3401:           </xs:documentation>
                   3402:         </xs:annotation>
                   3403:       </xs:element>
                   3404:       <xs:element name="xtics" type="lonplot--xtics"/>
                   3405:       <xs:element name="ytics" type="lonplot--ytics"/>
                   3406:       <xs:element name="xlabel" type="lonplot--xlabel"/>
                   3407:       <xs:element name="ylabel" type="lonplot--ylabel"/>
                   3408:       <xs:element name="block" type="lonplot--block"/>
                   3409:     </xs:choice>
                   3410:   </xs:group>
                   3411:   <xs:simpleType name="lonplot--title">
                   3412:     <xs:annotation>
                   3413:       <xs:documentation>Plot Title</xs:documentation>
                   3414:     </xs:annotation>
                   3415:     <xs:restriction base="xs:string"/>
                   3416:   </xs:simpleType>
                   3417:   <xs:complexType name="lonplot--axis">
                   3418:     <xs:annotation>
                   3419:       <xs:documentation>Plot axes</xs:documentation>
                   3420:     </xs:annotation>
                   3421:     <xs:attribute default="x000000" name="color" type="color-or-perl">
                   3422:       <xs:annotation>
                   3423:         <xs:documentation>
                   3424:           Color of grid lines
                   3425:         </xs:documentation>
                   3426:       </xs:annotation>
                   3427:     </xs:attribute>
                   3428:     <xs:attribute default="-10.0" name="xmin" type="real-or-perl">
                   3429:       <xs:annotation>
                   3430:         <xs:documentation>
                   3431:           Minimum x-value shown in plot
                   3432:         </xs:documentation>
                   3433:       </xs:annotation>
                   3434:     </xs:attribute>
                   3435:     <xs:attribute default="10.0" name="xmax" type="real-or-perl">
                   3436:       <xs:annotation>
                   3437:         <xs:documentation>
                   3438:           Maximum x-value shown in plot
                   3439:         </xs:documentation>
                   3440:       </xs:annotation>
                   3441:     </xs:attribute>
                   3442:     <xs:attribute default="-10.0" name="ymin" type="real-or-perl">
                   3443:       <xs:annotation>
                   3444:         <xs:documentation>
                   3445:           Minimum y-value shown in plot
                   3446:         </xs:documentation>
                   3447:       </xs:annotation>
                   3448:     </xs:attribute>
                   3449:     <xs:attribute default="10.0" name="ymax" type="real-or-perl">
                   3450:       <xs:annotation>
                   3451:         <xs:documentation>
                   3452:           Maximum y-value shown in plot
                   3453:         </xs:documentation>
                   3454:       </xs:annotation>
                   3455:     </xs:attribute>
                   3456:     <xs:attribute default="on" name="xformat">
                   3457:       <xs:annotation>
                   3458:         <xs:documentation>
                   3459:           X-axis number formatting
                   3460:         </xs:documentation>
                   3461:       </xs:annotation>
                   3462:       <xs:simpleType>
                   3463:         <xs:union memberTypes="perl">
                   3464:           <xs:simpleType>
                   3465:             <xs:restriction base="xs:string">
                   3466:               <xs:enumeration value="on"/>
                   3467:               <xs:enumeration value="off"/>
                   3468:               <xs:enumeration value="2e"/>
                   3469:               <xs:enumeration value="2f"/>
                   3470:             </xs:restriction>
                   3471:           </xs:simpleType>
                   3472:         </xs:union>
                   3473:       </xs:simpleType>
                   3474:     </xs:attribute>
                   3475:     <xs:attribute default="on" name="yformat">
                   3476:       <xs:annotation>
                   3477:         <xs:documentation>
                   3478:           Y-axis number formatting
                   3479:         </xs:documentation>
                   3480:       </xs:annotation>
                   3481:       <xs:simpleType>
                   3482:         <xs:union memberTypes="perl">
                   3483:           <xs:simpleType>
                   3484:             <xs:restriction base="xs:string">
                   3485:               <xs:enumeration value="on"/>
                   3486:               <xs:enumeration value="off"/>
                   3487:               <xs:enumeration value="2e"/>
                   3488:               <xs:enumeration value="2f"/>
                   3489:             </xs:restriction>
                   3490:           </xs:simpleType>
                   3491:         </xs:union>
                   3492:       </xs:simpleType>
                   3493:     </xs:attribute>
                   3494:     <xs:attribute default="off" name="xzero">
                   3495:       <xs:annotation>
                   3496:         <xs:documentation>
                   3497:           Show x-zero (y=0) axis
                   3498:         </xs:documentation>
                   3499:       </xs:annotation>
                   3500:       <xs:simpleType>
                   3501:         <xs:union memberTypes="perl">
                   3502:           <xs:simpleType>
                   3503:             <xs:restriction base="xs:string">
                   3504:               <xs:enumeration value="off"/>
                   3505:               <xs:enumeration value="line"/>
                   3506:               <xs:enumeration value="thick-line"/>
                   3507:               <xs:enumeration value="dotted"/>
                   3508:             </xs:restriction>
                   3509:           </xs:simpleType>
                   3510:         </xs:union>
                   3511:       </xs:simpleType>
                   3512:     </xs:attribute>
                   3513:     <xs:attribute default="off" name="yzero">
                   3514:       <xs:annotation>
                   3515:         <xs:documentation>
                   3516:           Show y-zero (x=0) axis
                   3517:         </xs:documentation>
                   3518:       </xs:annotation>
                   3519:       <xs:simpleType>
                   3520:         <xs:union memberTypes="perl">
                   3521:           <xs:simpleType>
                   3522:             <xs:restriction base="xs:string">
                   3523:               <xs:enumeration value="off"/>
                   3524:               <xs:enumeration value="line"/>
                   3525:               <xs:enumeration value="thick-line"/>
                   3526:               <xs:enumeration value="dotted"/>
                   3527:             </xs:restriction>
                   3528:           </xs:simpleType>
                   3529:         </xs:union>
                   3530:       </xs:simpleType>
                   3531:     </xs:attribute>
                   3532:   </xs:complexType>
                   3533:   <xs:complexType name="lonplot--curve">
                   3534:     <xs:annotation>
                   3535:       <xs:documentation>Plot Curve</xs:documentation>
                   3536:     </xs:annotation>
                   3537:     <xs:choice maxOccurs="unbounded" minOccurs="0">
                   3538:       <xs:element name="data" type="lonplot--data"/>
                   3539:       <xs:element name="function" type="lonplot--function"/>
                   3540:     </xs:choice>
                   3541:     <xs:attribute default="x000000" name="color" type="color-or-perl">
                   3542:       <xs:annotation>
                   3543:         <xs:documentation>
                   3544:           Color of curve
                   3545:         </xs:documentation>
                   3546:       </xs:annotation>
                   3547:     </xs:attribute>
                   3548:     <xs:attribute name="name" type="xs:string">
                   3549:       <xs:annotation>
                   3550:         <xs:documentation>
                   3551:           Name of curve to appear in key
                   3552:         </xs:documentation>
                   3553:       </xs:annotation>
                   3554:     </xs:attribute>
                   3555:     <xs:attribute default="lines" name="linestyle">
                   3556:       <xs:annotation>
                   3557:         <xs:documentation>
                   3558:           Unless otherwise noted the linestyles require only 2 data sets, X and Y.
                   3559:           
                   3560:           - lines: Connect adjacent points with straight line segments.
                   3561:           - points: Display a small marker at each point.
                   3562:           - linespoints: Draw both lines and points.
                   3563:           Draws a small symbol at each point and then connects adjacent points with straight line segments.
                   3564:           - dots: Place a tiny dots on the given points.
                   3565:           - steps: Connect points with horizontal lines.
                   3566:           This style connects consecutive points with two line segments: the first from (x1,y1) to (x2,y1) and the second from (x2,y1) to (x2,y2).
                   3567:           - fsteps: Connect data with horizontal lines.
                   3568:           This style connects consecutive points with two line segments: the first from (x1,y1) to (x1,y2) and the second from (x1,y2) to (x2,y2).
                   3569:           - histeps: Plot as histogram.
                   3570:           Y-values are assumed to be centered at the x-values; the point at x1 is represented as a horizontal line from ((x0+x1)/2,y1) to ((x1+x2)/2,y1). The lines representing the end points are extended so that the step is centered on at x. Adjacent points are connected by a vertical line at their average x, that is, from ((x1+x2)/2,y1) to ((x1+x2)/2,y2).
                   3571:           - errorbars: Same as yerrorbars.
                   3572:           - xerrorbars: Draw horizontal error bars around the points.
                   3573:           Requires 3 or 4 data sets. Either X, Y, Xdelta or X, Y, Xlower, Xupper. Xdelta is a change relative to the given X value. The Xlower and Xupper values are absolute grid coordinates of the upper and lower values to indicated with error bars.
                   3574:           - yerrorbars: Draw vertical error bars around the points.
                   3575:           Requires 3 or 4 data sets. Either X, Y, Ydelta or X, Y, Ylower, Yupper. Ydelta is a change relative to the given Y value. The Ylower and Yupper values are the grid coordinates of the upper and lower values to indicate with error bars.
                   3576:           - xyerrorbars: Draw both vertical and horizontal error bars around the points.
                   3577:           Requires 4 or 6 data sets. Either X, Y, Xdelta, Ydelta or X, Y, Xlower, Xupper, Ylower, Yupper. Xdelta and Ydelta are relative to the given coordinates. Xlower, Xupper, Ylower, and Yupper are the grid coordinates of the upper and lower values to indicate with the error bars.
                   3578:           - boxes: Draw a box from the X-axis to the Y-value given.
                   3579:           Requires either 2 or 3 data sets. Either X, Y or X, Y, Xwidth. In the first case the boxes will be drawn next to eachother. In the latter case Xwidth indicates the horizontal width of the box for the given coordinate.
                   3580:           - vector: Draws a vector field based on the given data.
                   3581:           Requires 4 data sets, X, Y, Xdelta, and Ydelta. The ‘vector‘ style draws a vector from (X,Y) to (X+Xdelta,Y+Ydelta). It also draws a small arrowhead at the end of the vector. May not be fully supported by gnuplot.
                   3582:         </xs:documentation>
                   3583:       </xs:annotation>
                   3584:       <xs:simpleType>
                   3585:         <xs:union memberTypes="perl">
                   3586:           <xs:simpleType>
                   3587:             <xs:restriction base="xs:string">
                   3588:               <xs:enumeration value="lines"/>
                   3589:               <xs:enumeration value="linespoints"/>
                   3590:               <xs:enumeration value="dots"/>
                   3591:               <xs:enumeration value="points"/>
                   3592:               <xs:enumeration value="steps"/>
                   3593:               <xs:enumeration value="fsteps"/>
                   3594:               <xs:enumeration value="histeps"/>
                   3595:               <xs:enumeration value="errorbars"/>
                   3596:               <xs:enumeration value="xerrorbars"/>
                   3597:               <xs:enumeration value="yerrorbars"/>
                   3598:               <xs:enumeration value="xyerrorbars"/>
                   3599:               <xs:enumeration value="boxes"/>
                   3600:               <xs:enumeration value="filledcurves"/>
                   3601:               <xs:enumeration value="vector"/>
                   3602:             </xs:restriction>
                   3603:           </xs:simpleType>
                   3604:         </xs:union>
                   3605:       </xs:simpleType>
                   3606:     </xs:attribute>
                   3607:     <xs:attribute default="1" name="linewidth">
                   3608:       <xs:annotation>
                   3609:         <xs:documentation>
                   3610:           Line width (may not apply to all plot styles)
                   3611:         </xs:documentation>
                   3612:       </xs:annotation>
                   3613:       <xs:simpleType>
                   3614:         <xs:union memberTypes="perl">
                   3615:           <xs:simpleType>
                   3616:             <xs:restriction base="xs:int">
                   3617:               <xs:minInclusive value="1"/>
                   3618:               <xs:maxInclusive value="10"/>
                   3619:             </xs:restriction>
                   3620:           </xs:simpleType>
                   3621:         </xs:union>
                   3622:       </xs:simpleType>
                   3623:     </xs:attribute>
                   3624:     <xs:attribute default="solid" name="linetype">
                   3625:       <xs:annotation>
                   3626:         <xs:documentation>
                   3627:           Line type (may not apply to all plot styles)
                   3628:         </xs:documentation>
                   3629:       </xs:annotation>
                   3630:       <xs:simpleType>
                   3631:         <xs:union memberTypes="perl">
                   3632:           <xs:simpleType>
                   3633:             <xs:restriction base="xs:string">
                   3634:               <xs:enumeration value="solid"/>
                   3635:               <xs:enumeration value="dashed"/>
                   3636:             </xs:restriction>
                   3637:           </xs:simpleType>
                   3638:         </xs:union>
                   3639:       </xs:simpleType>
                   3640:     </xs:attribute>
                   3641:     <xs:attribute default="1" name="pointsize" type="int-or-perl">
                   3642:       <xs:annotation>
                   3643:         <xs:documentation>
                   3644:           Point size (may not apply to all plot styles)
                   3645:         </xs:documentation>
                   3646:       </xs:annotation>
                   3647:     </xs:attribute>
                   3648:     <xs:attribute default="1" name="pointtype">
                   3649:       <xs:annotation>
                   3650:         <xs:documentation>
                   3651:           Point type (may not apply to all plot styles)
                   3652:         </xs:documentation>
                   3653:       </xs:annotation>
                   3654:       <xs:simpleType>
                   3655:         <xs:union memberTypes="perl">
                   3656:           <xs:simpleType>
                   3657:             <xs:restriction base="xs:int">
                   3658:               <xs:minInclusive value="0"/>
                   3659:               <xs:maxInclusive value="6"/>
                   3660:             </xs:restriction>
                   3661:           </xs:simpleType>
                   3662:         </xs:union>
                   3663:       </xs:simpleType>
                   3664:     </xs:attribute>
                   3665:     <xs:attribute default="closed" name="limit">
                   3666:       <xs:annotation>
                   3667:         <xs:documentation>
                   3668:           Point to fill for filled curves
                   3669:         </xs:documentation>
                   3670:       </xs:annotation>
                   3671:       <xs:simpleType>
                   3672:         <xs:union memberTypes="perl">
                   3673:           <xs:simpleType>
                   3674:             <xs:restriction base="xs:string">
                   3675:               <xs:enumeration value="above"/>
                   3676:               <xs:enumeration value="below"/>
                   3677:               <xs:enumeration value="closed"/>
                   3678:               <xs:enumeration value="x1"/>
                   3679:               <xs:enumeration value="x2"/>
                   3680:               <xs:enumeration value="y1"/>
                   3681:               <xs:enumeration value="y2"/>
                   3682:             </xs:restriction>
                   3683:           </xs:simpleType>
                   3684:         </xs:union>
                   3685:       </xs:simpleType>
                   3686:     </xs:attribute>
                   3687:     <xs:attribute default="head" name="arrowhead">
                   3688:       <xs:annotation>
                   3689:         <xs:documentation>
                   3690:           For vector plots, controls where in the vector the arrow head(s) appear.
                   3691:         </xs:documentation>
                   3692:       </xs:annotation>
                   3693:       <xs:simpleType>
                   3694:         <xs:union memberTypes="perl">
                   3695:           <xs:simpleType>
                   3696:             <xs:restriction base="xs:string">
                   3697:               <xs:enumeration value="nohead"/>
                   3698:               <xs:enumeration value="head"/>
                   3699:               <xs:enumeration value="heads"/>
                   3700:             </xs:restriction>
                   3701:           </xs:simpleType>
                   3702:         </xs:union>
                   3703:       </xs:simpleType>
                   3704:     </xs:attribute>
                   3705:     <xs:attribute default="filled" name="arrowstyle">
                   3706:       <xs:annotation>
                   3707:         <xs:documentation>
                   3708:           For vector plots, controls the fill style of the arrow.
                   3709:         </xs:documentation>
                   3710:       </xs:annotation>
                   3711:       <xs:simpleType>
                   3712:         <xs:union memberTypes="perl">
                   3713:           <xs:simpleType>
                   3714:             <xs:restriction base="xs:string">
                   3715:               <xs:enumeration value="filled"/>
                   3716:               <xs:enumeration value="empty"/>
                   3717:               <xs:enumeration value="nofilled"/>
                   3718:             </xs:restriction>
                   3719:           </xs:simpleType>
                   3720:         </xs:union>
                   3721:       </xs:simpleType>
                   3722:     </xs:attribute>
                   3723:     <xs:attribute default="0.02" name="arrowlength" type="real-or-perl">
                   3724:       <xs:annotation>
                   3725:         <xs:documentation>
                   3726:           For vector plots, determines the distance between the vector line end and the tip of the arrow.
                   3727:         </xs:documentation>
                   3728:       </xs:annotation>
                   3729:     </xs:attribute>
                   3730:     <xs:attribute default="10.0" name="arrowangle" type="real-or-perl">
                   3731:       <xs:annotation>
                   3732:         <xs:documentation>
                   3733:           For vector plots, determines the angle the arrow branches make with the vector line.
                   3734:         </xs:documentation>
                   3735:       </xs:annotation>
                   3736:     </xs:attribute>
                   3737:     <xs:attribute default="90.0" name="arrowbackangle" type="real-or-perl">
                   3738:       <xs:annotation>
                   3739:         <xs:documentation>
                   3740:           For vector plots, determines the angle the arrow lines that return to the main line from the branches make with the arrow branches.
                   3741:         </xs:documentation>
                   3742:       </xs:annotation>
                   3743:     </xs:attribute>
                   3744:   </xs:complexType>
                   3745:   <xs:complexType mixed="true" name="lonplot--data">
                   3746:     <xs:annotation>
                   3747:       <xs:documentation>
                   3748:         Curve data
                   3749:         
                   3750:         The data must be either a perl array, @X, or a comma separated list, such as “0.5,0.9,1.5,2.4” (without quotes). ’NaN’ is a valid value. Note the the ”Y” values are entered in a separate array.
                   3751:       </xs:documentation>
                   3752:     </xs:annotation>
                   3753:   </xs:complexType>
                   3754:   <xs:complexType mixed="true" name="lonplot--function">
                   3755:     <xs:annotation>
                   3756:       <xs:documentation>
                   3757:         Used to specify the curve to be plotted as a formula, instead of numerical data.
                   3758:         The function must be a mathematical expression. Use the independent variable “x” for cartesian plots and “t” for polar plots. Implicit multiplication is not accepted by Gnuplot.
                   3759:       </xs:documentation>
                   3760:     </xs:annotation>
                   3761:   </xs:complexType>
                   3762:   <xs:complexType name="lonplot--key">
                   3763:     <xs:annotation>
                   3764:       <xs:documentation>
                   3765:         Causes a key to be drawn on the plot when it is generated. The key will contain an entry for each curve which has a name.
1.5       damieng  3766:         The key is the color of the foreground of the plot, specified in the gnuplot element.
1.1       damieng  3767:       </xs:documentation>
                   3768:     </xs:annotation>
                   3769:     <xs:attribute name="title" type="xs:string">
                   3770:       <xs:annotation>
                   3771:         <xs:documentation>
                   3772:           Title of key
                   3773:         </xs:documentation>
                   3774:       </xs:annotation>
                   3775:     </xs:attribute>
                   3776:     <xs:attribute default="off" name="box" type="onoff-or-perl">
                   3777:       <xs:annotation>
                   3778:         <xs:documentation>
                   3779:           Draw a box around the key?
                   3780:         </xs:documentation>
                   3781:       </xs:annotation>
                   3782:     </xs:attribute>
                   3783:     <xs:attribute default="top right" name="pos">
                   3784:       <xs:annotation>
                   3785:         <xs:documentation>
                   3786:           Position of the key on the plot
                   3787:         </xs:documentation>
                   3788:       </xs:annotation>
                   3789:       <xs:simpleType>
                   3790:         <xs:union memberTypes="perl">
                   3791:           <xs:simpleType>
                   3792:             <xs:restriction base="xs:string">
                   3793:               <xs:enumeration value="top left"/>
                   3794:               <xs:enumeration value="top right"/>
                   3795:               <xs:enumeration value="bottom left"/>
                   3796:               <xs:enumeration value="bottom right"/>
                   3797:               <xs:enumeration value="outside"/>
                   3798:               <xs:enumeration value="below"/>
                   3799:             </xs:restriction>
                   3800:           </xs:simpleType>
                   3801:         </xs:union>
                   3802:       </xs:simpleType>
                   3803:     </xs:attribute>
                   3804:   </xs:complexType>
                   3805:   <xs:complexType mixed="true" name="lonplot--label">
                   3806:     <xs:annotation>
                   3807:       <xs:documentation>Plot Label</xs:documentation>
                   3808:     </xs:annotation>
                   3809:     <xs:attribute default="0" name="xpos" type="real-or-perl">
                   3810:       <xs:annotation>
                   3811:         <xs:documentation>
                   3812:           X position of label (graph coordinates)
                   3813:         </xs:documentation>
                   3814:       </xs:annotation>
                   3815:     </xs:attribute>
                   3816:     <xs:attribute default="0" name="ypos" type="real-or-perl">
                   3817:       <xs:annotation>
                   3818:         <xs:documentation>
                   3819:           Y position of label (graph coordinates)
                   3820:         </xs:documentation>
                   3821:       </xs:annotation>
                   3822:     </xs:attribute>
                   3823:     <xs:attribute default="left" name="justify">
                   3824:       <xs:annotation>
                   3825:         <xs:documentation>
                   3826:           justification of the label text on the plot
                   3827:         </xs:documentation>
                   3828:       </xs:annotation>
                   3829:       <xs:simpleType>
                   3830:         <xs:union memberTypes="perl">
                   3831:           <xs:simpleType>
                   3832:             <xs:restriction base="xs:string">
                   3833:               <xs:enumeration value="left"/>
                   3834:               <xs:enumeration value="right"/>
                   3835:               <xs:enumeration value="center"/>
                   3836:             </xs:restriction>
                   3837:           </xs:simpleType>
                   3838:         </xs:union>
                   3839:       </xs:simpleType>
                   3840:     </xs:attribute>
                   3841:     <xs:attribute default="0" name="rotate" type="real-or-perl">
                   3842:       <xs:annotation>
                   3843:         <xs:documentation>
                   3844:           Rotation of label (degrees)
                   3845:         </xs:documentation>
                   3846:       </xs:annotation>
                   3847:     </xs:attribute>
                   3848:   </xs:complexType>
                   3849:   <xs:complexType abstract="true" name="lonplot--tics">
                   3850:     <xs:annotation>
                   3851:       <xs:documentation>Plot tics</xs:documentation>
                   3852:     </xs:annotation>
                   3853:     <xs:choice maxOccurs="unbounded" minOccurs="0">
                   3854:       <xs:element name="tic">
                   3855:         <xs:annotation>
                   3856:           <xs:documentation>
1.5       damieng  3857:             The &lt;tic&gt; element allows users to specify exact Tic positions and labels for each axis.
1.1       damieng  3858:             In this version we only support level 0 tics (major tic).
                   3859:             Each tic has associated with it a position and a label $current_tics is a reference to the current tick description hash.
                   3860:             We add elements to an array in that has: ticspecs whose elements are 'pos' - the tick position and 'label' - the tic label.
                   3861:           </xs:documentation>
                   3862:         </xs:annotation>
                   3863:         <xs:complexType mixed="true">
                   3864:           <xs:attribute name="location" type="real-or-perl" use="required"/>
                   3865:         </xs:complexType>
                   3866:       </xs:element>
                   3867:     </xs:choice>
                   3868:     <xs:attribute default="border" name="location">
                   3869:       <xs:annotation>
                   3870:         <xs:documentation>
                   3871:           Location of major tic marks
                   3872:         </xs:documentation>
                   3873:       </xs:annotation>
                   3874:       <xs:simpleType>
                   3875:         <xs:union memberTypes="perl">
                   3876:           <xs:simpleType>
                   3877:             <xs:restriction base="xs:string">
                   3878:               <xs:enumeration value="border"/>
                   3879:               <xs:enumeration value="axis"/>
                   3880:             </xs:restriction>
                   3881:           </xs:simpleType>
                   3882:         </xs:union>
                   3883:       </xs:simpleType>
                   3884:     </xs:attribute>
                   3885:     <xs:attribute default="on" name="mirror" type="onoff-or-perl">
                   3886:       <xs:annotation>
                   3887:         <xs:documentation>
                   3888:           Mirror tics on opposite axis?
                   3889:           If the location of tic marks is set to “border” this parameter determines if they are shown on both the top and bottom or right and left sides of the graph. The “mirror” tic marks are unlabelled.
                   3890:         </xs:documentation>
                   3891:       </xs:annotation>
                   3892:     </xs:attribute>
                   3893:     <xs:attribute default="-10.0" name="start" type="real-or-perl">
                   3894:       <xs:annotation>
                   3895:         <xs:documentation>
                   3896:           The point in graph coordinates which to start making major tics. This may be less than or greater than the lower limit for the axis.
                   3897:         </xs:documentation>
                   3898:       </xs:annotation>
                   3899:     </xs:attribute>
                   3900:     <xs:attribute default="1.0" name="increment" type="real-or-perl">
                   3901:       <xs:annotation>
                   3902:         <xs:documentation>
                   3903:           The span, in graph coordinates, between each major tic mark.
                   3904:         </xs:documentation>
                   3905:       </xs:annotation>
                   3906:     </xs:attribute>
                   3907:     <xs:attribute default="10.0" name="end" type="real-or-perl">
                   3908:       <xs:annotation>
                   3909:         <xs:documentation>
                   3910:           Stop major tics at.
                   3911:           This may be less than or greater than the upper limit for the axis.
                   3912:         </xs:documentation>
                   3913:       </xs:annotation>
                   3914:     </xs:attribute>
                   3915:     <xs:attribute default="0" name="minorfreq" type="int-or-perl">
                   3916:       <xs:annotation>
                   3917:         <xs:documentation>
                   3918:           The number of subdivisions to make of the span between major tic marks. Using a value of “10” leads to 9 minor tic marks.
                   3919:         </xs:documentation>
                   3920:       </xs:annotation>
                   3921:     </xs:attribute>
                   3922:     <xs:attribute default="off" name="rotate" type="onoff-or-perl">
                   3923:       <xs:annotation>
                   3924:         <xs:documentation>
1.5       damieng  3925:           For output devices that support it, this rotates the tic label by 90 degrees. This is most useful with large lables defined by the tic element described below.
1.1       damieng  3926:         </xs:documentation>
                   3927:       </xs:annotation>
                   3928:     </xs:attribute>
                   3929:   </xs:complexType>
                   3930:   <xs:complexType name="lonplot--xtics">
                   3931:     <xs:annotation>
                   3932:       <xs:documentation>Plot xtics</xs:documentation>
                   3933:     </xs:annotation>
                   3934:     <xs:complexContent>
                   3935:       <xs:extension base="lonplot--tics"/>
                   3936:     </xs:complexContent>
                   3937:   </xs:complexType>
                   3938:   <xs:complexType name="lonplot--ytics">
                   3939:     <xs:annotation>
                   3940:       <xs:documentation>Plot ytics</xs:documentation>
                   3941:     </xs:annotation>
                   3942:     <xs:complexContent>
                   3943:       <xs:extension base="lonplot--tics"/>
                   3944:     </xs:complexContent>
                   3945:   </xs:complexType>
                   3946:   <xs:simpleType name="lonplot--xlabel">
                   3947:     <xs:annotation>
                   3948:       <xs:documentation>Plot x-label</xs:documentation>
                   3949:     </xs:annotation>
                   3950:     <xs:restriction base="xs:string"/>
                   3951:   </xs:simpleType>
                   3952:   <xs:simpleType name="lonplot--ylabel">
                   3953:     <xs:annotation>
                   3954:       <xs:documentation>Plot y-label</xs:documentation>
                   3955:     </xs:annotation>
                   3956:     <xs:restriction base="xs:string"/>
                   3957:   </xs:simpleType>
                   3958:   <xs:complexType name="lonplot--block">
                   3959:     <xs:annotation>
                   3960:       <xs:documentation>
                   3961:         Conditional Block
                   3962:         
1.5       damieng  3963:         This has a required argument condition that is evaluated. If the condition is true, everything inside the element is evaluated; otherwise, everything inside the block element is skipped.
1.1       damieng  3964:         
                   3965:         When found inside the gnuplot element, a block can only have gnuplot children inside, with no text.
                   3966:       </xs:documentation>
                   3967:     </xs:annotation>
                   3968:     <xs:choice maxOccurs="unbounded" minOccurs="0">
                   3969:       <xs:group ref="gnuplot-children"/>
                   3970:     </xs:choice>
                   3971:     <xs:attribute name="condition" type="xs:string">
                   3972:       <xs:annotation>
                   3973:         <xs:documentation>
                   3974:           Test Condition
                   3975:         </xs:documentation>
                   3976:       </xs:annotation>
                   3977:     </xs:attribute>
                   3978:   </xs:complexType>
                   3979:   
                   3980:   <xs:annotation>
                   3981:     <xs:documentation>
                   3982:       Task
                   3983:     </xs:documentation>
                   3984:   </xs:annotation>
                   3985:   <xs:element name="Task">
                   3986:     <xs:annotation>
                   3987:       <xs:documentation>Root for .task (bridge task) documents</xs:documentation>
                   3988:     </xs:annotation>
                   3989:     <xs:complexType mixed="true">
                   3990:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   3991:         <xs:element ref="IntroParagraph"/>
                   3992:         <xs:element ref="Setup"/>
                   3993:         <xs:element ref="Question"/>
                   3994:         <xs:element ref="Criteria"/>
                   3995:         <xs:element ref="ClosingParagraph"/>
                   3996:       </xs:choice>
                   3997:       <xs:attribute name="OptionalRequired" type="int-or-perl">
                   3998:         <xs:annotation>
                   3999:           <xs:documentation>
                   4000:             Required number of passed optional elements to pass the Task
                   4001:           </xs:documentation>
                   4002:         </xs:annotation>
                   4003:       </xs:attribute>
                   4004:     </xs:complexType>
                   4005:   </xs:element>
                   4006:   <xs:element name="IntroParagraph">
                   4007:     <xs:annotation>
                   4008:       <xs:documentation>Introductory Information</xs:documentation>
                   4009:     </xs:annotation>
                   4010:     <xs:complexType mixed="true">
                   4011:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   4012:         <xs:group ref="text-only"/>
                   4013:         <xs:element ref="parserlib"/>
                   4014:         <xs:element ref="scriptlib"/>
                   4015:       </xs:choice>
                   4016:     </xs:complexType>
                   4017:   </xs:element>
                   4018:   <xs:element name="ClosingParagraph">
                   4019:     <xs:annotation>
                   4020:       <xs:documentation>Closing Information</xs:documentation>
                   4021:     </xs:annotation>
                   4022:     <xs:complexType mixed="true">
                   4023:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   4024:         <xs:group ref="text-only"/>
                   4025:         <xs:element ref="parserlib"/>
                   4026:         <xs:element ref="scriptlib"/>
                   4027:       </xs:choice>
                   4028:     </xs:complexType>
                   4029:   </xs:element>
                   4030:   <xs:element name="Question">
                   4031:     <xs:annotation>
                   4032:       <xs:documentation>Question</xs:documentation>
                   4033:     </xs:annotation>
                   4034:     <xs:complexType>
                   4035:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   4036:         <xs:element ref="Instance"/>
                   4037:         <xs:element ref="QuestionText"/>
                   4038:         <xs:element ref="Question"/>
                   4039:         <xs:element ref="Criteria"/>
                   4040:       </xs:choice>
                   4041:       <xs:attribute name="id" type="xs:string"/>
                   4042:       <xs:attribute default="Y" name="Mandatory">
                   4043:         <xs:annotation>
                   4044:           <xs:documentation>
                   4045:             Passing is Mandatory
                   4046:           </xs:documentation>
                   4047:         </xs:annotation>
                   4048:         <xs:simpleType>
                   4049:           <xs:union memberTypes="perl">
                   4050:             <xs:simpleType>
                   4051:               <xs:restriction base="xs:string">
                   4052:                 <xs:enumeration value="Y"/>
                   4053:                 <xs:enumeration value="N"/>
                   4054:               </xs:restriction>
                   4055:             </xs:simpleType>
                   4056:           </xs:union>
                   4057:         </xs:simpleType>
                   4058:       </xs:attribute>
                   4059:       <xs:attribute name="OptionalRequired" type="int-or-perl">
                   4060:         <xs:annotation>
                   4061:           <xs:documentation>
                   4062:             Required number of passed optional elements to pass
                   4063:           </xs:documentation>
                   4064:         </xs:annotation>
                   4065:       </xs:attribute>
                   4066:     </xs:complexType>
                   4067:   </xs:element>
                   4068:   <xs:element name="QuestionText">
                   4069:     <xs:annotation>
                   4070:       <xs:documentation>Question Information</xs:documentation>
                   4071:     </xs:annotation>
                   4072:     <xs:complexType mixed="true">
                   4073:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   4074:         <xs:group ref="text-only"/>
                   4075:         <xs:element ref="parserlib"/>
                   4076:         <xs:element ref="scriptlib"/>
                   4077:       </xs:choice>
                   4078:     </xs:complexType>
                   4079:   </xs:element>
                   4080:   <xs:element name="Setup">
                   4081:     <xs:annotation>
                   4082:       <xs:documentation>Setup....</xs:documentation>
                   4083:     </xs:annotation>
                   4084:     <xs:complexType>
                   4085:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   4086:         <xs:element ref="Instance"/>
                   4087:       </xs:choice>
                   4088:       <xs:attribute name="id" type="xs:string"/>
                   4089:     </xs:complexType>
                   4090:   </xs:element>
                   4091:   <xs:element name="Instance">
                   4092:     <xs:annotation>
                   4093:       <xs:documentation>Specific Question Instance</xs:documentation>
                   4094:     </xs:annotation>
                   4095:     <xs:complexType>
                   4096:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   4097:         <xs:element ref="InstanceText"/>
                   4098:         <xs:element ref="Criteria"/>
                   4099:       </xs:choice>
                   4100:       <xs:attribute name="id" type="xs:string"/>
                   4101:       <xs:attribute default="no" name="Disabled" type="yesno-or-perl">
                   4102:         <xs:annotation>
                   4103:           <xs:documentation>
                   4104:             Instance is Disabled
                   4105:           </xs:documentation>
                   4106:         </xs:annotation>
                   4107:       </xs:attribute>
                   4108:       <xs:attribute name="OptionalRequired" type="int-or-perl">
                   4109:         <xs:annotation>
                   4110:           <xs:documentation>
                   4111:             Required number of passed optional elements to pass the Instance
                   4112:           </xs:documentation>
                   4113:         </xs:annotation>
                   4114:       </xs:attribute>
                   4115:     </xs:complexType>
                   4116:   </xs:element>
                   4117:   <xs:element name="InstanceText">
                   4118:     <xs:annotation>
                   4119:       <xs:documentation>Information for the Instance</xs:documentation>
                   4120:     </xs:annotation>
                   4121:     <xs:complexType mixed="true">
                   4122:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   4123:         <xs:group ref="text-only"/>
                   4124:         <xs:element ref="parserlib"/>
                   4125:         <xs:element ref="scriptlib"/>
                   4126:       </xs:choice>
                   4127:     </xs:complexType>
                   4128:   </xs:element>
                   4129:   <xs:element name="Criteria">
                   4130:     <xs:annotation>
                   4131:       <xs:documentation>Question Criteria</xs:documentation>
                   4132:     </xs:annotation>
                   4133:     <xs:complexType mixed="true">
                   4134:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   4135:         <xs:element ref="GraderNote"/>
                   4136:         <xs:element ref="CriteriaText"/>
                   4137:       </xs:choice>
                   4138:       <xs:attribute name="id" type="xs:string"/>
                   4139:       <xs:attribute default="Y" name="Mandatory">
                   4140:         <xs:annotation>
                   4141:           <xs:documentation>
                   4142:             Passing is Mandatory
                   4143:           </xs:documentation>
                   4144:         </xs:annotation>
                   4145:         <xs:simpleType>
                   4146:           <xs:union memberTypes="perl">
                   4147:             <xs:simpleType>
                   4148:               <xs:restriction base="xs:string">
                   4149:                 <xs:enumeration value="Y"/>
                   4150:                 <xs:enumeration value="N"/>
                   4151:               </xs:restriction>
                   4152:             </xs:simpleType>
                   4153:           </xs:union>
                   4154:         </xs:simpleType>
                   4155:       </xs:attribute>
                   4156:     </xs:complexType>
                   4157:   </xs:element>
                   4158:   <xs:element name="CriteriaText">
                   4159:     <xs:annotation>
                   4160:       <xs:documentation>Criteria Information</xs:documentation>
                   4161:     </xs:annotation>
                   4162:     <xs:complexType mixed="true">
                   4163:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   4164:         <xs:group ref="text-only"/>
                   4165:         <xs:element ref="parserlib"/>
                   4166:         <xs:element ref="scriptlib"/>
                   4167:       </xs:choice>
                   4168:     </xs:complexType>
                   4169:   </xs:element>
                   4170:   <xs:element name="GraderNote">
                   4171:     <xs:annotation>
                   4172:       <xs:documentation>Text to display to Grader</xs:documentation>
                   4173:     </xs:annotation>
                   4174:     <xs:complexType mixed="true">
                   4175:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   4176:         <xs:group ref="text-only"/>
                   4177:         <xs:element ref="parserlib"/>
                   4178:         <xs:element ref="scriptlib"/>
                   4179:       </xs:choice>
                   4180:     </xs:complexType>
                   4181:   </xs:element>
                   4182:   
                   4183:   <xs:annotation>
                   4184:     <xs:documentation>
                   4185:       Problem block elements that cannot be used anywhere text is used.
                   4186:     </xs:documentation>
                   4187:   </xs:annotation>
                   4188:   <xs:element name="part">
                   4189:     <xs:annotation>
                   4190:       <xs:documentation>
                   4191:         Problem Part
                   4192:         
                   4193:         This must be below problem if it is going to be used. It does many of the same tasks as problem, but allows multiple separate problems to exist in a single file.
                   4194:       </xs:documentation>
                   4195:     </xs:annotation>
                   4196:     <xs:complexType mixed="true">
                   4197:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   4198:         <xs:group ref="text-with-responses"/>
                   4199:         <xs:group ref="inserts"/>
                   4200:         <xs:element ref="parameter"/>
                   4201:         <xs:element ref="parserlib"/>
                   4202:         <xs:element ref="scriptlib"/>
                   4203:       </xs:choice>
                   4204:       <xs:attribute name="id" type="xs:string">
                   4205:         <xs:annotation>
                   4206:           <xs:documentation>
                   4207:             Part ID
                   4208:           </xs:documentation>
                   4209:         </xs:annotation>
                   4210:       </xs:attribute>
                   4211:       <xs:attribute name="display" type="xs:string">
                   4212:         <xs:annotation>
                   4213:           <xs:documentation>
                   4214:             Displayed Part Description
                   4215:           </xs:documentation>
                   4216:         </xs:annotation>
                   4217:       </xs:attribute>
                   4218:     </xs:complexType>
                   4219:   </xs:element>
                   4220:   <xs:element name="allow">
                   4221:     <xs:annotation>
                   4222:       <xs:documentation>File Dependencies</xs:documentation>
                   4223:     </xs:annotation>
                   4224:     <xs:complexType>
                   4225:       <xs:attribute name="src" type="xs:string">
                   4226:         <xs:annotation>
                   4227:           <xs:documentation>
                   4228:             Path to the file
                   4229:           </xs:documentation>
                   4230:         </xs:annotation>
                   4231:       </xs:attribute>
                   4232:     </xs:complexType>
                   4233:   </xs:element>
                   4234:   <xs:element name="parserlib" type="xs:anyURI">
                   4235:     <xs:annotation>
                   4236:       <xs:documentation>
                   4237:         Import Tag Definitions
                   4238:         
                   4239:         The enclosed filename contains definitions for new tags.
                   4240:       </xs:documentation>
                   4241:     </xs:annotation>
                   4242:   </xs:element>
                   4243:   <xs:element name="scriptlib" type="xs:anyURI">
                   4244:     <xs:annotation>
                   4245:       <xs:documentation>
                   4246:         Import Script Library
                   4247:         
                   4248:         The enclosed filename contains Perl code to run in the safe space.
                   4249:       </xs:documentation>
                   4250:     </xs:annotation>
                   4251:   </xs:element>
                   4252:   <xs:element name="meta">
                   4253:     <xs:annotation>
                   4254:       <xs:documentation>
                   4255:         Custom Metadata for LON-CAPA (as opposed to the HTML meta which should be inside &lt;head&gt;).
                   4256:         
                   4257:         Recognized names:
                   4258:         abstract, author, authorspace, avetries, avetries_list, clear, comefrom, comefrom_list, copyright, correct, count, course, course_list, courserestricted, creationdate, dependencies, depth, difficulty, difficulty_list, disc, disc_list, domain, end, field, firstname, generation, goto, goto_list, groupname, helpful, highestgradelevel, hostname, id, keynum, keywords, language, lastname, lastrevisiondate, lowestgradelevel, middlename, mime, modifyinguser, notes, owner, permanentemail, scope, sequsage, sequsage_list, standards, start, stdno, stdno_list, subject, technical, title, url, username, value, version.
                   4259:       </xs:documentation>
                   4260:     </xs:annotation>
                   4261:     <xs:complexType>
                   4262:       <xs:attribute name="name" type="xs:string"/>
                   4263:       <xs:attribute name="content" type="xs:string"/>
                   4264:     </xs:complexType>
                   4265:   </xs:element>
                   4266:   <xs:element name="parameter">
                   4267:     <xs:annotation>
                   4268:       <xs:documentation>
                   4269:         Parameter for a part
                   4270:         
1.5       damieng  4271:         parameter is exactly the same as responseparam, but should appear outside of a response element.
1.1       damieng  4272:       </xs:documentation>
                   4273:     </xs:annotation>
                   4274:     <xs:complexType>
                   4275:       <xs:attribute name="id" type="xs:string"/>
                   4276:       <xs:attribute name="name" type="xs:string"/>
                   4277:       <xs:attribute name="type" type="xs:string" use="required"/>
                   4278:       <xs:attribute name="description" type="xs:string"/>
                   4279:       <xs:attribute name="default" type="xs:string"/>
                   4280:       <xs:attribute name="display" type="xs:string">
                   4281:         <xs:annotation>
                   4282:           <xs:documentation>
                   4283:             Title displayed on the parameter setting screen.
                   4284:           </xs:documentation>
                   4285:         </xs:annotation>
                   4286:       </xs:attribute>
                   4287:     </xs:complexType>
                   4288:   </xs:element>
                   4289:   <xs:element name="displaytitle">
                   4290:     <xs:annotation>
                   4291:       <xs:documentation>
                   4292:         This will insert the title of the problem from the metadata of the problem. Only the first displaytitle in a problem will show the title; this allows clean usage of displaytitle in LON-CAPA style files.
                   4293:       </xs:documentation>
                   4294:     </xs:annotation>
                   4295:     <xs:complexType>
                   4296:       <xs:attribute name="style" type="xs:string"/>
                   4297:     </xs:complexType>
                   4298:   </xs:element>
                   4299:   <xs:element name="displayduedate">
                   4300:     <xs:annotation>
                   4301:       <xs:documentation>
                   4302:         This will insert the current due date if one is set in the document.
                   4303:         It is generated to be inside a table of 1x1 elements.
                   4304:       </xs:documentation>
                   4305:     </xs:annotation>
                   4306:     <xs:complexType>
                   4307:       <xs:attribute name="style" type="xs:string">
                   4308:         <xs:annotation>
                   4309:           <xs:documentation>
                   4310:             style=“plain” Makes the due date appear without any boxing. If the parameter value is other than “plain”, or if the style parameter is omitted, the due date will be displayed within a box.
                   4311:           </xs:documentation>
                   4312:         </xs:annotation>
                   4313:       </xs:attribute>
                   4314:       <xs:attribute name="format" type="xs:string">
                   4315:         <xs:annotation>
                   4316:           <xs:documentation>
                   4317:             Allows you to control the format of the due date. This is an arbitrary string that can contain any of the following formatting items:
                   4318:             
                   4319:             %a Replaced by the abbreviated weekday name according to the current locale.
                   4320:             %A Replaced by the full weekday name according to the current locale.
                   4321:             %b The abbreviated month name according to the current locale.
                   4322:             %B The full month name according to the current locale.
                   4323:             %c The preferred date and time representation for the current locale (the default format string is just this).
                   4324:             %C The century number as a two digit integer
                   4325:             %d The day of the month as a decimal number. Leading zeroes are shown for single digit day numbers.
                   4326:             %D Equivalent to %m/%d/%y
                   4327:             %e Like %d but a leadnig zero is replaced by a space.
                   4328:             %F Equivalent to %Y-%m-%d
                   4329:             %G The four digit year number.
                   4330:             %g The two digit year numbger.
                   4331:             %H The hour as a two digit number in the range 00 thorugh 23.
                   4332:             %I The hour as a two digit number in the range 00 through 12.
                   4333:             %j The day your the year in the range 001 through 366.
                   4334:             %k The hour (24 hour clock), single digits are preceded by a blank.
                   4335:             %l Like %k but using a 12 hour clock.
                   4336:             %m The month as a two digit decimal number in the range 01 through 12.
                   4337:             %M The minute as a two digit decimal number in the range 00 through 59.
                   4338:             %n A newline character.
                   4339:             %p AM or PM depending on the time value.
                   4340:             %P am or pm.
                   4341:             %r The time in am or pm notation.
                   4342:             %R Time in 24 hour notatinon (%H:%M). See also %T below.
                   4343:             %s Number of seconds since midnight of January 1, 1970.
                   4344:             %S The second as a decimal number int the range 00 through 59.
                   4345:             %t A horizontal tab character.
                   4346:             %T The time in 24 hour notation (%H:%M:%S).
                   4347:             %u Day of the week as a decimal number with Monday as 1.
                   4348:             %U The week number of the current year in the range 00 through 53. Week 1 is the week containing the first Sunday of the year.
                   4349:             %V Same as %U but week 1 is the first week with at least 4 days, with Monday being the first day of a week.
                   4350:             %w Day of the week as a decimal integer in the range 0 through 7, Sunday is 0.
                   4351:             %W Week number of the current year in the range 00 through 53, where the first Monday of the year is the first day of week 01.
                   4352:             %x The preferred date notation in the current locale without the time.
                   4353:             %X The preferred time notation in the current locale without the date.
                   4354:             %y The year as a decimal number without the century (range 00 through 99).
                   4355:             %Y The year as a decimal number including the century.
                   4356:             %% A % character.
                   4357:             %+ Date and time in the form returned by the Unix date command. 
                   4358:           </xs:documentation>
                   4359:         </xs:annotation>
                   4360:       </xs:attribute>
                   4361:     </xs:complexType>
                   4362:   </xs:element>
                   4363:   <xs:element name="preduedate">
                   4364:     <xs:annotation>
                   4365:       <xs:documentation>
                   4366:         Before Due Date Block
                   4367:         
                   4368:         Everything inside is skipped if the problem is after the due date.
                   4369:       </xs:documentation>
                   4370:     </xs:annotation>
                   4371:     <xs:complexType mixed="true">
                   4372:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   4373:         <xs:group ref="text-with-responses"/>
                   4374:         <xs:element ref="displayduedate"/>
                   4375:         <xs:element ref="displaytitle"/>
                   4376:         <xs:element ref="parserlib"/>
                   4377:         <xs:element ref="scriptlib"/>
                   4378:       </xs:choice>
                   4379:     </xs:complexType>
                   4380:   </xs:element>
                   4381:   <xs:element name="postanswerdate">
                   4382:     <xs:annotation>
                   4383:       <xs:documentation>
                   4384:         After Answer Date Block
                   4385:         
                   4386:         Everything inside is skipped if the problem is before the answer date.
                   4387:       </xs:documentation>
                   4388:     </xs:annotation>
                   4389:     <xs:complexType mixed="true">
                   4390:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   4391:         <xs:group ref="text-only"/>
                   4392:         <xs:element ref="displayduedate"/>
                   4393:         <xs:element ref="displaytitle"/>
                   4394:         <xs:element ref="parserlib"/>
                   4395:         <xs:element ref="scriptlib"/>
                   4396:       </xs:choice>
                   4397:     </xs:complexType>
                   4398:   </xs:element>
                   4399:   <xs:element name="solved">
                   4400:     <xs:annotation>
                   4401:       <xs:documentation>
                   4402:         Block For After Solved
                   4403:         
                   4404:         Everything inside is skipped if the problem part is “not solved”.
                   4405:         
                   4406:         Should not be used outside of parts in a problem using parts.
                   4407:       </xs:documentation>
                   4408:     </xs:annotation>
                   4409:     <xs:complexType mixed="true">
                   4410:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   4411:         <xs:group ref="text-only"/>
                   4412:         <xs:group ref="inserts"/>
                   4413:         <xs:element ref="parserlib"/>
                   4414:         <xs:element ref="scriptlib"/>
                   4415:       </xs:choice>
                   4416:     </xs:complexType>
                   4417:   </xs:element>
                   4418:   <xs:element name="notsolved">
                   4419:     <xs:annotation>
                   4420:       <xs:documentation>
                   4421:         Block For When Not Solved
                   4422:         
                   4423:         Everything inside is skipped if the problem part is “solved”.
                   4424:       </xs:documentation>
                   4425:     </xs:annotation>
                   4426:     <xs:complexType mixed="true">
                   4427:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   4428:         <xs:group ref="text-with-responses"/>
                   4429:         <xs:group ref="inserts"/>
                   4430:         <xs:element ref="parserlib"/>
                   4431:         <xs:element ref="scriptlib"/>
                   4432:       </xs:choice>
                   4433:     </xs:complexType>
                   4434:   </xs:element>
                   4435:   
                   4436:   <xs:annotation>
                   4437:     <xs:documentation>
                   4438:       Non-HTML block elements mixed with text
                   4439:     </xs:documentation>
                   4440:   </xs:annotation>
                   4441:   <xs:element name="import">
                   4442:     <xs:annotation>
                   4443:       <xs:documentation>
                   4444:         Import a File
                   4445:         
1.5       damieng  4446:         This causes the parse to read in the file named in the body of the element and parse it as if the entire text of the file had existed at the location of the element.
1.1       damieng  4447:       </xs:documentation>
                   4448:     </xs:annotation>
                   4449:     <xs:complexType>
                   4450:       <xs:simpleContent>
                   4451:         <xs:extension base="xs:anyURI">
                   4452:           <xs:attribute name="id" type="xs:string"/>
                   4453:           <xs:attribute name="importmode">
                   4454:             <xs:annotation>
                   4455:               <xs:documentation>
                   4456:                 Import as
                   4457:               </xs:documentation>
                   4458:             </xs:annotation>
                   4459:             <xs:simpleType>
                   4460:               <xs:union memberTypes="perl">
                   4461:                 <xs:simpleType>
                   4462:                   <xs:restriction base="xs:string">
                   4463:                     <xs:enumeration value="problem"/>
                   4464:                     <xs:enumeration value="part"/>
                   4465:                   </xs:restriction>
                   4466:                 </xs:simpleType>
                   4467:               </xs:union>
                   4468:             </xs:simpleType>
                   4469:           </xs:attribute>
                   4470:         </xs:extension>
                   4471:       </xs:simpleContent>
                   4472:     </xs:complexType>
                   4473:   </xs:element>
                   4474:   <xs:complexType mixed="true" name="block-base">
                   4475:     <xs:annotation>
                   4476:       <xs:documentation>
                   4477:         Conditional Block
                   4478:         
1.5       damieng  4479:         This has a required argument condition that is evaluated. If the condition is true, everything inside the element is evaluated; otherwise, everything inside the block element is skipped.
1.1       damieng  4480:       </xs:documentation>
                   4481:     </xs:annotation>
                   4482:     <xs:attribute name="condition" type="xs:string">
                   4483:       <xs:annotation>
                   4484:         <xs:documentation>
                   4485:           Test Condition
                   4486:         </xs:documentation>
                   4487:       </xs:annotation>
                   4488:     </xs:attribute>
                   4489:   </xs:complexType>
                   4490:   <xs:complexType mixed="true" name="block-with-parts">
                   4491:     <xs:complexContent mixed="true">
                   4492:       <xs:extension base="block-base">
                   4493:         <xs:choice maxOccurs="unbounded" minOccurs="0">
                   4494:           <xs:group ref="text-with-parts"/>
                   4495:           <xs:group ref="inserts"/>
                   4496:           <xs:element ref="parserlib"/>
                   4497:           <xs:element ref="scriptlib"/>
                   4498:         </xs:choice>
                   4499:       </xs:extension>
                   4500:     </xs:complexContent>
                   4501:   </xs:complexType>
                   4502:   <xs:complexType mixed="true" name="block-with-responses">
                   4503:     <xs:complexContent mixed="true">
                   4504:       <xs:extension base="block-base">
                   4505:         <xs:choice maxOccurs="unbounded" minOccurs="0">
                   4506:           <xs:group ref="text-with-responses"/>
                   4507:           <xs:group ref="inserts"/>
                   4508:           <xs:element ref="parserlib"/>
                   4509:           <xs:element ref="scriptlib"/>
                   4510:         </xs:choice>
                   4511:       </xs:extension>
                   4512:     </xs:complexContent>
                   4513:   </xs:complexType>
                   4514:   <xs:complexType mixed="true" name="block-with-text">
                   4515:     <xs:complexContent mixed="true">
                   4516:       <xs:extension base="block-base">
                   4517:         <xs:choice maxOccurs="unbounded" minOccurs="0">
                   4518:           <xs:group ref="text-only"/>
                   4519:           <xs:group ref="inserts"/>
                   4520:           <xs:element ref="parserlib"/>
                   4521:           <xs:element ref="scriptlib"/>
                   4522:         </xs:choice>
                   4523:       </xs:extension>
                   4524:     </xs:complexContent>
                   4525:   </xs:complexType>
                   4526:   <xs:annotation>
                   4527:     <xs:documentation>
                   4528:       see also: lonplot--block
                   4529:     </xs:documentation>
                   4530:   </xs:annotation>
                   4531:   <xs:element name="while">
                   4532:     <xs:annotation>
                   4533:       <xs:documentation>
                   4534:         While Loop Block
                   4535:         
1.5       damieng  4536:         This implements a while loop. The required attribute condition is a Perl scriptlet that when evaluated results in a true or false value. If true, the entirety of the text between the whiles is parsed. The condition is tested again, etc. If false, it goes to the next element.
1.1       damieng  4537:       </xs:documentation>
                   4538:     </xs:annotation>
                   4539:     <xs:complexType mixed="true">
                   4540:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   4541:         <xs:group ref="text-only"/>
                   4542:         <xs:group ref="inserts"/>
                   4543:         <xs:element ref="parserlib"/>
                   4544:         <xs:element ref="scriptlib"/>
                   4545:       </xs:choice>
                   4546:       <xs:attribute name="condition" type="xs:string">
                   4547:         <xs:annotation>
                   4548:           <xs:documentation>
                   4549:             Test Condition
                   4550:           </xs:documentation>
                   4551:         </xs:annotation>
                   4552:       </xs:attribute>
                   4553:     </xs:complexType>
                   4554:   </xs:element>
                   4555:   <xs:element name="tex" type="xs:string">
                   4556:     <xs:annotation>
                   4557:       <xs:documentation>
                   4558:         Print Only Block (using only LaTeX)
                   4559:       </xs:documentation>
                   4560:     </xs:annotation>
                   4561:   </xs:element>
                   4562:   <xs:element name="print">
                   4563:     <xs:annotation>
                   4564:       <xs:documentation>
                   4565:         Print Only Block (using HTML)
                   4566:       </xs:documentation>
                   4567:     </xs:annotation>
                   4568:     <xs:complexType mixed="true">
                   4569:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   4570:         <xs:group ref="text-only"/>
                   4571:       </xs:choice>
                   4572:     </xs:complexType>
                   4573:   </xs:element>
                   4574:   <xs:element name="web">
                   4575:     <xs:annotation>
                   4576:       <xs:documentation>
                   4577:         Web Only Block
                   4578:       </xs:documentation>
                   4579:     </xs:annotation>
                   4580:     <xs:complexType mixed="true">
                   4581:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   4582:         <xs:group ref="text-only"/>
                   4583:       </xs:choice>
                   4584:     </xs:complexType>
                   4585:   </xs:element>
                   4586:   <xs:element name="standalone">
                   4587:     <xs:annotation>
                   4588:       <xs:documentation>
                   4589:         Everything in between the start and end tag is shown only on the web and only if the resource is not part of a course.
                   4590:       </xs:documentation>
                   4591:     </xs:annotation>
                   4592:     <xs:complexType mixed="true">
                   4593:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   4594:         <xs:group ref="text-only"/>
                   4595:       </xs:choice>
                   4596:     </xs:complexType>
                   4597:   </xs:element>
                   4598:   <xs:complexType mixed="true" name="problemtype-base">
                   4599:     <xs:annotation>
                   4600:       <xs:documentation>
                   4601:         Problem Type Block
                   4602:         
                   4603:         Allows you to show or hide output based on what the problem-type parameter is set to in the course.
                   4604:         Will only show the output text when the problem is set to the type of exam or survey in the course.
                   4605:       </xs:documentation>
                   4606:     </xs:annotation>
                   4607:     <xs:attribute default="show" name="mode">
                   4608:       <xs:simpleType>
                   4609:         <xs:union memberTypes="perl">
                   4610:           <xs:simpleType>
                   4611:             <xs:restriction base="xs:string">
                   4612:               <xs:enumeration value="show"/>
                   4613:               <xs:enumeration value="hide"/>
                   4614:             </xs:restriction>
                   4615:           </xs:simpleType>
                   4616:         </xs:union>
                   4617:       </xs:simpleType>
                   4618:     </xs:attribute>
                   4619:     <xs:attribute default="exam" name="for">
                   4620:       <xs:annotation>
                   4621:         <xs:documentation>
                   4622:           When used as type(s)
                   4623:           
                   4624:           Comma-separated list of values among:
                   4625:           exam, survey, surveycred, anonsurvey, anonsurveycred, problem, practice, randomizetry
                   4626:         </xs:documentation>
                   4627:       </xs:annotation>
                   4628:       <xs:simpleType>
                   4629:         <xs:union memberTypes="perl">
                   4630:           <xs:simpleType>
                   4631:             <xs:restriction base="xs:string">
                   4632:               <xs:pattern value="(exam|survey|surveycred|anonsurvey|anonsurveycred|problem|practice|randomizetry)(\s*,\s*(exam|survey|surveycred|anonsurvey|anonsurveycred|problem|practice|randomizetry))*"/>
                   4633:             </xs:restriction>
                   4634:           </xs:simpleType>
                   4635:         </xs:union>
                   4636:       </xs:simpleType>
                   4637:     </xs:attribute>
                   4638:   </xs:complexType>
                   4639:   <xs:complexType mixed="true" name="problemtype-with-parts">
                   4640:     <xs:complexContent mixed="true">
                   4641:       <xs:extension base="problemtype-base">
                   4642:         <xs:choice maxOccurs="unbounded" minOccurs="0">
                   4643:           <xs:group ref="text-with-parts"/>
                   4644:           <xs:group ref="inserts"/>
                   4645:           <xs:element ref="parserlib"/>
                   4646:           <xs:element ref="scriptlib"/>
                   4647:         </xs:choice>
                   4648:       </xs:extension>
                   4649:     </xs:complexContent>
                   4650:   </xs:complexType>
                   4651:   <xs:complexType mixed="true" name="problemtype-with-responses">
                   4652:     <xs:complexContent mixed="true">
                   4653:       <xs:extension base="problemtype-base">
                   4654:         <xs:choice maxOccurs="unbounded" minOccurs="0">
                   4655:           <xs:group ref="text-with-responses"/>
                   4656:           <xs:group ref="inserts"/>
                   4657:           <xs:element ref="parserlib"/>
                   4658:           <xs:element ref="scriptlib"/>
                   4659:         </xs:choice>
                   4660:       </xs:extension>
                   4661:     </xs:complexContent>
                   4662:   </xs:complexType>
                   4663:   <xs:complexType mixed="true" name="problemtype-with-text">
                   4664:     <xs:complexContent mixed="true">
                   4665:       <xs:extension base="problemtype-base">
                   4666:         <xs:choice maxOccurs="unbounded" minOccurs="0">
                   4667:           <xs:group ref="text-only"/>
                   4668:           <xs:group ref="inserts"/>
                   4669:           <xs:element ref="parserlib"/>
                   4670:           <xs:element ref="scriptlib"/>
                   4671:         </xs:choice>
                   4672:       </xs:extension>
                   4673:     </xs:complexContent>
                   4674:   </xs:complexType>
                   4675:   <xs:complexType name="randomlist-base">
                   4676:     <xs:annotation>
                   4677:       <xs:documentation>
                   4678:         Randomly Parsed Block
                   4679:         
1.5       damieng  4680:         The enclosed elements are parsed in a stable random order. The optional attribute show=“N” restricts the number of elements inside that are actually parsed to no more than N. N can equal the total elements inside. The randomlist element can be used to randomize problem parts by wrapping the &lt;part&gt; elements with a randomlist element. Note that when randomlist wraps &lt;part&gt; elements, that all students will work all parts only if show=“N” where N is the total number of parts wrapped. When N is less than the total number of parts wrapped, there will be gaps in the assessment chart, and also in the table of submissions for each student, corresponding to those parts which are never available to that particular student.
1.1       damieng  4681:       </xs:documentation>
                   4682:     </xs:annotation>
                   4683:     <xs:attribute name="show" type="int-or-perl">
                   4684:       <xs:annotation>
                   4685:         <xs:documentation>
                   4686:           Maximum Tags to Show
                   4687:         </xs:documentation>
                   4688:       </xs:annotation>
                   4689:     </xs:attribute>
                   4690:   </xs:complexType>
                   4691:   <xs:complexType name="randomlist-with-parts">
                   4692:     <xs:complexContent>
                   4693:       <xs:extension base="randomlist-base">
                   4694:         <xs:choice maxOccurs="unbounded" minOccurs="0">
                   4695:           <xs:element ref="part"/>
                   4696:           <xs:group ref="responses"/>
                   4697:           <xs:element ref="img"/>
                   4698:           <xs:element ref="postanswerdate"/>
                   4699:           <xs:element ref="preduedate"/>
                   4700:           <xs:element name="block" type="block-with-parts"/>
                   4701:           <xs:element ref="while"/>
                   4702:           <xs:element name="problemtype" type="problemtype-with-parts"/>
                   4703:           <xs:element ref="window"/>
                   4704:           <xs:element ref="display"/>
                   4705:           <xs:element ref="gnuplot"/>
                   4706:           <xs:element ref="organicstructure"/>
                   4707:           <xs:element ref="instructorcomment"/>
                   4708:           <xs:element ref="drawimage"/>
                   4709:           <xs:element ref="import"/>
                   4710:           
                   4711:           <xs:element name="section" type="section-with-parts"/>
                   4712:           <xs:element name="ul" type="ul-with-parts"/>
                   4713:           <xs:element name="ol" type="ol-with-parts"/>
                   4714:           <xs:element name="table" type="table-with-parts"/>
                   4715:           <xs:element name="dl" type="dl-with-parts"/>
                   4716:           <xs:element ref="object"/>
                   4717:           <xs:element ref="applet"/>
                   4718:           <xs:element ref="embed"/>
                   4719:           <xs:element ref="video"/>
                   4720:           <xs:element ref="audio"/>
                   4721:           <xs:element ref="canvas"/>
                   4722:           <xs:element ref="form"/>
                   4723:           <xs:element ref="iframe"/>
                   4724:         </xs:choice>
                   4725:       </xs:extension>
                   4726:     </xs:complexContent>
                   4727:   </xs:complexType>
                   4728:   <xs:complexType name="randomlist-with-responses">
                   4729:     <xs:complexContent>
                   4730:       <xs:extension base="randomlist-base">
                   4731:         <xs:choice maxOccurs="unbounded" minOccurs="0">
                   4732:           <xs:group ref="responses"/>
                   4733:           <xs:element ref="img"/>
                   4734:           <xs:element ref="postanswerdate"/>
                   4735:           <xs:element ref="preduedate"/>
                   4736:           <xs:element name="block" type="block-with-responses"/>
                   4737:           <xs:element ref="while"/>
                   4738:           <xs:element name="problemtype" type="problemtype-with-responses"/>
                   4739:           <xs:element ref="window"/>
                   4740:           <xs:element ref="display"/>
                   4741:           <xs:element ref="gnuplot"/>
                   4742:           <xs:element ref="organicstructure"/>
                   4743:           <xs:element ref="instructorcomment"/>
                   4744:           <xs:element ref="drawimage"/>
                   4745:           <xs:element ref="import"/>
                   4746:           
                   4747:           <xs:element name="section" type="section-with-responses"/>
                   4748:           <xs:element name="ul" type="ul-with-responses"/>
                   4749:           <xs:element name="ol" type="ol-with-responses"/>
                   4750:           <xs:element name="table" type="table-with-responses"/>
                   4751:           <xs:element name="dl" type="dl-with-responses"/>
                   4752:           <xs:element ref="object"/>
                   4753:           <xs:element ref="applet"/>
                   4754:           <xs:element ref="embed"/>
                   4755:           <xs:element ref="video"/>
                   4756:           <xs:element ref="audio"/>
                   4757:           <xs:element ref="canvas"/>
                   4758:           <xs:element ref="form"/>
                   4759:           <xs:element ref="iframe"/>
                   4760:         </xs:choice>
                   4761:       </xs:extension>
                   4762:     </xs:complexContent>
                   4763:   </xs:complexType>
                   4764:   <xs:complexType name="randomlist-with-text">
                   4765:     <xs:complexContent>
                   4766:       <xs:extension base="randomlist-base">
                   4767:         <xs:choice maxOccurs="unbounded" minOccurs="0">
                   4768:           <xs:element ref="img"/>
                   4769:           <xs:element ref="postanswerdate"/>
                   4770:           <xs:element ref="preduedate"/>
                   4771:           <xs:element name="block" type="block-with-text"/>
                   4772:           <xs:element ref="while"/>
                   4773:           <xs:element name="problemtype" type="problemtype-with-text"/>
                   4774:           <xs:element ref="window"/>
                   4775:           <xs:element ref="display"/>
                   4776:           <xs:element ref="gnuplot"/>
                   4777:           <xs:element ref="organicstructure"/>
                   4778:           <xs:element ref="instructorcomment"/>
                   4779:           <xs:element ref="drawimage"/>
                   4780:           <xs:element ref="import"/>
                   4781:           
                   4782:           <xs:element name="section" type="section-with-text"/>
                   4783:           <xs:element name="ul" type="ul-with-text"/>
                   4784:           <xs:element name="ol" type="ol-with-text"/>
                   4785:           <xs:element name="table" type="table-with-text"/>
                   4786:           <xs:element name="dl" type="dl-with-text"/>
                   4787:           <xs:element ref="object"/>
                   4788:           <xs:element ref="applet"/>
                   4789:           <xs:element ref="embed"/>
                   4790:           <xs:element ref="video"/>
                   4791:           <xs:element ref="audio"/>
                   4792:           <xs:element ref="canvas"/>
                   4793:           <xs:element ref="form"/>
                   4794:           <xs:element ref="iframe"/>
                   4795:         </xs:choice>
                   4796:       </xs:extension>
                   4797:     </xs:complexContent>
                   4798:   </xs:complexType>
                   4799:   <xs:element name="languageblock">
                   4800:     <xs:annotation>
                   4801:       <xs:documentation>
                   4802:         This declares the intent to provide content that can be rendered in the set of languages in the include specification but not in the exclude specification. If a currently preferred language is in the include list the content in the &lt;languageblock&gt;...&lt;/languageblock&gt; is rendered If the currently preferred language is in the exclude list, the content in the &lt;languageblock&gt;..&lt;/languageblock is not rendered.
                   4803:       </xs:documentation>
                   4804:     </xs:annotation>
                   4805:     <xs:complexType mixed="true">
                   4806:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   4807:         <xs:group ref="text-only"/>
                   4808:       </xs:choice>
                   4809:       <xs:attribute name="include" type="xs:string"/>
                   4810:       <xs:attribute name="exclude" type="xs:string"/>
                   4811:     </xs:complexType>
                   4812:   </xs:element>
                   4813:   <xs:element name="translated">
                   4814:     <xs:annotation>
                   4815:       <xs:documentation>
                   4816:         &lt;translated&gt; starts a block of a resource that has multiple translations.
1.5       damieng  4817:         See the &lt;lang&gt; element as well.
1.1       damieng  4818:         When &lt;/translated&gt; is encountered if there is a translation for the currently preferred language, that is rendered inthe web/tex/webgrade targets. Otherwise, the default text is rendered.
                   4819:         Note that &lt;lang&gt; is only registered for the duration of the &lt;translated&gt;...&lt;/translated&gt; block.
                   4820:       </xs:documentation>
                   4821:     </xs:annotation>
                   4822:     <xs:complexType mixed="true">
                   4823:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   4824:         <xs:group ref="text-only"/>
                   4825:         <xs:element ref="lang"/>
                   4826:       </xs:choice>
                   4827:     </xs:complexType>
                   4828:   </xs:element>
                   4829:   <xs:element name="lang">
                   4830:     <xs:annotation>
                   4831:       <xs:documentation>
1.5       damieng  4832:         Specifies that the block contained within it is a translation for a specific language specified by the 'which' attribute. The 'other' attribute can be used by itself or in conjunction with which to specify this element _may_ be used as a translation for some list of languages. e.g.:
1.1       damieng  4833:         &lt;lang which='senisoUS' other='senisoCA,senisoAU,seniso'&gt;
                   4834:         specifying that the block provides a translation for US (primary) Canadian, Australian and UK English.
                   4835:       </xs:documentation>
                   4836:     </xs:annotation>
                   4837:     <xs:complexType mixed="true">
                   4838:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   4839:         <xs:group ref="text-only"/>
                   4840:       </xs:choice>
                   4841:       <xs:attribute name="which" type="xs:string"/>
                   4842:       <xs:attribute name="other" type="xs:string"/>
                   4843:     </xs:complexType>
                   4844:   </xs:element>
                   4845:   <xs:element name="window">
                   4846:     <xs:annotation>
                   4847:       <xs:documentation>
                   4848:         Text In Separate Window
                   4849:         
                   4850:         This creates a link that when clicked shows the intervening information in a pop-up window. By default the window will be 500 pixels wide and 200 pixels tall, and the link text will be a superscript * (so as to look like a footnote). These can be changed using the attributes.
                   4851:         When printing, the included text will get turned into a real footnote.
                   4852:       </xs:documentation>
                   4853:     </xs:annotation>
                   4854:     <xs:complexType mixed="true">
                   4855:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   4856:         <xs:group ref="text-only"/>
                   4857:         <xs:group ref="inserts"/>
                   4858:       </xs:choice>
                   4859:       <xs:attribute name="linktext" type="xs:string">
                   4860:         <xs:annotation>
                   4861:           <xs:documentation>
                   4862:             Text of Link
                   4863:           </xs:documentation>
                   4864:         </xs:annotation>
                   4865:       </xs:attribute>
                   4866:       <xs:attribute default="200" name="height" type="int-or-perl"/>
                   4867:       <xs:attribute default="500" name="width" type="int-or-perl"/>
                   4868:       <xs:attribute name="printtext" type="xs:string">
                   4869:         <xs:annotation>
                   4870:           <xs:documentation>
                   4871:             Printed text (optional)
                   4872:           </xs:documentation>
                   4873:         </xs:annotation>
                   4874:       </xs:attribute>
                   4875:     </xs:complexType>
                   4876:   </xs:element>
                   4877:   <xs:element name="windowlink">
                   4878:     <xs:annotation>
                   4879:       <xs:documentation>
                   4880:         This creates a link to a resource that comes up in a pop-up window.
                   4881:         The link will be the intervening information between the start and the end tag.
                   4882:         By default the window will be 500 pixels wide and 200 pixels tall.
                   4883:       </xs:documentation>
                   4884:     </xs:annotation>
                   4885:     <xs:complexType mixed="true">
                   4886:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   4887:         <xs:group ref="text-only"/>
                   4888:       </xs:choice>
                   4889:       <xs:attribute name="href" type="xs:anyURI"/>
                   4890:       <xs:attribute name="height" type="int-or-perl">
                   4891:         <xs:annotation>
                   4892:           <xs:documentation>
                   4893:             starting height of the popup window
                   4894:           </xs:documentation>
                   4895:         </xs:annotation>
                   4896:       </xs:attribute>
                   4897:       <xs:attribute name="width" type="int-or-perl">
                   4898:         <xs:annotation>
                   4899:           <xs:documentation>
                   4900:             starting width of the popup window
                   4901:           </xs:documentation>
                   4902:         </xs:annotation>
                   4903:       </xs:attribute>
                   4904:     </xs:complexType>
                   4905:   </xs:element>
                   4906:   <xs:element name="togglebox">
                   4907:     <xs:annotation>
                   4908:       <xs:documentation>
                   4909:         This creates a toggling box that can be clicked open and close.
                   4910:         When printing, the included text will be rendered in a visible box.
                   4911:       </xs:documentation>
                   4912:     </xs:annotation>
                   4913:     <xs:complexType mixed="true">
                   4914:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   4915:         <xs:group ref="text-only"/>
                   4916:       </xs:choice>
                   4917:       <xs:attribute name="heading" type="xs:string">
                   4918:         <xs:annotation>
                   4919:           <xs:documentation>
                   4920:             heading text of the box, by default no heading
                   4921:           </xs:documentation>
                   4922:         </xs:annotation>
                   4923:       </xs:attribute>
                   4924:       <xs:attribute name="headerbg" type="xs:string">
                   4925:         <xs:annotation>
                   4926:           <xs:documentation>
                   4927:             background color of the header, by default white
                   4928:           </xs:documentation>
                   4929:         </xs:annotation>
                   4930:       </xs:attribute>
                   4931:       <xs:attribute name="showtext" type="xs:string">
                   4932:         <xs:annotation>
                   4933:           <xs:documentation>
                   4934:             the text that appears to make the box visible, by default the translation of ’show’
                   4935:           </xs:documentation>
                   4936:         </xs:annotation>
                   4937:       </xs:attribute>
                   4938:       <xs:attribute name="hidetext" type="xs:string">
                   4939:         <xs:annotation>
                   4940:           <xs:documentation>
                   4941:             the text that appears to hide the box again, by default the translation of ’hide’
                   4942:           </xs:documentation>
                   4943:         </xs:annotation>
                   4944:       </xs:attribute>
                   4945:     </xs:complexType>
                   4946:   </xs:element>
                   4947:   <xs:element name="instructorcomment">
                   4948:     <xs:annotation>
                   4949:       <xs:documentation>
                   4950:         Comment that is hidden if form.instructor_comments='hide'.
                   4951:       </xs:documentation>
                   4952:     </xs:annotation>
                   4953:     <xs:complexType mixed="true">
                   4954:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   4955:         <xs:group ref="text-only"/>
                   4956:       </xs:choice>
                   4957:     </xs:complexType>
                   4958:   </xs:element>
                   4959:   <xs:element name="comment">
                   4960:     <xs:annotation>
                   4961:       <xs:documentation>
                   4962:         Allows one to comment out sections of code in a balanced manner, or to provide a comment description of how a problem works.
                   4963:         The content is ignored.
                   4964:       </xs:documentation>
                   4965:     </xs:annotation>
                   4966:     <xs:complexType mixed="true">
                   4967:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   4968:         <xs:element ref="part"/>
                   4969:         <xs:group ref="text-with-responses"/>
                   4970:       </xs:choice>
                   4971:     </xs:complexType>
                   4972:   </xs:element>
                   4973:   <xs:element name="organicstructure">
                   4974:     <xs:annotation>
                   4975:       <xs:documentation>Organic Structure</xs:documentation>
                   4976:     </xs:annotation>
                   4977:     <xs:complexType>
                   4978:       <xs:attribute name="width" type="int-or-perl">
                   4979:         <xs:annotation>
                   4980:           <xs:documentation>
                   4981:             Width (pixels)
                   4982:           </xs:documentation>
                   4983:         </xs:annotation>
                   4984:       </xs:attribute>
                   4985:       <xs:attribute name="texwidth" type="decimal-or-perl">
                   4986:         <xs:annotation>
                   4987:           <xs:documentation>
                   4988:             TeXwidth (mm)
                   4989:           </xs:documentation>
                   4990:         </xs:annotation>
                   4991:       </xs:attribute>
                   4992:       <xs:attribute name="molecule" type="xs:string" use="required">
                   4993:         <xs:annotation>
                   4994:           <xs:documentation>
                   4995:             JME string
                   4996:           </xs:documentation>
                   4997:         </xs:annotation>
                   4998:       </xs:attribute>
                   4999:       <xs:attribute default="reaction" name="options">
                   5000:         <xs:simpleType>
                   5001:           <xs:union memberTypes="perl">
                   5002:             <xs:simpleType>
                   5003:               <xs:restriction base="xs:string">
                   5004:                 <xs:enumeration value="reaction"/>
                   5005:                 <xs:enumeration value="border"/>
                   5006:               </xs:restriction>
                   5007:             </xs:simpleType>
                   5008:           </xs:union>
                   5009:         </xs:simpleType>
                   5010:       </xs:attribute>
                   5011:     </xs:complexType>
                   5012:   </xs:element>
                   5013:   <xs:element name="drawimage">
                   5014:     <xs:annotation>
                   5015:       <xs:documentation>
                   5016:         Draws an image with the specified objects using pixel coordinates (text, line, rectangle, arc, fill, polygon, image).
                   5017:       </xs:documentation>
                   5018:     </xs:annotation>
                   5019:     <xs:complexType>
                   5020:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   5021:         <xs:element name="text">
                   5022:           <xs:complexType mixed="true">
                   5023:             <xs:attribute name="x" type="int-or-perl" use="required"/>
                   5024:             <xs:attribute name="y" type="int-or-perl" use="required"/>
                   5025:             <xs:attribute name="font" type="xs:string"/>
                   5026:             <xs:attribute name="color" type="xs:string"/>
                   5027:             <xs:attribute name="direction" type="xs:string"/>
                   5028:           </xs:complexType>
                   5029:         </xs:element>
                   5030:         <xs:element name="line">
                   5031:           <xs:complexType>
                   5032:             <xs:attribute name="x1" type="int-or-perl" use="required"/>
                   5033:             <xs:attribute name="y1" type="int-or-perl" use="required"/>
                   5034:             <xs:attribute name="x2" type="int-or-perl" use="required"/>
                   5035:             <xs:attribute name="y2" type="int-or-perl" use="required"/>
                   5036:             <xs:attribute name="color" type="xs:string"/>
                   5037:             <xs:attribute name="thickness" type="int-or-perl"/>
                   5038:           </xs:complexType>
                   5039:         </xs:element>
                   5040:         <xs:element name="rectangle">
                   5041:           <xs:complexType>
                   5042:             <xs:attribute name="x1" type="int-or-perl" use="required"/>
                   5043:             <xs:attribute name="y1" type="int-or-perl" use="required"/>
                   5044:             <xs:attribute name="x2" type="int-or-perl" use="required"/>
                   5045:             <xs:attribute name="y2" type="int-or-perl" use="required"/>
                   5046:             <xs:attribute name="color" type="xs:string"/>
                   5047:             <xs:attribute name="thickness" type="int-or-perl"/>
                   5048:             <xs:attribute name="filled" type="xs:string"/>
                   5049:           </xs:complexType>
                   5050:         </xs:element>
                   5051:         <xs:element name="arc">
                   5052:           <xs:complexType>
                   5053:             <xs:attribute name="x" type="int-or-perl" use="required"/>
                   5054:             <xs:attribute name="y" type="int-or-perl" use="required"/>
                   5055:             <xs:attribute name="width" type="int-or-perl" use="required"/>
                   5056:             <xs:attribute name="height" type="int-or-perl" use="required"/>
                   5057:             <xs:attribute name="start" type="real-or-perl"/>
                   5058:             <xs:attribute name="end" type="real-or-perl"/>
                   5059:             <xs:attribute name="color" type="xs:string"/>
                   5060:             <xs:attribute name="thickness" type="int-or-perl"/>
                   5061:             <xs:attribute name="filled" type="xs:string"/>
                   5062:           </xs:complexType>
                   5063:         </xs:element>
                   5064:         <xs:element name="fill">
                   5065:           <xs:complexType>
                   5066:             <xs:attribute name="x" type="int-or-perl" use="required"/>
                   5067:             <xs:attribute name="y" type="int-or-perl" use="required"/>
                   5068:             <xs:attribute name="color" type="xs:string"/>
                   5069:           </xs:complexType>
                   5070:         </xs:element>
                   5071:         <xs:element name="polygon">
                   5072:           <xs:complexType>
                   5073:             <xs:choice maxOccurs="unbounded">
                   5074:               <xs:element name="point">
                   5075:                 <xs:complexType>
                   5076:                   <xs:attribute name="x" type="int-or-perl" use="required"/>
                   5077:                   <xs:attribute name="y" type="int-or-perl" use="required"/>
                   5078:                 </xs:complexType>
                   5079:               </xs:element>
                   5080:             </xs:choice>
                   5081:             <xs:attribute name="color" type="xs:string"/>
                   5082:             <xs:attribute name="filled" type="xs:string"/>
                   5083:             <xs:attribute name="open" type="xs:string"/>
                   5084:             <xs:attribute name="thickness" type="int-or-perl"/>
                   5085:           </xs:complexType>
                   5086:         </xs:element>
                   5087:         <xs:element name="image">
                   5088:           <xs:complexType>
                   5089:             <xs:simpleContent>
                   5090:               <xs:extension base="xs:anyURI">
                   5091:                 <xs:attribute name="x" type="int-or-perl" use="required"/>
                   5092:                 <xs:attribute name="y" type="int-or-perl" use="required"/>
                   5093:                 <xs:attribute name="clipx" type="int-or-perl"/>
                   5094:                 <xs:attribute name="clipy" type="int-or-perl"/>
                   5095:                 <xs:attribute name="clipwidth" type="int-or-perl"/>
                   5096:                 <xs:attribute name="clipheight" type="int-or-perl"/>
                   5097:                 <xs:attribute name="scaledwidth" type="int-or-perl"/>
                   5098:                 <xs:attribute name="scaledheight" type="int-or-perl"/>
                   5099:                 <xs:attribute name="transparent" type="xs:string"/>
                   5100:               </xs:extension>
                   5101:             </xs:simpleContent>
                   5102:           </xs:complexType>
                   5103:         </xs:element>
                   5104:       </xs:choice>
                   5105:       <xs:attribute default="300" name="width" type="int-or-perl"/>
                   5106:       <xs:attribute default="300" name="height" type="int-or-perl"/>
                   5107:       <xs:attribute name="bgcolor" type="xs:string"/>
                   5108:     </xs:complexType>
                   5109:   </xs:element>
                   5110:   
                   5111:   <xs:annotation>
                   5112:     <xs:documentation>
                   5113:       Non-HTML inline elements mixed with text
                   5114:     </xs:documentation>
                   5115:   </xs:annotation>
                   5116:   <xs:element name="display" type="xs:string">
                   5117:     <xs:annotation>
                   5118:       <xs:documentation>
                   5119:         Display Script Result Block
                   5120:         
1.5       damieng  5121:         The intervening Perl script is evaluated in the safe space and the return value of the script replaces the entire element.
1.1       damieng  5122:       </xs:documentation>
                   5123:     </xs:annotation>
                   5124:   </xs:element>
                   5125:   <xs:element name="m">
                   5126:     <xs:annotation>
                   5127:       <xs:documentation>
                   5128:         The inside text is LaTeX, and is converted to HTML (or MathML) on the fly.
                   5129:         This element is normally used for math, and the text should start and end with either $ or $$.
                   5130:       </xs:documentation>
                   5131:     </xs:annotation>
                   5132:     <xs:complexType mixed="true">
                   5133:       <xs:attribute name="display" type="xs:string">
                   5134:         <xs:annotation>
                   5135:           <xs:documentation>
                   5136:             Option to force the math rendering for this element.
                   5137:           </xs:documentation>
                   5138:         </xs:annotation>
                   5139:       </xs:attribute>
                   5140:       <xs:attribute default="off" name="eval" type="onoff-or-perl">
                   5141:         <xs:annotation>
                   5142:           <xs:documentation>
                   5143:             Perl variables inside the element will be evaluated if this attribute value is "on".
                   5144:           </xs:documentation>
                   5145:         </xs:annotation>
                   5146:       </xs:attribute>
                   5147:     </xs:complexType>
                   5148:   </xs:element>
                   5149:   <xs:element name="lm">
                   5150:     <xs:annotation>
                   5151:       <xs:documentation>
                   5152:         Inline math with the LON-CAPA syntax (use &lt;m&gt; for LaTeX math).
                   5153:         Perl variables are evaluated.
                   5154:         The expression is interpreted with implicit operators (for multiplication or units).
                   5155:       </xs:documentation>
                   5156:     </xs:annotation>
                   5157:     <xs:complexType>
                   5158:       <xs:simpleContent>
                   5159:         <xs:extension base="xs:string">
                   5160:           <xs:attribute default="symbols" name="mode">
                   5161:             <xs:annotation>
                   5162:               <xs:documentation>
                   5163:                 In symbols mode, names are interpreted as constants or variables.
                   5164:                 In units mode, names are interpreted as constants or units.
                   5165:               </xs:documentation>
                   5166:             </xs:annotation>
                   5167:             <xs:simpleType>
                   5168:               <xs:restriction base="xs:string">
                   5169:                 <xs:enumeration value="symbols"/>
                   5170:                 <xs:enumeration value="units"/>
                   5171:               </xs:restriction>
                   5172:             </xs:simpleType>
                   5173:           </xs:attribute>
                   5174:         </xs:extension>
                   5175:       </xs:simpleContent>
                   5176:     </xs:complexType>
                   5177:   </xs:element>
                   5178:   <xs:element name="num">
                   5179:     <xs:annotation>
                   5180:       <xs:documentation>
                   5181:         Typesets a number formatted in scientific notation, fixed point, fixed point with commas, fixed point with commas and dollar sign, or in significant digits.
                   5182:         
                   5183:         &lt;num format="2E"&gt;31454678&lt;/num&gt; results in 3.15 x 10^7
                   5184:         &lt;num format="2f"&gt;31454678&lt;/num&gt; results in 31454678.00
                   5185:         &lt;num format="4g"&gt;31454678&lt;/num&gt; results in 3.145 x 10^7
                   5186:         &lt;num format="4g"&gt;314.54678&lt;/num&gt; results in 314.5
                   5187:         &lt;num format=",2f"&gt;31454678&lt;/num&gt; results in 31,454,678.00
                   5188:         &lt;num format="$2f"&gt;31454678&lt;/num&gt; results in $31,454,678.00
                   5189:         &lt;num format="2s"&gt;31454678&lt;/num&gt; results in 31000000
                   5190:         &lt;num format=",2s"&gt;31454678&lt;/num&gt; results in 31,000,000
                   5191:       </xs:documentation>
                   5192:     </xs:annotation>
                   5193:     <xs:complexType mixed="true">
                   5194:       <xs:attribute name="format" type="xs:string"/>
                   5195:     </xs:complexType>
                   5196:   </xs:element>
                   5197:   <xs:element name="algebra">
                   5198:     <xs:annotation>
                   5199:       <xs:documentation>
                   5200:         Typesets algebraic expressions.
                   5201:         Expressions are displayed using the math expression display mechanism defined in the user’s preferences. The default is tth.
                   5202:       </xs:documentation>
                   5203:     </xs:annotation>
                   5204:     <xs:complexType mixed="true">
                   5205:       <xs:attribute name="style" type="xs:string"/>
1.6       damieng  5206:       <xs:attribute name="display" type="xs:string">
                   5207:         <xs:annotation>
                   5208:           <xs:documentation>
                   5209:             Option to force the math rendering for this element.
                   5210:           </xs:documentation>
                   5211:         </xs:annotation>
                   5212:       </xs:attribute>
1.1       damieng  5213:     </xs:complexType>
                   5214:   </xs:element>
                   5215:   <xs:element name="chem" type="xs:string">
                   5216:     <xs:annotation>
                   5217:       <xs:documentation>
                   5218:         Typesets chemical equation
                   5219:       </xs:documentation>
                   5220:     </xs:annotation>
                   5221:   </xs:element>
                   5222:   <xs:element name="parse" type="xs:string">
                   5223:     <xs:annotation>
                   5224:       <xs:documentation>
                   5225:         Evaluates the Perl content, then parses it as if it was part of the XML document and displays the result.
                   5226:         
                   5227:         Warning: using this element (or the xmlparse function) will reduce the document future interoperability, because dynamically generated XML cannot be automatically converted.
                   5228:       </xs:documentation>
                   5229:     </xs:annotation>
                   5230:   </xs:element>
                   5231:   <xs:element name="displayweight">
                   5232:     <xs:annotation>
                   5233:       <xs:documentation>
                   5234:         Displays the number of points awarded for this problem or problem part.
                   5235:       </xs:documentation>
                   5236:     </xs:annotation>
                   5237:   </xs:element>
                   5238:   <xs:element name="displaystudentphoto">
                   5239:     <xs:complexType>
                   5240:       <xs:attribute name="width" type="int-or-perl"/>
                   5241:       <xs:attribute name="height" type="int-or-perl"/>
                   5242:       <xs:attribute name="align">
                   5243:         <xs:annotation>
                   5244:           <xs:documentation>
                   5245:             note: this attribute is not supported in HTML5, css should be used instead !
                   5246:           </xs:documentation>
                   5247:         </xs:annotation>
                   5248:         <xs:simpleType>
                   5249:           <xs:union memberTypes="perl">
                   5250:             <xs:simpleType>
                   5251:               <xs:restriction base="xs:string">
                   5252:                 <xs:enumeration value="left"/>
                   5253:                 <xs:enumeration value="right"/>
                   5254:                 <xs:enumeration value="middle"/>
                   5255:                 <xs:enumeration value="top"/>
                   5256:                 <xs:enumeration value="bottom"/>
                   5257:               </xs:restriction>
                   5258:             </xs:simpleType>
                   5259:           </xs:union>
                   5260:         </xs:simpleType>
                   5261:       </xs:attribute>
                   5262:     </xs:complexType>
                   5263:   </xs:element>
                   5264:   
                   5265:   
                   5266:   <xs:annotation>
                   5267:     <xs:documentation>
                   5268:       HTML
                   5269:     </xs:documentation>
                   5270:   </xs:annotation>
                   5271:   <xs:attributeGroup name="coreattrs">
                   5272:     <xs:annotation>
                   5273:       <xs:documentation>
                   5274:         core attributes common to most HTML elements
                   5275:       </xs:documentation>
                   5276:     </xs:annotation>
                   5277:     <xs:attribute name="id" type="xs:ID">
                   5278:       <xs:annotation>
                   5279:         <xs:documentation>
                   5280:           This attribute defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).
                   5281:           
                   5282:           Usage note:
                   5283:           - This attribute's value is an opaque string: this means that web author must not use it to convey any information. Particular meaning, for example semantic meaning, must not be derived from the string.
                   5284:           - This attribute's value must not contain white spaces. Browsers treat non-conforming IDs that contains white spaces as if the white space is part of the ID. In contrast to the class attribute, which allows space-separated values, elements can only have one single ID defined through the id attribute. Note that an element may have several IDs, but the others should be set by another means, such as via a script interfacing with the DOM interface of the element.
                   5285:           - Using characters except ASCII letters and digits, '_', '-' and '.' may cause compatibility problems, as they weren't allowed in HTML 4. Though this restriction has been lifted in HTML 5, an ID should start with a letter for compatibility.
                   5286:         </xs:documentation>
                   5287:       </xs:annotation>
                   5288:     </xs:attribute>
                   5289:     <xs:attribute name="class" type="xs:NMTOKENS">
                   5290:       <xs:annotation>
                   5291:         <xs:documentation>
                   5292:           This attribute is a space-separated list of the classes of the element. Classes allows CSS and Javascript to select and access specific elements via the class selectors or functions like the DOM method document.getElementsByClassName.
                   5293:           
                   5294:           Usage note: Though the specification doesn't put requirements on the name of classes, web developers are encouraged to use names that describe the semantic purpose of the element, rather to the presentation of the element (e.g., attribute to describe an attribute rather than italics, although an element of this class may be presented by italics). Semantic names remain logical even if the presentation of the page changes.
                   5295:         </xs:documentation>
                   5296:       </xs:annotation>
                   5297:     </xs:attribute>
                   5298:     <xs:attribute name="style" type="xs:string">
                   5299:       <xs:annotation>
                   5300:         <xs:documentation>
                   5301:           This attribute contains CSS styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the &lt;style&gt; element have mainly the purpose of allowing for quick styling, for example for testing purposes.
                   5302:           
                   5303:           Usage note: This attribute must not be used to convey semantic information. Even if all styling is removed, a page should remain semantically correct. Typically it shouldn't be used to hide irrelevant information; this should be done using the hidden attribute.
                   5304:         </xs:documentation>
                   5305:       </xs:annotation>
                   5306:     </xs:attribute>
                   5307:   </xs:attributeGroup>
                   5308:   <xs:attributeGroup name="i18n">
                   5309:     <xs:annotation>
                   5310:       <xs:documentation>
                   5311:         internationalization attributes
                   5312:         lang language code (backwards compatible)
                   5313:         xml:lang language code (as per XML 1.0 spec)
                   5314:         dir direction for weak/neutral text
                   5315:       </xs:documentation>
                   5316:     </xs:annotation>
                   5317:     <xs:attribute name="lang" type="xs:language"/>
                   5318:     <xs:attribute ref="xml:lang"/>
                   5319:     <xs:attribute name="dir">
                   5320:       <xs:simpleType>
                   5321:         <xs:restriction base="xs:token">
                   5322:           <xs:enumeration value="ltr"/>
                   5323:           <xs:enumeration value="rtl"/>
                   5324:         </xs:restriction>
                   5325:       </xs:simpleType>
                   5326:     </xs:attribute>
                   5327:   </xs:attributeGroup>
                   5328:   <xs:complexType mixed="true" name="inlineBaseType">
                   5329:     <xs:choice maxOccurs="unbounded" minOccurs="0">
                   5330:       <xs:group ref="inlines"/>
                   5331:     </xs:choice>
                   5332:   </xs:complexType>
                   5333:   <xs:group name="heading">
                   5334:     <xs:choice>
                   5335:       <xs:element ref="h1"/>
                   5336:       <xs:element ref="h2"/>
                   5337:       <xs:element ref="h3"/>
                   5338:       <xs:element ref="h4"/>
                   5339:       <xs:element ref="h5"/>
                   5340:       <xs:element ref="h6"/>
                   5341:     </xs:choice>
                   5342:   </xs:group>
                   5343:   <xs:complexType mixed="true" name="headerContent">
                   5344:     <xs:choice maxOccurs="unbounded" minOccurs="0">
                   5345:       <xs:group ref="inlines"/>
                   5346:     </xs:choice>
                   5347:     <xs:attributeGroup ref="coreattrs"/>
                   5348:     <xs:attribute ref="TeXsize"/>
                   5349:   </xs:complexType>
                   5350:   
                   5351:   <xs:element name="html">
                   5352:     <xs:annotation>
                   5353:       <xs:documentation>
                   5354:         The HTML root element (&lt;html&gt;) represents the root of an HTML document.
                   5355:       </xs:documentation>
                   5356:     </xs:annotation>
                   5357:     <xs:complexType>
                   5358:       <xs:sequence>
                   5359:         <xs:element ref="head"/>
                   5360:         <xs:element ref="body"/>
                   5361:       </xs:sequence>
                   5362:       <xs:attributeGroup ref="i18n"/>
                   5363:       <xs:attribute name="id" type="xs:ID"/>
                   5364:     </xs:complexType>
                   5365:   </xs:element>
                   5366:   <xs:group name="head.misc">
                   5367:     <xs:sequence>
                   5368:       <xs:choice maxOccurs="unbounded" minOccurs="0">
1.7     ! damieng  5369:         <xs:element ref="script"/>
1.1       damieng  5370:         <xs:element ref="style"/>
                   5371:         <xs:element name="meta" type="htmlMeta">
                   5372:           <xs:annotation>
                   5373:             <xs:documentation>
                   5374:               generic metainformation
                   5375:             </xs:documentation>
                   5376:           </xs:annotation>
                   5377:         </xs:element>
                   5378:         <xs:element ref="link"/>
                   5379:         <xs:element ref="import"/>
                   5380:       </xs:choice>
                   5381:     </xs:sequence>
                   5382:   </xs:group>
                   5383:   <xs:element name="head">
                   5384:     <xs:annotation>
                   5385:       <xs:documentation>
                   5386:         The HTML Head Element (&lt;head&gt;) provides general information (metadata) about the document, including its title and links to or definitions of scripts and style sheets.
                   5387:       </xs:documentation>
                   5388:     </xs:annotation>
                   5389:     <xs:complexType>
                   5390:       <xs:sequence>
                   5391:         <xs:group ref="head.misc"/>
                   5392:         <xs:choice>
                   5393:           <xs:sequence>
                   5394:             <xs:element ref="title"/>
                   5395:             <xs:group ref="head.misc"/>
                   5396:             <xs:sequence minOccurs="0">
                   5397:               <xs:element ref="base"/>
                   5398:               <xs:group ref="head.misc"/>
                   5399:             </xs:sequence>
                   5400:           </xs:sequence>
                   5401:           <xs:sequence>
                   5402:             <xs:element ref="base"/>
                   5403:             <xs:group ref="head.misc"/>
                   5404:             <xs:element ref="title"/>
                   5405:             <xs:group ref="head.misc"/>
                   5406:           </xs:sequence>
                   5407:         </xs:choice>
                   5408:       </xs:sequence>
                   5409:       <xs:attributeGroup ref="i18n"/>
                   5410:       <xs:attribute name="id" type="xs:ID"/>
                   5411:       <xs:attribute name="profile" type="xs:anyURI">
                   5412:         <xs:annotation>
                   5413:           <xs:documentation>
                   5414:             The URIs of one or more metadata profiles, separated by white space.
                   5415:             
                   5416:             This attribute is obsolete in HTML5.
                   5417:           </xs:documentation>
                   5418:         </xs:annotation>
                   5419:       </xs:attribute>
                   5420:     </xs:complexType>
                   5421:   </xs:element>
                   5422:   <xs:element name="title">
                   5423:     <xs:annotation>
                   5424:       <xs:documentation>
                   5425:         The title element is not considered part of the flow of text.
                   5426:         It should be displayed, for example as the page header or
                   5427:         window title. Exactly one title is required per document.
                   5428:       </xs:documentation>
                   5429:     </xs:annotation>
                   5430:     <xs:complexType mixed="true">
                   5431:       <xs:attributeGroup ref="i18n"/>
                   5432:       <xs:attribute name="id" type="xs:ID"/>
                   5433:     </xs:complexType>
                   5434:   </xs:element>
                   5435:   <xs:element name="base">
                   5436:     <xs:annotation>
                   5437:       <xs:documentation>
                   5438:         Document base URI
                   5439:       </xs:documentation>
                   5440:     </xs:annotation>
                   5441:     <xs:complexType>
                   5442:       <xs:attribute name="href" type="xs:anyURI" use="required"/>
                   5443:       <xs:attribute name="id" type="xs:ID"/>
                   5444:     </xs:complexType>
                   5445:   </xs:element>
                   5446:   <xs:complexType name="htmlMeta">
                   5447:     <xs:attributeGroup ref="i18n"/>
                   5448:     <xs:attribute name="id" type="xs:ID"/>
                   5449:     <xs:attribute name="http-equiv">
                   5450:       <xs:annotation>
                   5451:         <xs:documentation>
                   5452:           This enumerated attribute defines the pragma that can alter servers and user-agents behavior. The value of the pragma is defined using the content and can be one of the following: 
                   5453:           - content-language (obsolete)
                   5454:           - content-type (obsolete)
                   5455:           - default-style
                   5456:           - refresh
                   5457:           - set-cookie (obsolete)
                   5458:         </xs:documentation>
                   5459:       </xs:annotation>
                   5460:     </xs:attribute>
                   5461:     <xs:attribute name="name">
                   5462:       <xs:annotation>
                   5463:         <xs:documentation>
                   5464:           This attribute defines the name of a document-level metadata. It should not be set if one of the attributes itemprop, http-equiv or charset is also set.
                   5465:         </xs:documentation>
                   5466:       </xs:annotation>
                   5467:     </xs:attribute>
                   5468:     <xs:attribute name="content" use="required">
                   5469:       <xs:annotation>
                   5470:         <xs:documentation>
                   5471:           This attribute gives the value associated with the http-equiv or name attribute, depending of the context.
                   5472:         </xs:documentation>
                   5473:       </xs:annotation>
                   5474:     </xs:attribute>
                   5475:     <xs:attribute name="scheme">
                   5476:       <xs:annotation>
                   5477:         <xs:documentation>
                   5478:           This attribute defines the scheme in which the metadata is described. A scheme is a context leading to the correct interpretations of the content value, like a format.
                   5479:           
                   5480:           Notes: Do not use this attribute as it is obsolete. There is no replacement for it as there was no real usage for it. Omit it altogether.
                   5481:         </xs:documentation>
                   5482:       </xs:annotation>
                   5483:     </xs:attribute>
                   5484:   </xs:complexType>
                   5485:   <xs:simpleType name="MediaDesc">
                   5486:     <xs:annotation>
                   5487:       <xs:documentation>
                   5488:         Single or comma-separated list of media descriptors
                   5489:       </xs:documentation>
                   5490:     </xs:annotation>
                   5491:     <xs:restriction base="xs:string">
                   5492:       <xs:pattern value="[^,]+(,\s*[^,]+)*"/>
                   5493:     </xs:restriction>
                   5494:   </xs:simpleType>
                   5495:   <xs:element name="link">
                   5496:     <xs:annotation>
                   5497:       <xs:documentation>
                   5498:         The HTML Link Element (&lt;link&gt;) specifies relationships between the current document and external resource. Possible uses for this element include defining a relational framework for navigation. This Element is most used to link to style sheets.
                   5499:       </xs:documentation>
                   5500:     </xs:annotation>
                   5501:     <xs:complexType>
                   5502:       <xs:attribute name="charset" type="xs:string">
                   5503:         <xs:annotation>
                   5504:           <xs:documentation>
                   5505:             This attribute defines the character encoding of the linked resource. The value is a space- and/or comma-delimited list of character sets as defined in RFC 2045. The default value is ISO-8859-1.
                   5506:             
                   5507:             Usage note: This attribute is obsolete in HTML5 and must not be used by authors. To achieve its effect, use the Content-Type: HTTP header on the linked resource.
                   5508:           </xs:documentation>
                   5509:         </xs:annotation>
                   5510:       </xs:attribute>
                   5511:       <xs:attribute name="href" type="xs:anyURI">
                   5512:         <xs:annotation>
                   5513:           <xs:documentation>
                   5514:             This attribute specifies the URL of the linked resource. A URL might be absolute or relative.
                   5515:           </xs:documentation>
                   5516:         </xs:annotation>
                   5517:       </xs:attribute>
                   5518:       <xs:attribute name="hreflang" type="xs:language">
                   5519:         <xs:annotation>
                   5520:           <xs:documentation>
                   5521:             This attribute indicates the language of the linked resource. It is purely advisory. Allowed values are determined by BCP47 for HTML5 and by RFC1766 for HTML 4. Use this attribute only if the href attribute is present.
                   5522:           </xs:documentation>
                   5523:         </xs:annotation>
                   5524:       </xs:attribute>
                   5525:       <xs:attribute name="type" type="xs:string">
                   5526:         <xs:annotation>
                   5527:           <xs:documentation>
                   5528:             This attribute is used to define the type of the content linked to. The value of the attribute should be a MIME type such as text/html, text/css, and so on. The common use of this attribute is to define the type of style sheet linked and the most common current value is text/css, which indicates a Cascading Style Sheet format.
                   5529:           </xs:documentation>
                   5530:         </xs:annotation>
                   5531:       </xs:attribute>
                   5532:       <xs:attribute name="rel" type="xs:NMTOKENS">
                   5533:         <xs:annotation>
                   5534:           <xs:documentation>
                   5535:             This attribute names a relationship of the linked document to the current document. The attribute must be a space-separated list of the link types values. The most common use of this attribute is to specify a link to an external style sheet: the rel attribute is set to stylesheet, and the href attribute is set to the URL of an external style sheet to format the page. WebTV also supports the use of the value next for rel to preload the next page in a document series.
                   5536:           </xs:documentation>
                   5537:         </xs:annotation>
                   5538:       </xs:attribute>
                   5539:       <xs:attribute name="rev" type="xs:NMTOKENS">
                   5540:         <xs:annotation>
                   5541:           <xs:documentation>
                   5542:             The value of this attribute shows the relationship of the current document to the linked document, as defined by the href attribute. The attribute thus defines the reverse relationship compared to the value of the rel attribute. Link types values for the attribute are similar to the possible values for rel.
                   5543:             
                   5544:             Usage note: This attribute is obsolete in HTML5. Do not use it. To achieve its effect, use the rel attribute with the opposite link types values, e.g. made should be replaced by author. Also this attribute doesn't mean revision and must not be used with a version number, which is unfortunately the case on numerous sites.
                   5545:           </xs:documentation>
                   5546:         </xs:annotation>
                   5547:       </xs:attribute>
                   5548:       <xs:attribute name="media" type="MediaDesc">
                   5549:         <xs:annotation>
                   5550:           <xs:documentation>
                   5551:             This attribute specifies the media which the linked resource applies to. Its value must be a media query. This attribute is mainly useful when linking to external stylesheets by allowing the user agent to pick the best adapted one for the device it runs on.
                   5552:             
                   5553:             Usage note:
                   5554:             
                   5555:             - In HTML 4, this can only be a simple white-space-separated list of media description literals, i.e., media types and groups, where defined and allowed as values for this attribute, such as print, screen, aural, braille. HTML5 extended this to any kind of media queries, which are a superset of the allowed values of HTML 4.
                   5556:             
                   5557:             - Browsers not supporting the CSS3 Media Queries won't necessarily recognize the adequate link; do not forget to set fallback links, the restricted set of media queries defined in HTML 4.
                   5558:           </xs:documentation>
                   5559:         </xs:annotation>
                   5560:       </xs:attribute>
                   5561:     </xs:complexType>
                   5562:   </xs:element>
                   5563:   <xs:element name="style">
                   5564:     <xs:annotation>
                   5565:       <xs:documentation>
                   5566:         The HTML &lt;style&gt; element contains style information for a document, or a part of document. The specific style information is contained inside of this element, usually in the CSS.
                   5567:       </xs:documentation>
                   5568:     </xs:annotation>
                   5569:     <xs:complexType mixed="true">
                   5570:       <xs:attributeGroup ref="i18n"/>
                   5571:       <xs:attribute name="id" type="xs:ID"/>
                   5572:       <xs:attribute default="text/css" name="type" type="xs:string"/>
                   5573:       <xs:attribute name="media" type="MediaDesc"/>
                   5574:       <xs:attribute name="title" type="xs:string"/>
                   5575:       <xs:attribute fixed="preserve" ref="xml:space"/>
                   5576:     </xs:complexType>
                   5577:   </xs:element>
1.7     ! damieng  5578:   <xs:element name="script">
1.1       damieng  5579:     <xs:annotation>
                   5580:       <xs:documentation>
1.7     ! damieng  5581:         Perl Script Block or Javascript
        !          5582:         
        !          5583:         If the attribute type is set to “loncapa/perl” the enclosed data is a Perl script which is evaluated inside the Perl safe space. The return value of the script is ignored.
        !          5584:         
1.1       damieng  5585:         The HTML &lt;script&gt; element is used to embed or reference an executable script within an HTML or XHTML document.
                   5586:         
                   5587:         Scripts without async or defer attributes, as well as inline scripts, are fetched and executed immediately, before the browser continues to parse the page.
                   5588:       </xs:documentation>
                   5589:     </xs:annotation>
1.7     ! damieng  5590:     <xs:complexType mixed="true">
        !          5591:       <xs:attribute name="id" type="xs:ID"/>
        !          5592:       <xs:attribute name="charset" type="xs:string"/>
        !          5593:       <xs:attribute name="src" type="xs:anyURI">
        !          5594:         <xs:annotation>
        !          5595:           <xs:documentation>
        !          5596:             This attribute specifies the URI of an external script; this can be used as an alternative to embedding a script directly within a document. script elements with an src attribute specified should not have a script embedded within its tags.
        !          5597:           </xs:documentation>
        !          5598:         </xs:annotation>
        !          5599:       </xs:attribute>
        !          5600:       <xs:attribute default="text/javascript" name="type" type="xs:string">
        !          5601:         <xs:annotation>
        !          5602:           <xs:documentation>
        !          5603:             This attribute identifies the scripting language of code embedded within a script element or referenced via the element’s src attribute. This is specified as a MIME type; examples of supported MIME types include text/javascript, text/ecmascript, application/javascript, and application/ecmascript.
        !          5604:             
        !          5605:             If the attribute type is set to “loncapa/perl” the enclosed data is a Perl script which is evaluated inside the Perl safe space. The return value of the script is ignored.
        !          5606:           </xs:documentation>
        !          5607:         </xs:annotation>
        !          5608:       </xs:attribute>
        !          5609:       <xs:attribute name="language" type="xs:string">
        !          5610:         <xs:annotation>
        !          5611:           <xs:documentation>
        !          5612:             Like the type attribute, this attribute identifies the scripting language in use. Unlike the type attribute, however, this attribute’s possible values were never standardized. The type attribute should be used instead.
        !          5613:           </xs:documentation>
        !          5614:         </xs:annotation>
        !          5615:       </xs:attribute>
        !          5616:       <xs:attribute name="defer">
        !          5617:         <xs:annotation>
        !          5618:           <xs:documentation>
        !          5619:             This Boolean attribute is set to indicate to a browser that the script is meant to be executed after the document has been parsed. Since this feature hasn't yet been implemented by all other major browsers, authors should not assume that the script’s execution will actually be deferred. The defer attribute shouldn't be used on scripts that don't have the src attribute. Since Gecko 1.9.2, the defer attribute is ignored on scripts that don't have the src attribute. However, in Gecko 1.9.1 even inline scripts are deferred if the defer attribute is set.
        !          5620:           </xs:documentation>
        !          5621:         </xs:annotation>
        !          5622:         <xs:simpleType>
        !          5623:           <xs:restriction base="xs:token">
        !          5624:             <xs:enumeration value="defer"/>
        !          5625:           </xs:restriction>
        !          5626:         </xs:simpleType>
        !          5627:       </xs:attribute>
        !          5628:       <xs:attribute name="async">
        !          5629:         <xs:annotation>
        !          5630:           <xs:documentation>
        !          5631:             HTML5 only.
        !          5632:             Set this Boolean attribute to indicate that the browser should, if possible, execute the script asynchronously. It has no effect on inline scripts (i.e., scripts that don't have the src attribute).
        !          5633:           </xs:documentation>
        !          5634:         </xs:annotation>
        !          5635:         <xs:simpleType>
        !          5636:           <xs:restriction base="xs:token">
        !          5637:             <xs:enumeration value="async"/>
        !          5638:           </xs:restriction>
        !          5639:         </xs:simpleType>
        !          5640:       </xs:attribute>
        !          5641:       <xs:attribute fixed="preserve" ref="xml:space"/>
        !          5642:     </xs:complexType>
        !          5643:   </xs:element>
1.1       damieng  5644:   <xs:element name="noscript">
                   5645:     <xs:annotation>
                   5646:       <xs:documentation>
                   5647:         Alternate content container for non script-based rendering.
                   5648:       </xs:documentation>
                   5649:     </xs:annotation>
                   5650:     <xs:complexType mixed="true">
                   5651:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   5652:         <xs:group ref="blocks-with-text"/>
                   5653:       </xs:choice>
                   5654:     </xs:complexType>
                   5655:   </xs:element>
                   5656:   <xs:element name="body">
                   5657:     <xs:annotation>
                   5658:       <xs:documentation>
                   5659:         The HTML &lt;body&gt; element represents the content of an HTML document. There is only one &lt;body&gt; element in a document.
                   5660:       </xs:documentation>
                   5661:     </xs:annotation>
                   5662:     <xs:complexType>
                   5663:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   5664:         <xs:group ref="blocks-with-text"/>
                   5665:       </xs:choice>
                   5666:       <xs:attributeGroup ref="coreattrs"/>
                   5667:       <xs:attributeGroup ref="i18n"/>
                   5668:       <xs:attribute name="onload" type="xs:string"/>
                   5669:       <xs:attribute name="onunload" type="xs:string"/>
                   5670:     </xs:complexType>
                   5671:   </xs:element>
                   5672:   <xs:complexType mixed="true" name="section-base">
                   5673:     <xs:annotation>
                   5674:       <xs:documentation>
                   5675:         The HTML Section Element (&lt;section&gt;) represents a generic section of a document, i.e., a thematic grouping of content, typically with a heading. Each &lt;section&gt; should be identified, typically by including a heading (h1-h6 element) as a child of the &lt;section&gt; element.
                   5676:       </xs:documentation>
                   5677:     </xs:annotation>
                   5678:     <xs:attributeGroup ref="coreattrs"/>
                   5679:   </xs:complexType>
                   5680:   <xs:complexType mixed="true" name="section-with-parts">
                   5681:     <xs:complexContent mixed="true">
                   5682:       <xs:extension base="section-base">
                   5683:         <xs:choice maxOccurs="unbounded" minOccurs="0">
                   5684:           <xs:group ref="text-with-parts"/>
                   5685:         </xs:choice>
                   5686:       </xs:extension>
                   5687:     </xs:complexContent>
                   5688:   </xs:complexType>
                   5689:   <xs:complexType mixed="true" name="section-with-responses">
                   5690:     <xs:complexContent mixed="true">
                   5691:       <xs:extension base="section-base">
                   5692:         <xs:choice maxOccurs="unbounded" minOccurs="0">
                   5693:           <xs:group ref="text-with-responses"/>
                   5694:         </xs:choice>
                   5695:       </xs:extension>
                   5696:     </xs:complexContent>
                   5697:   </xs:complexType>
                   5698:   <xs:complexType mixed="true" name="section-with-text">
                   5699:     <xs:complexContent mixed="true">
                   5700:       <xs:extension base="section-base">
                   5701:         <xs:choice maxOccurs="unbounded" minOccurs="0">
                   5702:           <xs:group ref="text-only"/>
                   5703:         </xs:choice>
                   5704:       </xs:extension>
                   5705:     </xs:complexContent>
                   5706:   </xs:complexType>
                   5707:   <xs:element name="header">
                   5708:     <xs:annotation>
                   5709:       <xs:documentation>
                   5710:         The HTML &lt;header&gt; Element represents a group of introductory or navigational aids. It may contain some heading elements but also other elements like a logo, wrapped section's header, a search form, and so on.
                   5711:         
                   5712:         This element should have no &lt;footer&gt; or &lt;header&gt; descendants.
                   5713:       </xs:documentation>
                   5714:     </xs:annotation>
                   5715:     <xs:complexType mixed="true">
                   5716:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   5717:         <xs:group ref="text-only"/>
                   5718:       </xs:choice>
                   5719:     </xs:complexType>
                   5720:   </xs:element>
                   5721:   <xs:element name="footer">
                   5722:     <xs:annotation>
                   5723:       <xs:documentation>
                   5724:         The HTML &lt;footer&gt; Element represents a footer for its nearest sectioning content or sectioning root element (i.e, its nearest parent &lt;article&gt;, &lt;aside&gt;, &lt;nav&gt;, &lt;section&gt;, &lt;blockquote&gt;, &lt;body&gt;, &lt;details&gt;, &lt;fieldset&gt;, &lt;figure&gt;, &lt;td&gt;). A footer typically contains information about the author of the section, copyright data or links to related documents.
                   5725:         
                   5726:         This element should have no &lt;footer&gt; or &lt;header&gt; descendants.
                   5727:       </xs:documentation>
                   5728:     </xs:annotation>
                   5729:     <xs:complexType mixed="true">
                   5730:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   5731:         <xs:group ref="text-only"/>
                   5732:       </xs:choice>
                   5733:     </xs:complexType>
                   5734:   </xs:element>
                   5735:   <xs:element name="aside">
                   5736:     <xs:annotation>
                   5737:       <xs:documentation>
                   5738:         The HTML &lt;aside&gt; element represents a section of the page with content connected tangentially to the rest, which could be considered separate from that content. These sections are often represented as sidebars or inserts. They often contain the definitions on the sidebars, such as definitions from the glossary; there may also be other types of information, such as related advertisements; the biography of the author; web applications; profile information or related links on the blog.
                   5739:       </xs:documentation>
                   5740:     </xs:annotation>
                   5741:     <xs:complexType mixed="true">
                   5742:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   5743:         <xs:group ref="text-only"/>
                   5744:       </xs:choice>
                   5745:     </xs:complexType>
                   5746:   </xs:element>
                   5747:   <xs:element name="h1" type="headerContent">
                   5748:     <xs:annotation>
                   5749:       <xs:documentation>
                   5750:         Level 1 title (most important).
                   5751:         
                   5752:         A heading element briefly describes the topic of the section it introduces. Heading information may be used by user agents, for example, to construct a table of contents for a document automatically.
                   5753:         
                   5754:         Inside HTML5 sections, all the heading elements can be h1 (they don't need to be h1, h2, ...). Web browsers determine the level of the heading based on the depth in the section tree.
                   5755:       </xs:documentation>
                   5756:     </xs:annotation>
                   5757:   </xs:element>
                   5758:   <xs:element name="h2" type="headerContent">
                   5759:     <xs:annotation>
                   5760:       <xs:documentation>
                   5761:         Level 2 title
                   5762:         
                   5763:         A heading element briefly describes the topic of the section it introduces. Heading information may be used by user agents, for example, to construct a table of contents for a document automatically.
                   5764:       </xs:documentation>
                   5765:     </xs:annotation>
                   5766:   </xs:element>
                   5767:   <xs:element name="h3" type="headerContent">
                   5768:     <xs:annotation>
                   5769:       <xs:documentation>
                   5770:         Level 3 title
                   5771:         
                   5772:         A heading element briefly describes the topic of the section it introduces. Heading information may be used by user agents, for example, to construct a table of contents for a document automatically.
                   5773:       </xs:documentation>
                   5774:     </xs:annotation>
                   5775:   </xs:element>
                   5776:   <xs:element name="h4" type="headerContent">
                   5777:     <xs:annotation>
                   5778:       <xs:documentation>
                   5779:         Level 4 title
                   5780:         
                   5781:         A heading element briefly describes the topic of the section it introduces. Heading information may be used by user agents, for example, to construct a table of contents for a document automatically.
                   5782:       </xs:documentation>
                   5783:     </xs:annotation>
                   5784:   </xs:element>
                   5785:   <xs:element name="h5" type="headerContent">
                   5786:     <xs:annotation>
                   5787:       <xs:documentation>
                   5788:         Level 5 title
                   5789:         
                   5790:         A heading element briefly describes the topic of the section it introduces. Heading information may be used by user agents, for example, to construct a table of contents for a document automatically.
                   5791:       </xs:documentation>
                   5792:     </xs:annotation>
                   5793:   </xs:element>
                   5794:   <xs:element name="h6" type="headerContent">
                   5795:     <xs:annotation>
                   5796:       <xs:documentation>
                   5797:         Level 6 title
                   5798:         
                   5799:         A heading element briefly describes the topic of the section it introduces. Heading information may be used by user agents, for example, to construct a table of contents for a document automatically.
                   5800:       </xs:documentation>
                   5801:     </xs:annotation>
                   5802:   </xs:element>
                   5803:   <xs:complexType mixed="true" name="div-base">
                   5804:     <xs:annotation>
                   5805:       <xs:documentation>
                   5806:         The HTML &lt;div&gt; element (or HTML Document Division Element) is the generic container for flow content, which does not inherently represent anything. It can be used to group elements for styling purposes (using the class or id attributes), or because they share attribute values, such as lang. It should be used only when no other semantic element (such as &lt;article&gt; or &lt;nav&gt;) is appropriate.
                   5807:       </xs:documentation>
                   5808:     </xs:annotation>
                   5809:     <xs:attributeGroup ref="coreattrs"/>
                   5810:     <xs:attribute name="align">
                   5811:       <xs:annotation>
                   5812:         <xs:documentation>
                   5813:           In HTML5, the align attribute on &lt;div&gt; is obsolete.
                   5814:         </xs:documentation>
                   5815:       </xs:annotation>
                   5816:       <xs:simpleType>
                   5817:         <xs:restriction base="xs:string">
                   5818:           <xs:enumeration value="center"/>
                   5819:           <xs:enumeration value="left"/>
                   5820:           <xs:enumeration value="right"/>
                   5821:         </xs:restriction>
                   5822:       </xs:simpleType>
                   5823:     </xs:attribute>
                   5824:   </xs:complexType>
                   5825:   <xs:complexType mixed="true" name="div-with-parts">
                   5826:     <xs:complexContent mixed="true">
                   5827:       <xs:extension base="div-base">
                   5828:         <xs:choice maxOccurs="unbounded" minOccurs="0">
                   5829:           <xs:group ref="text-with-parts"/>
                   5830:           <xs:group ref="inserts"/>
                   5831:           <xs:element ref="allow"/>
                   5832:           <xs:element ref="meta"/>
                   5833:           <xs:element ref="parameter"/>
                   5834:           <xs:element ref="parserlib"/>
                   5835:           <xs:element ref="scriptlib"/>
                   5836:         </xs:choice>
                   5837:       </xs:extension>
                   5838:     </xs:complexContent>
                   5839:   </xs:complexType>
                   5840:   <xs:complexType mixed="true" name="div-with-responses">
                   5841:     <xs:complexContent mixed="true">
                   5842:       <xs:extension base="div-base">
                   5843:         <xs:choice maxOccurs="unbounded" minOccurs="0">
                   5844:           <xs:group ref="text-with-responses"/>
                   5845:           <xs:group ref="inserts"/>
                   5846:           <xs:element ref="allow"/>
                   5847:           <xs:element ref="meta"/>
                   5848:           <xs:element ref="parameter"/>
                   5849:           <xs:element ref="parserlib"/>
                   5850:           <xs:element ref="scriptlib"/>
                   5851:         </xs:choice>
                   5852:       </xs:extension>
                   5853:     </xs:complexContent>
                   5854:   </xs:complexType>
                   5855:   <xs:complexType mixed="true" name="div-with-text">
                   5856:     <xs:complexContent mixed="true">
                   5857:       <xs:extension base="div-base">
                   5858:         <xs:choice maxOccurs="unbounded" minOccurs="0">
                   5859:           <xs:group ref="text-only"/>
                   5860:           <xs:group ref="inserts"/>
                   5861:           <xs:element ref="meta"/>
                   5862:           <xs:element ref="parameter"/>
                   5863:           <xs:element ref="parserlib"/>
                   5864:           <xs:element ref="scriptlib"/>
                   5865:         </xs:choice>
                   5866:       </xs:extension>
                   5867:     </xs:complexContent>
                   5868:   </xs:complexType>
                   5869:   <xs:complexType mixed="true" name="p-base">
                   5870:     <xs:annotation>
                   5871:       <xs:documentation>
                   5872:         The HTML &lt;p&gt; element (or HTML Paragraph Element) represents a paragraph of text. Paragraphs are block-level elements.
                   5873:       </xs:documentation>
                   5874:     </xs:annotation>
                   5875:     <xs:attributeGroup ref="coreattrs"/>
                   5876:   </xs:complexType>
                   5877:   <xs:complexType mixed="true" name="p-with-responses">
                   5878:     <xs:complexContent mixed="true">
                   5879:       <xs:extension base="p-base">
                   5880:         <xs:choice maxOccurs="unbounded" minOccurs="0">
                   5881:           <xs:group ref="inlines"/>
                   5882:           <xs:group ref="inlineResponses"/>
                   5883:         </xs:choice>
                   5884:       </xs:extension>
                   5885:     </xs:complexContent>
                   5886:   </xs:complexType>
                   5887:   <xs:complexType mixed="true" name="p-with-text">
                   5888:     <xs:complexContent mixed="true">
                   5889:       <xs:extension base="p-base">
                   5890:         <xs:choice maxOccurs="unbounded" minOccurs="0">
                   5891:           <xs:group ref="inlines"/>
                   5892:         </xs:choice>
                   5893:       </xs:extension>
                   5894:     </xs:complexContent>
                   5895:   </xs:complexType>
                   5896:   <xs:complexType name="ul-base">
                   5897:     <xs:annotation>
                   5898:       <xs:documentation>
                   5899:         Unordered list
                   5900:       </xs:documentation>
                   5901:     </xs:annotation>
                   5902:     <xs:attributeGroup ref="coreattrs"/>
                   5903:     <xs:attribute name="type" type="xs:string">
                   5904:       <xs:annotation>
                   5905:         <xs:documentation>
                   5906:           Used to set the bullet style for the list. The values defined under HTML3.2 and the transitional version of HTML 4.0/4.01 are:
                   5907:           - circle,
                   5908:           - disc,
                   5909:           - and square.
                   5910:           
                   5911:           A fourth bullet type has been defined in the WebTV interface, but not all browsers support it: triangle.
                   5912:           
                   5913:           If not present and if no CSS list-style-type property does apply to the element, the user agent decide to use a kind of bullets depending on the nesting level of the list.
                   5914:           Usage note: Do not use this attribute, as it has been deprecated; use the CSS list-style-type property instead.
                   5915:         </xs:documentation>
                   5916:       </xs:annotation>
                   5917:     </xs:attribute>
                   5918:   </xs:complexType>
                   5919:   <xs:complexType name="ul-with-parts">
                   5920:     <xs:complexContent>
                   5921:       <xs:extension base="ul-base">
                   5922:         <xs:sequence maxOccurs="unbounded">
                   5923:           <xs:element name="li" type="li-with-parts"/>
                   5924:         </xs:sequence>
                   5925:       </xs:extension>
                   5926:     </xs:complexContent>
                   5927:   </xs:complexType>
                   5928:   <xs:complexType name="ul-with-responses">
                   5929:     <xs:complexContent>
                   5930:       <xs:extension base="ul-base">
                   5931:         <xs:sequence maxOccurs="unbounded">
                   5932:           <xs:element name="li" type="li-with-responses"/>
                   5933:         </xs:sequence>
                   5934:       </xs:extension>
                   5935:     </xs:complexContent>
                   5936:   </xs:complexType>
                   5937:   <xs:complexType name="ul-with-text">
                   5938:     <xs:complexContent>
                   5939:       <xs:extension base="ul-base">
                   5940:         <xs:sequence maxOccurs="unbounded">
                   5941:           <xs:element name="li" type="li-with-text"/>
                   5942:         </xs:sequence>
                   5943:       </xs:extension>
                   5944:     </xs:complexContent>
                   5945:   </xs:complexType>
                   5946:   <xs:complexType name="ol-base">
                   5947:     <xs:annotation>
                   5948:       <xs:documentation>
                   5949:         Ordered list
                   5950:       </xs:documentation>
                   5951:     </xs:annotation>
                   5952:     <xs:attributeGroup ref="coreattrs"/>
                   5953:     <xs:attribute name="type" type="xs:string">
                   5954:       <xs:annotation>
                   5955:         <xs:documentation>
                   5956:           Indicates the numbering type:
                   5957:           - 'a' indicates lowercase letters,
                   5958:           - 'A' indicates uppercase letters,
                   5959:           - 'i' indicates lowercase Roman numerals,
                   5960:           - 'I' indicates uppercase Roman numerals,
                   5961:           - and '1' indicates numbers (default).
                   5962:           
                   5963:           The type set is used for the entire list unless a different type attribute is used within an enclosed &lt;li&gt; element.
                   5964:           
                   5965:           Note: This attribute was deprecated in HTML4, but reintroduced in HTML5. Unless the value of the list number matters (e.g. in legal or technical documents where items are to be referenced by their number/letter), the CSS list-style-type property should be used instead.
                   5966:         </xs:documentation>
                   5967:       </xs:annotation>
                   5968:     </xs:attribute>
                   5969:   </xs:complexType>
                   5970:   <xs:complexType name="ol-with-parts">
                   5971:     <xs:complexContent>
                   5972:       <xs:extension base="ol-base">
                   5973:         <xs:sequence maxOccurs="unbounded">
                   5974:           <xs:element name="li" type="li-with-parts"/>
                   5975:         </xs:sequence>
                   5976:       </xs:extension>
                   5977:     </xs:complexContent>
                   5978:   </xs:complexType>
                   5979:   <xs:complexType name="ol-with-responses">
                   5980:     <xs:complexContent>
                   5981:       <xs:extension base="ol-base">
                   5982:         <xs:sequence maxOccurs="unbounded">
                   5983:           <xs:element name="li" type="li-with-responses"/>
                   5984:         </xs:sequence>
                   5985:       </xs:extension>
                   5986:     </xs:complexContent>
                   5987:   </xs:complexType>
                   5988:   <xs:complexType name="ol-with-text">
                   5989:     <xs:complexContent>
                   5990:       <xs:extension base="ol-base">
                   5991:         <xs:sequence maxOccurs="unbounded">
                   5992:           <xs:element name="li" type="li-with-text"/>
                   5993:         </xs:sequence>
                   5994:       </xs:extension>
                   5995:     </xs:complexContent>
                   5996:   </xs:complexType>
                   5997:   <xs:complexType mixed="true" name="li-base">
                   5998:     <xs:annotation>
                   5999:       <xs:documentation>
                   6000:         List item
                   6001:       </xs:documentation>
                   6002:     </xs:annotation>
                   6003:     <xs:attributeGroup ref="coreattrs"/>
                   6004:     <xs:attribute name="type" type="xs:string">
                   6005:       <xs:annotation>
                   6006:         <xs:documentation>
                   6007:           This character attributes indicates the numbering type:
                   6008:           
                   6009:           a: lowercase letters
                   6010:           A: uppercase letters
                   6011:           i: lowercase Roman numerals
                   6012:           I: uppercase Roman numerals
                   6013:           1: numbers
                   6014:           
                   6015:           This type overrides the one used by its parent &lt;ol&gt; element, if any.
                   6016:           
                   6017:           Usage note: This attribute has been deprecated: use the CSS list-style-type property instead.
                   6018:         </xs:documentation>
                   6019:       </xs:annotation>
                   6020:     </xs:attribute>
                   6021:     <xs:attribute name="value" type="xs:int">
                   6022:       <xs:annotation>
                   6023:         <xs:documentation>
                   6024:           This integer attributes indicates the current ordinal value of the item in the list as defined by the &lt;ol&gt; element. The only allowed value for this attribute is a number, even if the list is displayed with Roman numerals or letters. List items that follow this one continue numbering from the value set. The value attribute has no meaning for unordered lists (&lt;ul&gt;) or for menus (&lt;menu&gt;).
                   6025:           
                   6026:           Note: This attribute was deprecated in HTML4, but reintroduced in HTML5.
                   6027:         </xs:documentation>
                   6028:       </xs:annotation>
                   6029:     </xs:attribute>
                   6030:   </xs:complexType>
                   6031:   <xs:complexType mixed="true" name="li-with-parts">
                   6032:     <xs:complexContent mixed="true">
                   6033:       <xs:extension base="li-base">
                   6034:         <xs:choice maxOccurs="unbounded" minOccurs="0">
                   6035:           <xs:group ref="text-with-parts"/>
                   6036:         </xs:choice>
                   6037:       </xs:extension>
                   6038:     </xs:complexContent>
                   6039:   </xs:complexType>
                   6040:   <xs:complexType mixed="true" name="li-with-responses">
                   6041:     <xs:complexContent mixed="true">
                   6042:       <xs:extension base="li-base">
                   6043:         <xs:choice maxOccurs="unbounded" minOccurs="0">
                   6044:           <xs:group ref="text-with-responses"/>
                   6045:         </xs:choice>
                   6046:       </xs:extension>
                   6047:     </xs:complexContent>
                   6048:   </xs:complexType>
                   6049:   <xs:complexType mixed="true" name="li-with-text">
                   6050:     <xs:complexContent mixed="true">
                   6051:       <xs:extension base="li-base">
                   6052:         <xs:choice maxOccurs="unbounded" minOccurs="0">
                   6053:           <xs:group ref="text-only"/>
                   6054:         </xs:choice>
                   6055:       </xs:extension>
                   6056:     </xs:complexContent>
                   6057:   </xs:complexType>
                   6058:   <xs:complexType name="dl-base">
                   6059:     <xs:annotation>
                   6060:       <xs:documentation>
                   6061:         The HTML &lt;dl&gt; Element (or HTML Description List Element) encloses a list of pairs of terms and descriptions. Common uses for this element are to implement a glossary or to display metadata (a list of key-value pairs).
                   6062:         
                   6063:         Prior to HTML5, &lt;dl&gt; was known as a Definition List.
                   6064:       </xs:documentation>
                   6065:     </xs:annotation>
                   6066:     <xs:attributeGroup ref="coreattrs"/>
                   6067:   </xs:complexType>
                   6068:   <xs:complexType name="dl-with-parts">
                   6069:     <xs:complexContent>
                   6070:       <xs:extension base="dl-base">
                   6071:         <xs:choice maxOccurs="unbounded">
                   6072:           <xs:element ref="dt"/>
                   6073:           <xs:element name="dd" type="dd-with-parts"/>
                   6074:         </xs:choice>
                   6075:       </xs:extension>
                   6076:     </xs:complexContent>
                   6077:   </xs:complexType>
                   6078:   <xs:complexType name="dl-with-responses">
                   6079:     <xs:complexContent>
                   6080:       <xs:extension base="dl-base">
                   6081:         <xs:choice maxOccurs="unbounded">
                   6082:           <xs:element ref="dt"/>
                   6083:           <xs:element name="dd" type="dd-with-responses"/>
                   6084:         </xs:choice>
                   6085:       </xs:extension>
                   6086:     </xs:complexContent>
                   6087:   </xs:complexType>
                   6088:   <xs:complexType name="dl-with-text">
                   6089:     <xs:complexContent>
                   6090:       <xs:extension base="dl-base">
                   6091:         <xs:choice maxOccurs="unbounded">
                   6092:           <xs:element ref="dt"/>
                   6093:           <xs:element name="dd" type="dd-with-text"/>
                   6094:         </xs:choice>
                   6095:       </xs:extension>
                   6096:     </xs:complexContent>
                   6097:   </xs:complexType>
                   6098:   <xs:element name="dt" type="inlineBaseType">
                   6099:     <xs:annotation>
                   6100:       <xs:documentation>
                   6101:         The HTML &lt;dt&gt; element (or HTML Definition Term Element) identifies a term in a definition list. This element can occur only as a child element of a &lt;dl&gt;. It is usually followed by a &lt;dd&gt; element; however, multiple &lt;dt&gt; elements in a row indicate several terms that are all defined by the immediate next &lt;dd&gt; element.
                   6102:       </xs:documentation>
                   6103:     </xs:annotation>
                   6104:   </xs:element>
                   6105:   <xs:complexType mixed="true" name="dd-base">
                   6106:     <xs:annotation>
                   6107:       <xs:documentation>
                   6108:         The HTML &lt;dd&gt; Element (or HTML Description Element) indicates the description of a term in a description list (&lt;dl&gt;) element. This element can occur only as a child element of a definition list and it must follow a &lt;dt&gt; element.
                   6109:       </xs:documentation>
                   6110:     </xs:annotation>
                   6111:   </xs:complexType>
                   6112:   <xs:complexType mixed="true" name="dd-with-parts">
                   6113:     <xs:complexContent mixed="true">
                   6114:       <xs:extension base="dd-base">
                   6115:         <xs:choice maxOccurs="unbounded" minOccurs="0">
                   6116:           <xs:group ref="text-with-parts"/>
                   6117:         </xs:choice>
                   6118:       </xs:extension>
                   6119:     </xs:complexContent>
                   6120:   </xs:complexType>
                   6121:   <xs:complexType mixed="true" name="dd-with-responses">
                   6122:     <xs:complexContent mixed="true">
                   6123:       <xs:extension base="dd-base">
                   6124:         <xs:choice maxOccurs="unbounded" minOccurs="0">
                   6125:           <xs:group ref="text-with-responses"/>
                   6126:         </xs:choice>
                   6127:       </xs:extension>
                   6128:     </xs:complexContent>
                   6129:   </xs:complexType>
                   6130:   <xs:complexType mixed="true" name="dd-with-text">
                   6131:     <xs:complexContent mixed="true">
                   6132:       <xs:extension base="dd-base">
                   6133:         <xs:choice maxOccurs="unbounded" minOccurs="0">
                   6134:           <xs:group ref="text-only"/>
                   6135:         </xs:choice>
                   6136:       </xs:extension>
                   6137:     </xs:complexContent>
                   6138:   </xs:complexType>
                   6139:   <xs:complexType name="table-base">
                   6140:     <xs:annotation>
                   6141:       <xs:documentation>
                   6142:         The HTML Table Element (&lt;table&gt;) represents data in two dimensions or more.
                   6143:       </xs:documentation>
                   6144:     </xs:annotation>
                   6145:     <xs:attributeGroup ref="coreattrs"/>
                   6146:     <xs:attribute name="border" type="xs:int">
                   6147:       <xs:annotation>
                   6148:         <xs:documentation>
                   6149:           This integer attribute defines, in pixels, the size of the frame surrounding the table. If set to 0, it implies that the frame attribute is set to void.
                   6150:           Usage note: Do not use this attribute, as it has been deprecated: the &lt;table&gt; element should be styled using CSS. To give a similar effect than the border attribute, the CSS properties border, border-color, border-width and border-style should be used.
                   6151:         </xs:documentation>
                   6152:       </xs:annotation>
                   6153:     </xs:attribute>
                   6154:     <xs:attribute name="cellpadding" type="xs:string">
                   6155:       <xs:annotation>
                   6156:         <xs:documentation>
                   6157:           This attribute defines the space between the content of a cell and the border, displayed or not, of it. If it is a pixel length, this pixel-sized space will be applied on all four sides; if it is a percentage length, the content will be centered and the total vertical space (top and bottom) will represent this percentage. The same is true for the total horizontal space (left and right).
                   6158:           Usage note: Do not use this attribute, as it has been deprecated: the &lt;table&gt; element should be styled using CSS. To give a similar effect than the border attribute, use the CSS property border-collapse with the value collapse on the &lt;table&gt; element itself, and the property padding on the &lt;td&gt;.
                   6159:         </xs:documentation>
                   6160:       </xs:annotation>
                   6161:     </xs:attribute>
                   6162:     <xs:attribute name="cellspacing" type="xs:string">
                   6163:       <xs:annotation>
                   6164:         <xs:documentation>
                   6165:           This attribute defines the size, in percentage or in pixels, of the space between two cells (both horizontally and vertically), between the top of the table and the cells of the first row, the left of the table and the first column, the right of the table and the last column and the bottom of the table and the last row.
                   6166:           Usage note: Do not use this attribute, as it has been deprecated: the &lt;table&gt; element should be styled using CSS. To give a similar effect than the border attribute, use the CSS property border-collapse with the value collapse on the &lt;table&gt; element itself, and the property margin on the &lt;td&gt; element.
                   6167:         </xs:documentation>
                   6168:       </xs:annotation>
                   6169:     </xs:attribute>
                   6170:     <xs:attribute name="TeXwidth">
                   6171:       <xs:annotation>
                   6172:         <xs:documentation>
                   6173:           Width of the table in %
                   6174:         </xs:documentation>
                   6175:       </xs:annotation>
                   6176:       <xs:simpleType>
                   6177:         <xs:union memberTypes="perl">
                   6178:           <xs:simpleType>
                   6179:             <xs:restriction base="xs:string">
                   6180:               <xs:pattern value="[0-9]+\s*%"/>
                   6181:             </xs:restriction>
                   6182:           </xs:simpleType>
                   6183:         </xs:union>
                   6184:       </xs:simpleType>
                   6185:     </xs:attribute>
                   6186:     <xs:attribute name="TeXtheme" type="xs:string"/>
                   6187:     <xs:attribute name="align" type="xs:string">
                   6188:       <xs:annotation>
                   6189:         <xs:documentation>
                   6190:           Deprecated attribute.
                   6191:           
                   6192:           This enumerated attribute indicates how the table must be aligned in regard of the containing document. It may have the following values:
                   6193:           
                   6194:           - left, meaning that the table is to be displayed to the left of the document;
                   6195:           - center, meaning that the table is to be displayed centered in the document;
                   6196:           - right, meaning that the table is to be displayed to the right of the document.
                   6197:           
                   6198:           Note: 
                   6199:           Do not use this attribute, as it has been deprecated: the &lt;table&gt; element should be styled using CSS. To give a similar effect than the align attribute, the CSS properties "text-align" and "vertical-align" should be used.
                   6200:         </xs:documentation>
                   6201:       </xs:annotation>
                   6202:     </xs:attribute>
                   6203:     <xs:attribute name="rules" type="xs:string">
                   6204:       <xs:annotation>
                   6205:         <xs:documentation>
                   6206:           Deprecated attribute.
                   6207:           
                   6208:           This enumerated attribute defines where rules, i.e. lines, should appear in a table. It can have the following values:
                   6209:           
                   6210:           - none, which indicates the no rules will be displayed; it is the default value;
                   6211:           - groups, which will make the rules to be displayed between row groups (defined by the &lt;thead&gt;, &lt;tbody&gt; and &lt;tfoot&gt; elements) and between column groups (defined by the &lt;col&gt; and &lt;colgroup&gt; elements) only;
                   6212:           - rows, which will make the rules to be displayed between rows;
                   6213:           - columns, which will make the rules to be displayed between columns;
                   6214:           - all, which wil make the rules to be displayed between rows and columns.
                   6215:           
                   6216:           Note:
                   6217:           The styling of the rules is browser-dependant and cannot be modified.
                   6218:           Do not use this attribute, as it has been deprecated: the rules should be defined and styled using CSS. use the CSS property border on the adequate &lt;thead&gt;, &lt;tbody&gt;, &lt;tfoot&gt;, &lt;col&gt; or &lt;colgroup&gt; elements.
                   6219:         </xs:documentation>
                   6220:       </xs:annotation>
                   6221:     </xs:attribute>
                   6222:   </xs:complexType>
                   6223:   <xs:complexType name="table-with-parts">
                   6224:     <xs:complexContent>
                   6225:       <xs:extension base="table-base">
                   6226:         <xs:sequence>
                   6227:           <xs:element minOccurs="0" ref="caption"/>
                   6228:           <xs:element minOccurs="0" ref="thead"/>
                   6229:           <xs:element minOccurs="0" ref="tfoot"/>
                   6230:           <xs:choice>
                   6231:             <xs:element maxOccurs="unbounded" name="tbody" type="tbody-with-parts"/>
                   6232:             <xs:element maxOccurs="unbounded" name="tr" type="tr-with-parts"/>
                   6233:           </xs:choice>
                   6234:         </xs:sequence>
                   6235:       </xs:extension>
                   6236:     </xs:complexContent>
                   6237:   </xs:complexType>
                   6238:   <xs:complexType name="table-with-responses">
                   6239:     <xs:complexContent>
                   6240:       <xs:extension base="table-base">
                   6241:         <xs:sequence>
                   6242:           <xs:element minOccurs="0" ref="caption"/>
                   6243:           <xs:element minOccurs="0" ref="thead"/>
                   6244:           <xs:element minOccurs="0" ref="tfoot"/>
                   6245:           <xs:choice>
                   6246:             <xs:element maxOccurs="unbounded" name="tbody" type="tbody-with-responses"/>
                   6247:             <xs:element maxOccurs="unbounded" name="tr" type="tr-with-responses"/>
                   6248:           </xs:choice>
                   6249:         </xs:sequence>
                   6250:       </xs:extension>
                   6251:     </xs:complexContent>
                   6252:   </xs:complexType>
                   6253:   <xs:complexType name="table-with-text">
                   6254:     <xs:complexContent>
                   6255:       <xs:extension base="table-base">
                   6256:         <xs:sequence>
                   6257:           <xs:element minOccurs="0" ref="caption"/>
                   6258:           <xs:element minOccurs="0" ref="thead"/>
                   6259:           <xs:element minOccurs="0" ref="tfoot"/>
                   6260:           <xs:choice>
                   6261:             <xs:element maxOccurs="unbounded" name="tbody" type="tbody-with-text"/>
                   6262:             <xs:element maxOccurs="unbounded" name="tr" type="tr-with-text"/>
                   6263:           </xs:choice>
                   6264:         </xs:sequence>
                   6265:       </xs:extension>
                   6266:     </xs:complexContent>
                   6267:   </xs:complexType>
                   6268:   <xs:element name="caption">
                   6269:     <xs:annotation>
                   6270:       <xs:documentation>
                   6271:         The HTML &lt;caption&gt; Element (or HTML Table Caption Element) represents the title of a table. Though it is always the first descendant of a &lt;table&gt;, its styling, using CSS, may place it elsewhere, relative to the table.
                   6272:       </xs:documentation>
                   6273:     </xs:annotation>
                   6274:     <xs:complexType mixed="true">
                   6275:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   6276:         <xs:group ref="text-only"/>
                   6277:       </xs:choice>
                   6278:     </xs:complexType>
                   6279:   </xs:element>
                   6280:   <xs:element name="thead">
                   6281:     <xs:annotation>
                   6282:       <xs:documentation>
                   6283:         The HTML Table Head Element (&lt;thead&gt;) defines a set of rows defining the head of the columns of the table.
                   6284:       </xs:documentation>
                   6285:     </xs:annotation>
                   6286:     <xs:complexType>
                   6287:       <xs:sequence>
                   6288:         <xs:element maxOccurs="unbounded" name="tr" type="tr-with-text"/>
                   6289:       </xs:sequence>
                   6290:       <xs:attribute name="align" type="xs:string">
                   6291:         <xs:annotation>
                   6292:           <xs:documentation>
                   6293:             Deprecated attribute.
                   6294:           </xs:documentation>
                   6295:         </xs:annotation>
                   6296:       </xs:attribute>
                   6297:     </xs:complexType>
                   6298:   </xs:element>
                   6299:   <xs:element name="tfoot">
                   6300:     <xs:annotation>
                   6301:       <xs:documentation>
                   6302:         The HTML Table Foot Element (&lt;tfoot&gt;) defines a set of rows summarizing the columns of the table.
                   6303:       </xs:documentation>
                   6304:     </xs:annotation>
                   6305:     <xs:complexType>
                   6306:       <xs:sequence>
                   6307:         <xs:element maxOccurs="unbounded" name="tr" type="tr-with-text"/>
                   6308:       </xs:sequence>
                   6309:       <xs:attribute name="align" type="xs:string">
                   6310:         <xs:annotation>
                   6311:           <xs:documentation>
                   6312:             Deprecated attribute.
                   6313:           </xs:documentation>
                   6314:         </xs:annotation>
                   6315:       </xs:attribute>
                   6316:     </xs:complexType>
                   6317:   </xs:element>
                   6318:   <xs:complexType name="tbody-with-parts">
                   6319:     <xs:sequence>
                   6320:       <xs:choice>
                   6321:         <xs:element maxOccurs="unbounded" name="tr" type="tr-with-parts"/>
                   6322:       </xs:choice>
                   6323:     </xs:sequence>
                   6324:     <xs:attribute name="align" type="xs:string">
                   6325:       <xs:annotation>
                   6326:         <xs:documentation>
                   6327:           Deprecated attribute.
                   6328:         </xs:documentation>
                   6329:       </xs:annotation>
                   6330:     </xs:attribute>
                   6331:   </xs:complexType>
                   6332:   <xs:complexType name="tbody-with-responses">
                   6333:     <xs:sequence>
                   6334:       <xs:choice>
                   6335:         <xs:element maxOccurs="unbounded" name="tr" type="tr-with-responses"/>
                   6336:       </xs:choice>
                   6337:     </xs:sequence>
                   6338:     <xs:attribute name="align" type="xs:string"/>
                   6339:   </xs:complexType>
                   6340:   <xs:complexType name="tbody-with-text">
                   6341:     <xs:sequence>
                   6342:       <xs:choice>
                   6343:         <xs:element maxOccurs="unbounded" name="tr" type="tr-with-text"/>
                   6344:       </xs:choice>
                   6345:     </xs:sequence>
                   6346:     <xs:attribute name="align" type="xs:string">
                   6347:       <xs:annotation>
                   6348:         <xs:documentation>
                   6349:           Deprecated attribute.
                   6350:         </xs:documentation>
                   6351:       </xs:annotation>
                   6352:     </xs:attribute>
                   6353:   </xs:complexType>
                   6354:   <xs:complexType name="tr-base">
                   6355:     <xs:annotation>
                   6356:       <xs:documentation>
                   6357:         Table row
                   6358:       </xs:documentation>
                   6359:     </xs:annotation>
                   6360:     <xs:attributeGroup ref="coreattrs"/>
                   6361:     <xs:attribute name="align" type="xs:string">
                   6362:       <xs:annotation>
                   6363:         <xs:documentation>
                   6364:           Deprecated attribute.
                   6365:         </xs:documentation>
                   6366:       </xs:annotation>
                   6367:     </xs:attribute>
                   6368:   </xs:complexType>
                   6369:   <xs:complexType name="tr-with-parts">
                   6370:     <xs:complexContent>
                   6371:       <xs:extension base="tr-base">
                   6372:         <xs:choice maxOccurs="unbounded" minOccurs="0">
                   6373:           <xs:element ref="th"/>
                   6374:           <xs:element name="td" type="td-with-parts"/>
                   6375:         </xs:choice>
                   6376:       </xs:extension>
                   6377:     </xs:complexContent>
                   6378:   </xs:complexType>
                   6379:   <xs:complexType name="tr-with-responses">
                   6380:     <xs:complexContent>
                   6381:       <xs:extension base="tr-base">
                   6382:         <xs:choice maxOccurs="unbounded" minOccurs="0">
                   6383:           <xs:element ref="th"/>
                   6384:           <xs:element name="td" type="td-with-responses"/>
                   6385:         </xs:choice>
                   6386:       </xs:extension>
                   6387:     </xs:complexContent>
                   6388:   </xs:complexType>
                   6389:   <xs:complexType name="tr-with-text">
                   6390:     <xs:complexContent>
                   6391:       <xs:extension base="tr-base">
                   6392:         <xs:choice maxOccurs="unbounded" minOccurs="0">
                   6393:           <xs:element ref="th"/>
                   6394:           <xs:element name="td" type="td-with-text"/>
                   6395:         </xs:choice>
                   6396:       </xs:extension>
                   6397:     </xs:complexContent>
                   6398:   </xs:complexType>
                   6399:   <xs:simpleType name="html-align">
                   6400:     <xs:restriction base="xs:string">
                   6401:       <xs:enumeration value="left"/>
                   6402:       <xs:enumeration value="center"/>
                   6403:       <xs:enumeration value="right"/>
                   6404:       <xs:enumeration value="justify"/>
                   6405:     </xs:restriction>
                   6406:   </xs:simpleType>
                   6407:   <xs:complexType mixed="true" name="td-base">
                   6408:     <xs:annotation>
                   6409:       <xs:documentation>
                   6410:         Table cell
                   6411:       </xs:documentation>
                   6412:     </xs:annotation>
                   6413:     <xs:attributeGroup ref="coreattrs"/>
                   6414:     <xs:attribute name="colspan" type="xs:int">
                   6415:       <xs:annotation>
                   6416:         <xs:documentation>
                   6417:           This attribute contains a non-negative integer value that indicates on how many columns does the cell extend. Its default value is 1.
                   6418:         </xs:documentation>
                   6419:       </xs:annotation>
                   6420:     </xs:attribute>
                   6421:     <xs:attribute name="rowspan" type="xs:int">
                   6422:       <xs:annotation>
                   6423:         <xs:documentation>
                   6424:           This attribute contains a non-negative integer value that indicates on how many rows does the cell extend. Its default value is 1.
                   6425:         </xs:documentation>
                   6426:       </xs:annotation>
                   6427:     </xs:attribute>
                   6428:     <xs:attribute name="align" type="html-align"/>
                   6429:     <xs:attribute name="TeXwidth">
                   6430:       <xs:annotation>
                   6431:         <xs:documentation>
                   6432:           Width of the cell in mm or another unit (cm, in, pt, pc)
                   6433:         </xs:documentation>
                   6434:       </xs:annotation>
                   6435:       <xs:simpleType>
                   6436:         <xs:union memberTypes="perl">
                   6437:           <xs:simpleType>
                   6438:             <xs:restriction base="xs:string">
                   6439:               <xs:pattern value="\d*(\s+(mm|cm|in|pt|pc))?"/>
                   6440:             </xs:restriction>
                   6441:           </xs:simpleType>
                   6442:         </xs:union>
                   6443:       </xs:simpleType>
                   6444:     </xs:attribute>
                   6445:   </xs:complexType>
                   6446:   <xs:complexType mixed="true" name="td-with-parts">
                   6447:     <xs:complexContent mixed="true">
                   6448:       <xs:extension base="td-base">
                   6449:         <xs:choice maxOccurs="unbounded" minOccurs="0">
                   6450:           <xs:group ref="text-with-parts"/>
                   6451:         </xs:choice>
                   6452:       </xs:extension>
                   6453:     </xs:complexContent>
                   6454:   </xs:complexType>
                   6455:   <xs:complexType mixed="true" name="td-with-responses">
                   6456:     <xs:complexContent mixed="true">
                   6457:       <xs:extension base="td-base">
                   6458:         <xs:choice maxOccurs="unbounded" minOccurs="0">
                   6459:           <xs:group ref="text-with-responses"/>
                   6460:         </xs:choice>
                   6461:       </xs:extension>
                   6462:     </xs:complexContent>
                   6463:   </xs:complexType>
                   6464:   <xs:complexType mixed="true" name="td-with-text">
                   6465:     <xs:complexContent mixed="true">
                   6466:       <xs:extension base="td-base">
                   6467:         <xs:choice maxOccurs="unbounded" minOccurs="0">
                   6468:           <xs:group ref="text-only"/>
                   6469:         </xs:choice>
                   6470:       </xs:extension>
                   6471:     </xs:complexContent>
                   6472:   </xs:complexType>
                   6473:   <xs:element name="th">
                   6474:     <xs:annotation>
                   6475:       <xs:documentation>
                   6476:         Table header cell
                   6477:       </xs:documentation>
                   6478:     </xs:annotation>
                   6479:     <xs:complexType mixed="true">
                   6480:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   6481:         <xs:group ref="text-only"/>
                   6482:       </xs:choice>
                   6483:       <xs:attributeGroup ref="coreattrs"/>
                   6484:       <xs:attribute name="colspan" type="xs:int">
                   6485:         <xs:annotation>
                   6486:           <xs:documentation>
                   6487:             This attribute contains a non-negative integer value that indicates on how many columns does the cell extend. Its default value is 1.
                   6488:           </xs:documentation>
                   6489:         </xs:annotation>
                   6490:       </xs:attribute>
                   6491:       <xs:attribute name="rowspan" type="xs:int">
                   6492:         <xs:annotation>
                   6493:           <xs:documentation>
                   6494:             This attribute contains a non-negative integer value that indicates on how many rows does the cell extend. Its default value is 1.
                   6495:           </xs:documentation>
                   6496:         </xs:annotation>
                   6497:       </xs:attribute>
                   6498:       <xs:attribute name="align" type="html-align"/>
                   6499:       <xs:attribute name="scope">
                   6500:         <xs:annotation>
                   6501:           <xs:documentation>
                   6502:             defines the cells that the header defined in this &lt;th&gt; element relates to
                   6503:           </xs:documentation>
                   6504:         </xs:annotation>
                   6505:         <xs:simpleType>
                   6506:           <xs:restriction base="xs:token">
                   6507:             <xs:enumeration value="row"/>
                   6508:             <xs:enumeration value="col"/>
                   6509:             <xs:enumeration value="rowgroup"/>
                   6510:             <xs:enumeration value="colgroup"/>
                   6511:           </xs:restriction>
                   6512:         </xs:simpleType>
                   6513:       </xs:attribute>
                   6514:       <xs:attribute name="TeXwidth">
                   6515:         <xs:annotation>
                   6516:           <xs:documentation>
                   6517:             Width of the cell in mm or another unit (cm, in, pt, pc)
                   6518:           </xs:documentation>
                   6519:         </xs:annotation>
                   6520:         <xs:simpleType>
                   6521:           <xs:union memberTypes="perl">
                   6522:             <xs:simpleType>
                   6523:               <xs:restriction base="xs:string">
                   6524:                 <xs:pattern value="\d*(\s+(mm|cm|in|pt|pc))?"/>
                   6525:               </xs:restriction>
                   6526:             </xs:simpleType>
                   6527:           </xs:union>
                   6528:         </xs:simpleType>
                   6529:       </xs:attribute>
                   6530:     </xs:complexType>
                   6531:   </xs:element>
                   6532:   <xs:element name="span">
                   6533:     <xs:annotation>
                   6534:       <xs:documentation>
                   6535:         Inline style
                   6536:       </xs:documentation>
                   6537:     </xs:annotation>
                   6538:     <xs:complexType mixed="true">
                   6539:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   6540:         <xs:group ref="inlines"/>
                   6541:       </xs:choice>
                   6542:       <xs:attributeGroup ref="coreattrs"/>
                   6543:     </xs:complexType>
                   6544:   </xs:element>
                   6545:   <xs:element name="a">
                   6546:     <xs:annotation>
                   6547:       <xs:documentation>
                   6548:         The HTML &lt;a&gt; Element (or the HTML Anchor Element) defines a hyperlink, the named target destination for a hyperlink, or both.
                   6549:       </xs:documentation>
                   6550:     </xs:annotation>
                   6551:     <xs:complexType mixed="true">
                   6552:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   6553:         <xs:group ref="inlines"/>
                   6554:       </xs:choice>
                   6555:       <xs:attributeGroup ref="coreattrs"/>
                   6556:       <xs:attribute name="name" type="xs:string"/>
                   6557:       <xs:attribute name="href" type="xs:anyURI"/>
                   6558:       <xs:attribute name="target" type="xs:string"/>
                   6559:       <xs:attribute name="title" type="xs:string"/>
                   6560:       <xs:attribute name="uriprint" type="xs:string"/>
                   6561:       <xs:attribute name="anchorprint" type="xs:string"/>
                   6562:       <xs:attribute name="rel" type="xs:NMTOKENS"/>
                   6563:       <xs:attribute name="accesskey">
                   6564:         <xs:simpleType>
                   6565:           <xs:restriction base="xs:string">
                   6566:             <xs:length fixed="true" value="1"/>
                   6567:           </xs:restriction>
                   6568:         </xs:simpleType>
                   6569:       </xs:attribute>
                   6570:       <xs:attribute name="onclick" type="xs:string">
                   6571:         <xs:annotation>
                   6572:           <xs:documentation>
                   6573:             Javascript event handler content attribute for the "click" event.
                   6574:             
                   6575:             Warning: event handler content attributes should be avoided. They make the markup bigger and less readable. Concerns of content/structure and behavior are not well-separated, making a bug harder to find. Furthermore, usage of event attributes almost always causes scripts to expose global functions on the Window object, polluting the global namespace.
                   6576:             
                   6577:             The EventTarget.addEventListener() function should be used instead to add a listener for the event.
                   6578:           </xs:documentation>
                   6579:         </xs:annotation>
                   6580:       </xs:attribute>
                   6581:     </xs:complexType>
                   6582:   </xs:element>
                   6583:   <xs:element name="em" type="inlineBaseType">
                   6584:     <xs:annotation>
                   6585:       <xs:documentation>
                   6586:         Emphasis
                   6587:       </xs:documentation>
                   6588:     </xs:annotation>
                   6589:   </xs:element>
                   6590:   <xs:element name="strong" type="inlineBaseType">
                   6591:     <xs:annotation>
                   6592:       <xs:documentation>
                   6593:         Strong emphasis
                   6594:       </xs:documentation>
                   6595:     </xs:annotation>
                   6596:   </xs:element>
                   6597:   <xs:element name="b" type="inlineBaseType">
                   6598:     <xs:annotation>
                   6599:       <xs:documentation>
1.6       damieng  6600:         The HTML &lt;b&gt; Element represents a span of text stylistically different from normal text, without conveying any special importance or relevance. It is typically used for keywords in a summary, product names in a review, or other spans of text whose typical presentation would be boldfaced. Another example of its use is to mark the lead sentence of each paragraph of an article.
1.1       damieng  6601:       </xs:documentation>
                   6602:     </xs:annotation>
                   6603:   </xs:element>
                   6604:   <xs:element name="i" type="inlineBaseType">
                   6605:     <xs:annotation>
                   6606:       <xs:documentation>
1.6       damieng  6607:         The HTML &lt;i&gt; Element represents a range of text that is set off from the normal text for some reason, for example, technical terms, foreign language phrases, or fictional character thoughts. It is typically displayed in italic type.
1.1       damieng  6608:       </xs:documentation>
                   6609:     </xs:annotation>
                   6610:   </xs:element>
                   6611:   <xs:element name="sup" type="inlineBaseType">
                   6612:     <xs:annotation>
                   6613:       <xs:documentation>
1.6       damieng  6614:         The HTML Superscript Element (&lt;sup&gt;) defines a span of text that should be displayed, for typographic reasons, higher, and often smaller, than the main span of text.
1.1       damieng  6615:       </xs:documentation>
                   6616:     </xs:annotation>
                   6617:   </xs:element>
                   6618:   <xs:element name="sub" type="inlineBaseType">
                   6619:     <xs:annotation>
                   6620:       <xs:documentation>
1.6       damieng  6621:         The HTML Subscript Element (&lt;sub&gt;) defines a span of text that should be displayed, for typographic reasons, lower, and often smaller, than the main span of text.
1.1       damieng  6622:       </xs:documentation>
                   6623:     </xs:annotation>
                   6624:   </xs:element>
                   6625:   <xs:element name="pre" type="inlineBaseType">
                   6626:     <xs:annotation>
                   6627:       <xs:documentation>
                   6628:         The HTML &lt;pre&gt; Element (or HTML Preformatted Text) represents preformatted text. Text within this element is typically displayed in a non-proportional font exactly as it is laid out in the file. Whitespaces inside this element are displayed as typed.
                   6629:       </xs:documentation>
                   6630:     </xs:annotation>
                   6631:   </xs:element>
                   6632:   <xs:element name="code" type="inlineBaseType">
                   6633:     <xs:annotation>
                   6634:       <xs:documentation>
                   6635:         The HTML &lt;code&gt; Element represents a fragment of computer code. By default, it is displayed in the browser's default monospace font.
                   6636:       </xs:documentation>
                   6637:     </xs:annotation>
                   6638:   </xs:element>
                   6639:   <xs:element name="kbd" type="inlineBaseType">
                   6640:     <xs:annotation>
                   6641:       <xs:documentation>
                   6642:         The HTML &lt;kbd&gt; Element (or HTML Keyboard Input Element) represents user input and produces an inline element displayed in the browser's default monotype font.
                   6643:       </xs:documentation>
                   6644:     </xs:annotation>
                   6645:   </xs:element>
                   6646:   <xs:element name="samp" type="inlineBaseType">
                   6647:     <xs:annotation>
                   6648:       <xs:documentation>
                   6649:         The HTML &lt;samp&gt; element is an element intended to identify sample output from a computer program. It is usually displayed in the browser's default monotype font.
                   6650:       </xs:documentation>
                   6651:     </xs:annotation>
                   6652:   </xs:element>
                   6653:   <xs:element name="cite" type="inlineBaseType">
                   6654:     <xs:annotation>
                   6655:       <xs:documentation>
                   6656:         The HTML &lt;cite&gt; Element (or HTML Citation Element) represents a reference to a creative work. It must include the title of a work, the name of the author, or a URL reference, which may be in an abbreviated form according to the conventions used for the addition of citation metadata.
                   6657:         
                   6658:         Usage Notes:
                   6659:         
                   6660:         A creative work may include a book, a paper, an essay, a poem, a score, a song, a script, a film, a TV show, a game, a sculpture, a painting, a theater production, a play, an opera, a musical, an exhibition, a legal case report, a computer program, , a web site, a web page, a blog post or comment, a forum post or comment, a tweet, a written or oral statement, etc.
                   6661:         Use the cite attribute on a &lt;blockquote&gt; or &lt;q&gt; element to reference an online resource for a source.
                   6662:         
                   6663:         
                   6664:         Style note:
                   6665:         
                   6666:         To avoid the default italic style from being used for the &lt;cite&gt; element use the CSS font-style property.
                   6667:       </xs:documentation>
                   6668:     </xs:annotation>
                   6669:   </xs:element>
                   6670:   <xs:element name="q">
                   6671:     <xs:annotation>
                   6672:       <xs:documentation>
                   6673:         The HTML &lt;q&gt; Element (or HTML Quote Element) indicates that the enclosed text is a short inline quotation. This element is intended for short quotations that don't require paragraph breaks; for long quotations use &lt;blockquote&gt; element.
                   6674:       </xs:documentation>
                   6675:     </xs:annotation>
                   6676:     <xs:complexType mixed="true">
                   6677:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   6678:         <xs:group ref="inlines"/>
                   6679:       </xs:choice>
                   6680:       <xs:attribute name="cite" type="xs:anyURI">
                   6681:         <xs:annotation>
                   6682:           <xs:documentation>
                   6683:             The value of this attribute is a URL that designates a source document or message for the information quoted. This attribute is intended to point to information explaining the context or the reference for the quote.
                   6684:           </xs:documentation>
                   6685:         </xs:annotation>
                   6686:       </xs:attribute>
                   6687:     </xs:complexType>
                   6688:   </xs:element>
                   6689:   <xs:element name="tt" type="inlineBaseType">
                   6690:     <xs:annotation>
                   6691:       <xs:documentation>
                   6692:         This feature is obsolete. Although it may still work in some browsers, its use is discouraged since it could be removed at any time. Try to avoid using it.
                   6693:         
                   6694:         The HTML Teletype Text Element (&lt;tt&gt;) produces an inline element displayed in the browser's default monotype font. This element was intended to style text as it would display on a fixed width display, such as a teletype. It probably is more common to display fixed width type using the &lt;code&gt; element.
                   6695:       </xs:documentation>
                   6696:     </xs:annotation>
                   6697:   </xs:element>
                   6698:   <xs:element name="ins">
                   6699:     <xs:annotation>
                   6700:       <xs:documentation>
                   6701:         The HTML &lt;ins&gt; Element (or HTML Inserted Text) HTML represents a range of text that has been added to a document.
                   6702:       </xs:documentation>
                   6703:     </xs:annotation>
                   6704:     <xs:complexType mixed="true">
                   6705:       <xs:complexContent>
                   6706:         <xs:extension base="inlineBaseType">
                   6707:           <xs:attribute name="cite" type="xs:anyURI"/>
                   6708:           <xs:attribute name="datetime" type="xs:dateTime"/>
                   6709:         </xs:extension>
                   6710:       </xs:complexContent>
                   6711:     </xs:complexType>
                   6712:   </xs:element>
                   6713:   <xs:element name="del">
                   6714:     <xs:annotation>
                   6715:       <xs:documentation>
                   6716:         The HTML &lt;del&gt; element (or HTML Deleted Text Element) represents a range of text that has been deleted from a document. This element is often (but need not be) rendered with strike-through text.
                   6717:       </xs:documentation>
                   6718:     </xs:annotation>
                   6719:     <xs:complexType mixed="true">
                   6720:       <xs:complexContent>
                   6721:         <xs:extension base="inlineBaseType">
                   6722:           <xs:attribute name="cite" type="xs:anyURI"/>
                   6723:           <xs:attribute name="datetime" type="xs:dateTime"/>
                   6724:         </xs:extension>
                   6725:       </xs:complexContent>
                   6726:     </xs:complexType>
                   6727:   </xs:element>
                   6728:   <xs:element name="var" type="inlineBaseType">
                   6729:     <xs:annotation>
                   6730:       <xs:documentation>
                   6731:         The HTML Variable Element (&lt;var&gt;) represents a variable in a mathematical expression or a programming context.
                   6732:       </xs:documentation>
                   6733:     </xs:annotation>
                   6734:   </xs:element>
                   6735:   <xs:element name="small" type="inlineBaseType">
                   6736:     <xs:annotation>
                   6737:       <xs:documentation>
                   6738:         The HTML Small Element (&lt;small&gt;) makes the text font size one size smaller (for example, from large to medium, or from small to x-small) down to the browser's minimum font size. In HTML5, this element is repurposed to represent side-comments and small print, including copyright and legal text, independent of its styled presentation.
                   6739:       </xs:documentation>
                   6740:     </xs:annotation>
                   6741:   </xs:element>
                   6742:   <xs:element name="big" type="inlineBaseType">
                   6743:     <xs:annotation>
                   6744:       <xs:documentation>
                   6745:         This feature is obsolete. Although it may still work in some browsers, its use is discouraged since it could be removed at any time. Try to avoid using it.
                   6746:       </xs:documentation>
                   6747:     </xs:annotation>
                   6748:   </xs:element>
                   6749:   <xs:element name="br">
                   6750:     <xs:annotation>
                   6751:       <xs:documentation>
                   6752:         The HTML &lt;br&gt; Element (or HTML Line Break Element) produces a line break in text (carriage-return). It is useful for writing a poem or an address, where the division of lines is significant.
                   6753:       </xs:documentation>
                   6754:     </xs:annotation>
                   6755:     <xs:complexType>
                   6756:     </xs:complexType>
                   6757:   </xs:element>
                   6758:   <xs:element name="hr">
                   6759:     <xs:annotation>
                   6760:       <xs:documentation>
                   6761:         The HTML &lt;hr&gt; element represents a thematic break between paragraph-level elements (for example, a change of scene in a story, or a shift of topic with a section). In previous versions of HTML, it represented a horizontal rule. It may still be displayed as a horizontal rule in visual browsers, but is now defined in semantic terms, rather than presentational terms.
                   6762:       </xs:documentation>
                   6763:     </xs:annotation>
                   6764:     <xs:complexType>
                   6765:       <xs:attributeGroup ref="coreattrs"/>
                   6766:     </xs:complexType>
                   6767:   </xs:element>
                   6768:   <xs:element name="address">
                   6769:     <xs:annotation>
                   6770:       <xs:documentation>
                   6771:         The HTML &lt;address&gt; Element may be used by authors to supply contact information for its nearest &lt;article&gt; or &lt;body&gt; ancestor; in the latter case, it applies to the whole document.
                   6772:       </xs:documentation>
                   6773:     </xs:annotation>
                   6774:     <xs:complexType mixed="true">
                   6775:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   6776:         <xs:group ref="text-only"/>
                   6777:       </xs:choice>
                   6778:       <xs:attributeGroup ref="coreattrs"/>
                   6779:     </xs:complexType>
                   6780:   </xs:element>
                   6781:   <xs:element name="blockquote">
                   6782:     <xs:annotation>
                   6783:       <xs:documentation>
                   6784:         The HTML &lt;blockquote&gt; Element (or HTML Block Quotation Element) indicates that the enclosed text is an extended quotation. Usually, this is rendered visually by indentation (to change &lt;blockquote&gt; indent, use CSS margin property). A URL for the source of the quotation may be given using the cite attribute, while a text representation of the source can be given using the &lt;cite&gt; element.
                   6785:       </xs:documentation>
                   6786:     </xs:annotation>
                   6787:     <xs:complexType mixed="true">
                   6788:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   6789:         <xs:group ref="text-only"/>
                   6790:       </xs:choice>
                   6791:       <xs:attributeGroup ref="coreattrs"/>
                   6792:       <xs:attribute name="cite" type="xs:anyURI"/>
                   6793:       <xs:attribute name="align">
                   6794:         <xs:simpleType>
                   6795:           <xs:restriction base="xs:string">
                   6796:             <xs:enumeration value="center"/>
                   6797:             <xs:enumeration value="left"/>
                   6798:             <xs:enumeration value="right"/>
                   6799:           </xs:restriction>
                   6800:         </xs:simpleType>
                   6801:       </xs:attribute>
                   6802:     </xs:complexType>
                   6803:   </xs:element>
                   6804:   <xs:simpleType name="htmlLength">
                   6805:     <xs:annotation>
                   6806:       <xs:documentation>
                   6807:         nn for pixels or nn% for percentage length
                   6808:       </xs:documentation>
                   6809:     </xs:annotation>
                   6810:     <xs:restriction base="xs:string">
                   6811:       <xs:pattern value="[\-+]?(\d+|\d+(\.\d+)?%)"/>
                   6812:     </xs:restriction>
                   6813:   </xs:simpleType>
                   6814:   <xs:simpleType name="htmlLength-or-perl">
                   6815:     <xs:union memberTypes="htmlLength perl"/>
                   6816:   </xs:simpleType>
                   6817:   <xs:element name="img">
                   6818:     <xs:annotation>
                   6819:       <xs:documentation>
                   6820:         The HTML &lt;img&gt; Element (or HTML Image Element) represents an image of the document.
                   6821:         
                   6822:         Usage note:
                   6823:         Browsers do not always display the image referenced by the element. This is the case for non-graphical browsers (including those used by people with vision impairments), or if the user chooses not to display images, or if the browser is unable to display the image because it is invalid or an unsupported type. In these cases, the browser may replace the image with the text defined in this element's alt attribute.
                   6824:       </xs:documentation>
                   6825:     </xs:annotation>
                   6826:     <xs:complexType>
                   6827:       <xs:attributeGroup ref="coreattrs"/>
                   6828:       <xs:attribute name="src" type="xs:anyURI" use="required">
                   6829:         <xs:annotation>
                   6830:           <xs:documentation>
                   6831:             Image URL.
                   6832:             On browsers supporting srcset, src is ignored if this one is provided.
                   6833:           </xs:documentation>
                   6834:         </xs:annotation>
                   6835:       </xs:attribute>
                   6836:       <xs:attribute name="alt" type="xs:string">
                   6837:         <xs:annotation>
                   6838:           <xs:documentation>
                   6839:             This attribute defines the alternative text describing the image. Users will see this displayed if the image URL is wrong, the image is not in one of the supported formats, or until the image is downloaded.
                   6840:             
                   6841:             Usage note: Omitting this attribute indicates that the image is a key part of the content, but no textual equivalent is available. Setting this attribute to the empty string indicates that this image is not a key part of the content; non-visual browsers may omit it from rendering.
                   6842:           </xs:documentation>
                   6843:         </xs:annotation>
                   6844:       </xs:attribute>
                   6845:       <xs:attribute name="width" type="htmlLength-or-perl">
                   6846:         <xs:annotation>
                   6847:           <xs:documentation>
                   6848:             The width of the image in pixels or percent.
                   6849:           </xs:documentation>
                   6850:         </xs:annotation>
                   6851:       </xs:attribute>
                   6852:       <xs:attribute name="height" type="htmlLength-or-perl">
                   6853:         <xs:annotation>
                   6854:           <xs:documentation>
                   6855:             The height of the image in pixels or percent.
                   6856:           </xs:documentation>
                   6857:         </xs:annotation>
                   6858:       </xs:attribute>
                   6859:       <xs:attribute name="TeXwidth">
                   6860:         <xs:annotation>
                   6861:           <xs:documentation>
                   6862:             Allows you to set the width of the image, in mm or %, as it will be rendered into the LaTeX document used to print the problem.
                   6863:           </xs:documentation>
                   6864:         </xs:annotation>
                   6865:         <xs:simpleType>
                   6866:           <xs:union memberTypes="perl">
                   6867:             <xs:simpleType>
                   6868:               <xs:restriction base="xs:string">
                   6869:                 <xs:pattern value="[0-9]+(\.[0-9]+)?(\s*%)?"/>
                   6870:               </xs:restriction>
                   6871:             </xs:simpleType>
                   6872:           </xs:union>
                   6873:         </xs:simpleType>
                   6874:       </xs:attribute>
                   6875:       <xs:attribute name="TeXheight" type="decimal-or-perl">
                   6876:         <xs:annotation>
                   6877:           <xs:documentation>
                   6878:             Allows you to set the height of the image, in mm, as it will be rendered into the LaTeX document used to print the problem.
                   6879:           </xs:documentation>
                   6880:         </xs:annotation>
                   6881:       </xs:attribute>
                   6882:       <xs:attribute name="align">
                   6883:         <xs:annotation>
                   6884:           <xs:documentation>
                   6885:             This attribute is deprecated since HTML 4.01 and obsolete since HTML5. Use the vertical-align CSS property instead.
                   6886:             
                   6887:             Specifies the alignment of the image relative to the enclosing text paragraph:
                   6888:             - bottom: The image will be aligned so that its bottom will be at the baseline of the surrounding text.
                   6889:             - middle: The image will be aligned so that its center-line will be at the baseline of the surrounding text.
                   6890:             - top: The image will be aligned so that its top will be at the baseline of the surrounding text.
                   6891:             - left: The image will be placed so that it is at the left of the surrounding text. The surrounding text will fill in the region to the right of the image.
                   6892:             - right: The image will be placed so that it is at the right of the surrounding text. The surrounding text will fill in the region to the left of the image.
                   6893:           </xs:documentation>
                   6894:         </xs:annotation>
                   6895:         <xs:simpleType>
                   6896:           <xs:union memberTypes="perl">
                   6897:             <xs:simpleType>
                   6898:               <xs:restriction base="xs:string">
                   6899:                 <xs:enumeration value="bottom"/>
                   6900:                 <xs:enumeration value="middle"/>
                   6901:                 <xs:enumeration value="top"/>
                   6902:                 <xs:enumeration value="left"/>
                   6903:                 <xs:enumeration value="right"/>
                   6904:               </xs:restriction>
                   6905:             </xs:simpleType>
                   6906:           </xs:union>
                   6907:         </xs:simpleType>
                   6908:       </xs:attribute>
                   6909:       <xs:attribute name="TeXwrap">
                   6910:         <xs:annotation>
                   6911:           <xs:documentation>
                   6912:             Allows you to select how the LaTeX document will attempt to wrap text around a horizontally aligned image.
                   6913:             parbox: \newline and \parbox will be used to place the image. This method ensures that text will not be wrapped on top of the image, however very little text will appear next to the image itself.
                   6914:             parpic: The picins package \parpic command will be used to place the image. This will wrap the remainder of the paragraph containing the picture around the image.
                   6915:             If, however, there is insufficient text to fill the space to the left or right of the image, the next paragraph may be wrapped on top of the image. In addition, \parpic does not always honor the end of the page, causing the image to extend below the page footer.
                   6916:           </xs:documentation>
                   6917:         </xs:annotation>
                   6918:         <xs:simpleType>
                   6919:           <xs:union memberTypes="perl">
                   6920:             <xs:simpleType>
                   6921:               <xs:restriction base="xs:string">
                   6922:                 <xs:enumeration value="none"/>
                   6923:                 <xs:enumeration value="parbox"/>
                   6924:                 <xs:enumeration value="parpic"/>
                   6925:                 <xs:enumeration value="wrapfigure"/>
                   6926:               </xs:restriction>
                   6927:             </xs:simpleType>
                   6928:           </xs:union>
                   6929:         </xs:simpleType>
                   6930:       </xs:attribute>
                   6931:       <xs:attribute default="no" name="encrypturl" type="yesno-or-perl"/>
                   6932:     </xs:complexType>
                   6933:   </xs:element>
                   6934:   <xs:element name="figure">
                   6935:     <xs:annotation>
                   6936:       <xs:documentation>
                   6937:         The HTML &lt;figure&gt; Element represents self-contained content, frequently with a caption (&lt;figcaption&gt;), and is typically referenced as a single unit. While it is related to the main flow, its position is independent of the main flow. Usually this is an image, an illustration, a diagram, a code snippet, or a schema that is referenced in the main text, but that can be moved to another page or to an appendix without affecting the main flow.
                   6938:         
                   6939:         Usage note: A caption can be associated with the &lt;figure&gt; element by inserting a &lt;figcaption&gt; inside it (as the first or the last child).
                   6940:       </xs:documentation>
                   6941:     </xs:annotation>
                   6942:     <xs:complexType mixed="true">
                   6943:       <xs:choice minOccurs="0">
                   6944:         <xs:sequence>
                   6945:           <xs:element ref="figcaption"/>
                   6946:           <xs:choice maxOccurs="unbounded" minOccurs="0">
                   6947:             <xs:group ref="text-only"/>
                   6948:           </xs:choice>
                   6949:         </xs:sequence>
                   6950:         <xs:sequence>
                   6951:           <xs:choice maxOccurs="unbounded">
                   6952:             <xs:group ref="text-only"/>
                   6953:           </xs:choice>
                   6954:           <xs:element minOccurs="0" ref="figcaption"/>
                   6955:         </xs:sequence>
                   6956:       </xs:choice>
                   6957:     </xs:complexType>
                   6958:   </xs:element>
                   6959:   <xs:element name="figcaption">
                   6960:     <xs:annotation>
                   6961:       <xs:documentation>
                   6962:         The HTML &lt;figcaption&gt; Element represents a caption or a legend associated with a figure or an illustration described by the rest of the data of the &lt;figure&gt; element which is its immediate ancestor which means &lt;figcaption&gt; can be the first or last element inside a &lt;figure&gt; block. Also, the HTML Figcaption Element is optional; if not provided, then the parent figure element will have no caption.
                   6963:       </xs:documentation>
                   6964:     </xs:annotation>
                   6965:     <xs:complexType mixed="true">
                   6966:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   6967:         <xs:group ref="text-only"/>
                   6968:       </xs:choice>
                   6969:     </xs:complexType>
                   6970:   </xs:element>
                   6971:   <xs:element name="object">
                   6972:     <xs:annotation>
                   6973:       <xs:documentation>
                   6974:         The HTML &lt;object&gt; Element (or HTML Embedded Object Element) represents an external resource, which can be treated as an image, a nested browsing context, or a resource to be handled by a plugin.
                   6975:       </xs:documentation>
                   6976:     </xs:annotation>
                   6977:     <xs:complexType mixed="true">
                   6978:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   6979:         <xs:element ref="param"/>
                   6980:         <xs:group ref="text-only"/>
                   6981:       </xs:choice>
                   6982:       <xs:attributeGroup ref="coreattrs"/>
                   6983:       <xs:attribute name="classid" type="xs:string">
                   6984:         <xs:annotation>
                   6985:           <xs:documentation>
                   6986:             The URI of the object's implementation. It can be used together with, or in place of, the data attribute.
                   6987:             Obsolete since HTML5.
                   6988:           </xs:documentation>
                   6989:         </xs:annotation>
                   6990:       </xs:attribute>
                   6991:       <xs:attribute name="codebase" type="xs:anyURI">
                   6992:         <xs:annotation>
                   6993:           <xs:documentation>
                   6994:             The base path used to resolve relative URIs specified by classid, data, or archive. If not specified, the default is the base URI of the current document.
                   6995:             Obsolete since HTML5.
                   6996:           </xs:documentation>
                   6997:         </xs:annotation>
                   6998:       </xs:attribute>
                   6999:       <xs:attribute name="data" type="xs:anyURI">
                   7000:         <xs:annotation>
                   7001:           <xs:documentation>
                   7002:             The address of the resource as a valid URL. At least one of data and type must be defined.
                   7003:           </xs:documentation>
                   7004:         </xs:annotation>
                   7005:       </xs:attribute>
                   7006:       <xs:attribute name="type" type="xs:string">
                   7007:         <xs:annotation>
                   7008:           <xs:documentation>
                   7009:             The content type of the resource specified by data. At least one of data and type must be defined.
                   7010:           </xs:documentation>
                   7011:         </xs:annotation>
                   7012:       </xs:attribute>
                   7013:       <xs:attribute name="codetype" type="xs:string">
                   7014:         <xs:annotation>
                   7015:           <xs:documentation>
                   7016:             The content type of the data specified by classid.
                   7017:             Obsolete since HTML5.
                   7018:           </xs:documentation>
                   7019:         </xs:annotation>
                   7020:       </xs:attribute>
                   7021:       <xs:attribute name="archive">
                   7022:         <xs:annotation>
                   7023:           <xs:documentation>
                   7024:             A space-separated list of URIs for archives of resources for the object.
                   7025:             Obsolete since HTML5.
                   7026:           </xs:documentation>
                   7027:         </xs:annotation>
                   7028:         <xs:simpleType>
                   7029:           <xs:list itemType="xs:anyURI"/>
                   7030:         </xs:simpleType>
                   7031:       </xs:attribute>
                   7032:       <xs:attribute name="standby" type="xs:string">
                   7033:         <xs:annotation>
                   7034:           <xs:documentation>
                   7035:             A message that the browser can show while loading the object's implementation and data.
                   7036:             Obsolete since HTML5.
                   7037:           </xs:documentation>
                   7038:         </xs:annotation>
                   7039:       </xs:attribute>
                   7040:       <xs:attribute name="width" type="htmlLength-or-perl">
                   7041:         <xs:annotation>
                   7042:           <xs:documentation>
                   7043:             The width of the display resource, in CSS pixels.
                   7044:           </xs:documentation>
                   7045:         </xs:annotation>
                   7046:       </xs:attribute>
                   7047:       <xs:attribute name="height" type="htmlLength-or-perl">
                   7048:         <xs:annotation>
                   7049:           <xs:documentation>
                   7050:             The height of the displayed resource, in CSS pixels.
                   7051:           </xs:documentation>
                   7052:         </xs:annotation>
                   7053:       </xs:attribute>
                   7054:       <xs:attribute name="usemap" type="xs:string">
                   7055:         <xs:annotation>
                   7056:           <xs:documentation>
                   7057:             A hash-name reference to a &lt;map&gt; element; that is a '#' followed by the value of a name of a map element.
                   7058:           </xs:documentation>
                   7059:         </xs:annotation>
                   7060:       </xs:attribute>
                   7061:       <xs:attribute name="name" type="xs:NMTOKEN">
                   7062:         <xs:annotation>
                   7063:           <xs:documentation>
                   7064:             The name of valid browsing context (HTML5), or the name of the control (HTML 4).
                   7065:           </xs:documentation>
                   7066:         </xs:annotation>
                   7067:       </xs:attribute>
                   7068:     </xs:complexType>
                   7069:   </xs:element>
                   7070:   <xs:element name="param">
                   7071:     <xs:annotation>
                   7072:       <xs:documentation>
                   7073:         param is used to supply a named property value
                   7074:       </xs:documentation>
                   7075:     </xs:annotation>
                   7076:     <xs:complexType>
                   7077:       <xs:attribute name="id" type="xs:ID"/>
                   7078:       <xs:attribute name="name">
                   7079:         <xs:annotation>
                   7080:           <xs:documentation>
                   7081:             Name of the parameter.
                   7082:           </xs:documentation>
                   7083:         </xs:annotation>
                   7084:       </xs:attribute>
                   7085:       <xs:attribute name="value">
                   7086:         <xs:annotation>
                   7087:           <xs:documentation>
                   7088:             Specifies the value of the parameter.
                   7089:           </xs:documentation>
                   7090:         </xs:annotation>
                   7091:       </xs:attribute>
                   7092:       <xs:attribute default="data" name="valuetype">
                   7093:         <xs:annotation>
                   7094:           <xs:documentation>
                   7095:             Obsolete in HTML5.
                   7096:             
                   7097:             Specifies the type of the value attribute.
                   7098:           </xs:documentation>
                   7099:         </xs:annotation>
                   7100:         <xs:simpleType>
                   7101:           <xs:restriction base="xs:token">
                   7102:             <xs:enumeration value="data"/>
                   7103:             <xs:enumeration value="ref"/>
                   7104:             <xs:enumeration value="object"/>
                   7105:           </xs:restriction>
                   7106:         </xs:simpleType>
                   7107:       </xs:attribute>
                   7108:       <xs:attribute name="type" type="xs:string">
                   7109:         <xs:annotation>
                   7110:           <xs:documentation>
                   7111:             Obsolete in HTML5.
                   7112:             
                   7113:             Only used if the valuetype is set to "ref". Specifies the MIME type of values found at the URI specified by value.
                   7114:           </xs:documentation>
                   7115:         </xs:annotation>
                   7116:       </xs:attribute>
                   7117:     </xs:complexType>
                   7118:   </xs:element>
                   7119:   <xs:element name="embed">
                   7120:     <xs:annotation>
                   7121:       <xs:documentation>
                   7122:         The HTML &lt;embed&gt; Element represents an integration point for an external application or interactive content (in other words, a plug-in).
                   7123:       </xs:documentation>
                   7124:     </xs:annotation>
                   7125:     <xs:complexType>
                   7126:       <xs:attribute name="id" type="xs:ID"/>
                   7127:       <xs:attribute name="src" type="xs:anyURI">
                   7128:         <xs:annotation>
                   7129:           <xs:documentation>
                   7130:             The URL of the resource being embedded.
                   7131:           </xs:documentation>
                   7132:         </xs:annotation>
                   7133:       </xs:attribute>
                   7134:       <xs:attribute name="type" type="xs:string">
                   7135:         <xs:annotation>
                   7136:           <xs:documentation>
                   7137:             The MIME type to use to select the plug-in to instantiate.
                   7138:           </xs:documentation>
                   7139:         </xs:annotation>
                   7140:       </xs:attribute>
                   7141:       <xs:attribute name="width" type="non-negative-int-or-perl">
                   7142:         <xs:annotation>
                   7143:           <xs:documentation>
                   7144:             The displayed width of the resource, in CSS pixels.
                   7145:           </xs:documentation>
                   7146:         </xs:annotation>
                   7147:       </xs:attribute>
                   7148:       <xs:attribute name="height" type="non-negative-int-or-perl">
                   7149:         <xs:annotation>
                   7150:           <xs:documentation>
                   7151:             The displayed height of the resource, in CSS pixels.
                   7152:           </xs:documentation>
                   7153:         </xs:annotation>
                   7154:       </xs:attribute>
                   7155:     </xs:complexType>
                   7156:   </xs:element>
                   7157:   <xs:element name="applet">
                   7158:     <xs:annotation>
                   7159:       <xs:documentation>
                   7160:         This feature is obsolete. Although it may still work in some browsers, its use is discouraged since it could be removed at any time. Try to avoid using it.
                   7161:       </xs:documentation>
                   7162:     </xs:annotation>
                   7163:     <xs:complexType mixed="true">
                   7164:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   7165:         <xs:element ref="param"/>
                   7166:         <xs:group ref="text-only"/>
                   7167:       </xs:choice>
                   7168:       <xs:attribute name="id" type="xs:ID"/>
                   7169:       <xs:attribute name="codebase" type="xs:anyURI"/>
                   7170:       <xs:attribute name="archive" type="xs:string">
                   7171:         <xs:annotation>
                   7172:           <xs:documentation>
                   7173:             Comma-separated list of URIs for archives containing classes and other resources that will be "preloaded".
                   7174:           </xs:documentation>
                   7175:         </xs:annotation>
                   7176:       </xs:attribute>
                   7177:       <xs:attribute name="code"/>
                   7178:       <xs:attribute name="object"/>
                   7179:       <xs:attribute name="alt" type="xs:string"/>
                   7180:       <xs:attribute name="name" type="xs:NMTOKEN"/>
                   7181:       <xs:attribute name="width" type="non-negative-int-or-perl" use="required"/>
                   7182:       <xs:attribute name="height" type="non-negative-int-or-perl" use="required"/>
                   7183:       <xs:attribute name="align">
                   7184:         <xs:simpleType>
                   7185:           <xs:restriction base="xs:token">
                   7186:             <xs:enumeration value="top"/>
                   7187:             <xs:enumeration value="middle"/>
                   7188:             <xs:enumeration value="bottom"/>
                   7189:             <xs:enumeration value="left"/>
                   7190:             <xs:enumeration value="right"/>
                   7191:           </xs:restriction>
                   7192:         </xs:simpleType>
                   7193:       </xs:attribute>
                   7194:       <xs:attribute name="hspace" type="xs:nonNegativeInteger"/>
                   7195:       <xs:attribute name="vspace" type="xs:nonNegativeInteger"/>
                   7196:     </xs:complexType>
                   7197:   </xs:element>
                   7198:   <xs:element name="video">
                   7199:     <xs:annotation>
                   7200:       <xs:documentation>
                   7201:         The HTML &lt;video&gt; element is used to embed video content. It may contain several video sources, represented using the src attribute or the &lt;source&gt; element; the browser will choose the most suitable one.
                   7202:       </xs:documentation>
                   7203:     </xs:annotation>
                   7204:     <xs:complexType mixed="true">
                   7205:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   7206:         <xs:element ref="source"/>
                   7207:       </xs:choice>
                   7208:       <xs:attributeGroup ref="coreattrs"/>
                   7209:       <xs:attribute name="src" type="xs:anyURI"/>
                   7210:       <xs:attribute name="width" type="non-negative-int-or-perl"/>
                   7211:       <xs:attribute name="height" type="non-negative-int-or-perl"/>
                   7212:       <xs:attribute name="autoplay">
                   7213:         <xs:simpleType>
                   7214:           <xs:restriction base="xs:string">
                   7215:             <xs:enumeration value="autoplay"/>
                   7216:           </xs:restriction>
                   7217:         </xs:simpleType>
                   7218:       </xs:attribute>
                   7219:       <xs:attribute name="controls">
                   7220:         <xs:simpleType>
                   7221:           <xs:restriction base="xs:string">
                   7222:             <xs:enumeration value="controls"/>
                   7223:           </xs:restriction>
                   7224:         </xs:simpleType>
                   7225:       </xs:attribute>
                   7226:       <xs:attribute name="loop">
                   7227:         <xs:simpleType>
                   7228:           <xs:restriction base="xs:string">
                   7229:             <xs:enumeration value="loop"/>
                   7230:           </xs:restriction>
                   7231:         </xs:simpleType>
                   7232:       </xs:attribute>
                   7233:     </xs:complexType>
                   7234:   </xs:element>
                   7235:   <xs:element name="source">
                   7236:     <xs:annotation>
                   7237:       <xs:documentation>
                   7238:         The HTML &lt;source&gt; element is used to specify multiple media resources for &lt;picture&gt;, &lt;audio&gt; and &lt;video&gt; elements. It is an empty element. It is commonly used to serve the same media in multiple formats supported by different browsers.
                   7239:       </xs:documentation>
                   7240:     </xs:annotation>
                   7241:     <xs:complexType>
                   7242:       <xs:attribute name="src" type="xs:anyURI" use="required"/>
                   7243:       <xs:attribute name="type" type="xs:string"/>
                   7244:     </xs:complexType>
                   7245:   </xs:element>
                   7246:   <xs:element name="audio">
                   7247:     <xs:annotation>
                   7248:       <xs:documentation>
                   7249:         The HTML &lt;audio&gt; element is used to embed sound content in documents. It may contain several audio sources, represented using the src attribute or the &lt;source&gt; element; the browser will choose the most suitable one.
                   7250:       </xs:documentation>
                   7251:     </xs:annotation>
                   7252:     <xs:complexType mixed="true">
                   7253:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   7254:         <xs:element ref="source"/>
                   7255:       </xs:choice>
                   7256:       <xs:attributeGroup ref="coreattrs"/>
                   7257:       <xs:attribute name="src" type="xs:anyURI"/>
                   7258:       <xs:attribute name="autoplay">
                   7259:         <xs:simpleType>
                   7260:           <xs:restriction base="xs:string">
                   7261:             <xs:enumeration value="autoplay"/>
                   7262:           </xs:restriction>
                   7263:         </xs:simpleType>
                   7264:       </xs:attribute>
                   7265:       <xs:attribute name="controls">
                   7266:         <xs:simpleType>
                   7267:           <xs:restriction base="xs:string">
                   7268:             <xs:enumeration value="controls"/>
                   7269:           </xs:restriction>
                   7270:         </xs:simpleType>
                   7271:       </xs:attribute>
                   7272:       <xs:attribute name="loop">
                   7273:         <xs:simpleType>
                   7274:           <xs:restriction base="xs:string">
                   7275:             <xs:enumeration value="loop"/>
                   7276:           </xs:restriction>
                   7277:         </xs:simpleType>
                   7278:       </xs:attribute>
                   7279:     </xs:complexType>
                   7280:   </xs:element>
                   7281:   
                   7282:   <xs:element name="map">
                   7283:     <xs:annotation>
                   7284:       <xs:documentation>
                   7285:         The HTML &lt;map&gt; element is used with &lt;area&gt; elements to define an image map (a clickable link area).
                   7286:       </xs:documentation>
                   7287:     </xs:annotation>
                   7288:     <xs:complexType>
                   7289:       <xs:choice>
                   7290:         <xs:choice maxOccurs="unbounded">
                   7291:           <xs:group ref="blocks-with-text"/>
                   7292:         </xs:choice>
                   7293:         <xs:element maxOccurs="unbounded" ref="area"/>
                   7294:       </xs:choice>
                   7295:       <xs:attribute name="id" type="xs:ID" use="required"/>
                   7296:       <xs:attribute name="class" type="xs:NMTOKENS"/>
                   7297:       <xs:attribute name="style" type="xs:string"/>
                   7298:       <xs:attribute name="title" type="xs:string"/>
                   7299:       <xs:attribute name="name" type="xs:NMTOKEN"/>
                   7300:     </xs:complexType>
                   7301:   </xs:element>
                   7302:   <xs:element name="area">
                   7303:     <xs:annotation>
                   7304:       <xs:documentation>
                   7305:         The HTML &lt;area&gt; element defines a hot-spot region on an image, and optionally associates it with a hypertext link. This element is used only within a &lt;map&gt; element.
                   7306:       </xs:documentation>
                   7307:     </xs:annotation>
                   7308:     <xs:complexType>
                   7309:       <xs:attribute default="rect" name="shape">
                   7310:         <xs:annotation>
                   7311:           <xs:documentation>
                   7312:             The shape of the associated hot spot. The specifications for HTML 5 and HTML 4 define the values rect, which defines a rectangular region; circle, which defines a circular region; poly, which defines a polygon; and default, which indicates the entire region beyond any defined shapes.
                   7313:             Many browsers, notably Internet Explorer 4 and higher, support circ, polygon, and rectangle as valid values for shape; these values are *not standard*.
                   7314:           </xs:documentation>
                   7315:         </xs:annotation>
                   7316:         <xs:simpleType>
                   7317:           <xs:restriction base="xs:token">
                   7318:             <xs:enumeration value="rect"/>
                   7319:             <xs:enumeration value="circle"/>
                   7320:             <xs:enumeration value="poly"/>
                   7321:             <xs:enumeration value="default"/>
                   7322:           </xs:restriction>
                   7323:         </xs:simpleType>
                   7324:       </xs:attribute>
                   7325:       <xs:attribute name="coords">
                   7326:         <xs:annotation>
                   7327:           <xs:documentation>
                   7328:             A set of values specifying the coordinates of the hot-spot region. The number and meaning of the values depend upon the value specified for the shape attribute. For a rect or rectangle shape, the coords value is two x,y pairs: left, top, right, and bottom. For a circle shape, the value is x,y,r where x,y is a pair specifying the center of the circle and r is a value for the radius. For a poly or polygon&lt; shape, the value is a set of x,y pairs for each point in the polygon: x1,y1,x2,y2,x3,y3, and so on. In HTML4, the values are numbers of pixels or percentages, if a percent sign (%) is appended; in HTML5, the values are numbers of CSS pixels.
                   7329:           </xs:documentation>
                   7330:         </xs:annotation>
                   7331:         <xs:simpleType>
                   7332:           <xs:restriction base="xs:string">
                   7333:             <xs:pattern value="[\-+]?(\d+|\d+(\.\d+)?%)(,\s*[\-+]?(\d+|\d+(\.\d+)?%))*"/>
                   7334:           </xs:restriction>
                   7335:         </xs:simpleType>
                   7336:       </xs:attribute>
                   7337:       <xs:attribute name="href" type="xs:anyURI">
                   7338:         <xs:annotation>
                   7339:           <xs:documentation>
                   7340:             The hyperlink target for the area. Its value is a valid URL. In HTML4, either this attribute or the nohref attribute must be present in the element. In HTML5, this attribute may be omitted; if so, the area element does not represent a hyperlink.
                   7341:           </xs:documentation>
                   7342:         </xs:annotation>
                   7343:       </xs:attribute>
                   7344:       <xs:attribute name="nohref">
                   7345:         <xs:annotation>
                   7346:           <xs:documentation>
                   7347:             Indicates that no hyperlink exists for the associated area. Either this attribute or the href attribute must be present in the element.
                   7348:             
                   7349:             Usage note: This attribute is obsolete in HTML5, instead omitting the href attribute is sufficient.
                   7350:           </xs:documentation>
                   7351:         </xs:annotation>
                   7352:         <xs:simpleType>
                   7353:           <xs:restriction base="xs:token">
                   7354:             <xs:enumeration value="nohref"/>
                   7355:           </xs:restriction>
                   7356:         </xs:simpleType>
                   7357:       </xs:attribute>
                   7358:       <xs:attribute name="alt" type="xs:string" use="required">
                   7359:         <xs:annotation>
                   7360:           <xs:documentation>
                   7361:             A text string alternative to display on browsers that do not display images. The text should be phrased so that it presents the user with the same kind of choice as the image would offer when displayed without the alternative text. In HTML4, this attribute is required, but may be the empty string (""). In HTML5, this attribute is required only if the href attribute is used.
                   7362:           </xs:documentation>
                   7363:         </xs:annotation>
                   7364:       </xs:attribute>
                   7365:     </xs:complexType>
                   7366:   </xs:element>
                   7367:   <xs:element name="canvas">
                   7368:     <xs:annotation>
                   7369:       <xs:documentation>
                   7370:         The HTML &lt;canvas&gt; Element can be used to draw graphics via scripting (usually JavaScript). For example, it can be used to draw graphs, make photo compositions or even perform animations. You may (and should) provide alternate content inside the &lt;canvas&gt; block. That content will be rendered both on older browsers that don't support canvas and in browsers with JavaScript disabled.
                   7371:       </xs:documentation>
                   7372:     </xs:annotation>
                   7373:     <xs:complexType mixed="true">
                   7374:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   7375:         <xs:group ref="blocks-with-text"/>
                   7376:         <xs:group ref="inlines"/>
                   7377:       </xs:choice>
                   7378:       <xs:attributeGroup ref="coreattrs"/>
                   7379:       <xs:attribute default="300" name="width" type="htmlLength-or-perl">
                   7380:         <xs:annotation>
                   7381:           <xs:documentation>
                   7382:             The width of the coordinate space in CSS pixels.
                   7383:           </xs:documentation>
                   7384:         </xs:annotation>
                   7385:       </xs:attribute>
                   7386:       <xs:attribute default="150" name="height" type="htmlLength-or-perl">
                   7387:         <xs:annotation>
                   7388:           <xs:documentation>
                   7389:             The height of the coordinate space in CSS pixels.
                   7390:           </xs:documentation>
                   7391:         </xs:annotation>
                   7392:       </xs:attribute>
                   7393:     </xs:complexType>
                   7394:   </xs:element>
                   7395:   
                   7396:   <xs:element name="form">
                   7397:     <xs:annotation>
                   7398:       <xs:documentation>
                   7399:         The HTML &lt;form&gt; element represents a document section that contains interactive controls to submit information to a web server.
                   7400:       </xs:documentation>
                   7401:     </xs:annotation>
                   7402:     <xs:complexType>
                   7403:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   7404:         <xs:group ref="blocks-with-text"/>
                   7405:       </xs:choice>
                   7406:       <xs:attributeGroup ref="coreattrs"/>
                   7407:       <xs:attribute name="action" type="xs:anyURI">
                   7408:         <xs:annotation>
                   7409:           <xs:documentation>
                   7410:             The URI of a program that processes the form information.
                   7411:             
                   7412:             In HTML5, the action attribute is no longer required.
                   7413:           </xs:documentation>
                   7414:         </xs:annotation>
                   7415:       </xs:attribute>
                   7416:       <xs:attribute default="get" name="method">
                   7417:         <xs:annotation>
                   7418:           <xs:documentation>
                   7419:             The HTTP method that the browser uses to submit the form. Possible values are:
                   7420:             
                   7421:             - post: Corresponds to the HTTP POST method ; form data are included in the body of the form and sent to the server.
                   7422:             
                   7423:             - get: Corresponds to the HTTP GET method; form data are appended to the action attribute URI with a '?' as separator, and the resulting URI is sent to the server. Use this method when the form has no side-effects and contains only ASCII characters.
                   7424:           </xs:documentation>
                   7425:         </xs:annotation>
                   7426:         <xs:simpleType>
                   7427:           <xs:restriction base="xs:token">
                   7428:             <xs:enumeration value="get"/>
                   7429:             <xs:enumeration value="post"/>
                   7430:           </xs:restriction>
                   7431:         </xs:simpleType>
                   7432:       </xs:attribute>
                   7433:       <xs:attribute default="application/x-www-form-urlencoded" name="enctype" type="xs:string">
                   7434:         <xs:annotation>
                   7435:           <xs:documentation>
                   7436:             When the value of the method attribute is post, enctype is the MIME type of content that is used to submit the form to the server. Possible values are:
                   7437:             
                   7438:             - application/x-www-form-urlencoded: The default value if the attribute is not specified.
                   7439:             - multipart/form-data: The value used for an &lt;input&gt; element with the type attribute set to "file".
                   7440:             - text/plain (HTML5)
                   7441:           </xs:documentation>
                   7442:         </xs:annotation>
                   7443:       </xs:attribute>
                   7444:       <xs:attribute name="accept-charset" type="xs:string">
                   7445:         <xs:annotation>
                   7446:           <xs:documentation>
                   7447:             A space- or comma-delimited list of character encodings that the server accepts. The browser uses them in the order in which they are listed. The default value, the reserved string "UNKNOWN", indicates the same encoding as that of the document containing the form element.
                   7448:             
                   7449:             In previous versions of HTML, the different character encodings could be delimited by spaces or commas. In HTML5, only spaces are allowed as delimiters.
                   7450:           </xs:documentation>
                   7451:         </xs:annotation>
                   7452:       </xs:attribute>
                   7453:       <xs:attribute name="name" type="xs:string">
                   7454:         <xs:annotation>
                   7455:           <xs:documentation>
                   7456:             The name of the form. In HTML 4, its use is deprecated (id should be used instead). It must be unique among the forms in a document and not just an empty string in HTML 5.
                   7457:           </xs:documentation>
                   7458:         </xs:annotation>
                   7459:       </xs:attribute>
                   7460:       <xs:attribute name="accept" type="xs:string">
                   7461:         <xs:annotation>
                   7462:           <xs:documentation>
                   7463:             A comma-separated list of content types that the server accepts.
                   7464:             
                   7465:             Usage note: This attribute has been removed in HTML5 and should no longer be used. Instead, use the accept attribute of the specific &lt;input&gt; element.
                   7466:           </xs:documentation>
                   7467:         </xs:annotation>
                   7468:       </xs:attribute>
                   7469:       <xs:attribute name="onsubmit" type="xs:string"/>
                   7470:       <xs:attribute name="onreset" type="xs:string"/>
                   7471:     </xs:complexType>
                   7472:   </xs:element>
                   7473:   <xs:element name="label">
                   7474:     <xs:annotation>
                   7475:       <xs:documentation>
                   7476:         The HTML &lt;label&gt; Element represents a caption for an item in a user interface. It can be associated with a control either by placing the control element inside the label element, or by using the for attribute. Such a control is called the labeled control of the label element.
                   7477:       </xs:documentation>
                   7478:     </xs:annotation>
                   7479:     <xs:complexType mixed="true">
                   7480:       <xs:complexContent>
                   7481:         <xs:extension base="inlineBaseType">
                   7482:           <xs:attribute name="for" type="xs:IDREF"/>
                   7483:           <xs:attribute name="accesskey">
                   7484:             <xs:simpleType>
                   7485:               <xs:restriction base="xs:string">
                   7486:                 <xs:length fixed="true" value="1"/>
                   7487:               </xs:restriction>
                   7488:             </xs:simpleType>
                   7489:           </xs:attribute>
                   7490:           <xs:attribute name="onfocus" type="xs:string"/>
                   7491:           <xs:attribute name="onblur" type="xs:string"/>
                   7492:         </xs:extension>
                   7493:       </xs:complexContent>
                   7494:     </xs:complexType>
                   7495:   </xs:element>
                   7496:   <xs:simpleType name="InputType">
                   7497:     <xs:restriction base="xs:token">
                   7498:       <xs:enumeration value="text"/>
                   7499:       <xs:enumeration value="password"/>
                   7500:       <xs:enumeration value="checkbox"/>
                   7501:       <xs:enumeration value="radio"/>
                   7502:       <xs:enumeration value="submit"/>
                   7503:       <xs:enumeration value="reset"/>
                   7504:       <xs:enumeration value="file"/>
                   7505:       <xs:enumeration value="hidden"/>
                   7506:       <xs:enumeration value="image"/>
                   7507:       <xs:enumeration value="button"/>
                   7508:     </xs:restriction>
                   7509:   </xs:simpleType>
                   7510:   <xs:element name="input">
                   7511:     <xs:annotation>
                   7512:       <xs:documentation>
                   7513:         The HTML &lt;input&gt; element is used to create interactive controls for web-based forms in order to accept data from user. 
                   7514:       </xs:documentation>
                   7515:     </xs:annotation>
                   7516:     <xs:complexType>
                   7517:       <xs:attributeGroup ref="coreattrs"/>
                   7518:       <xs:attribute default="text" name="type" type="InputType"/>
                   7519:       <xs:attribute name="name">
                   7520:         <xs:annotation>
                   7521:           <xs:documentation>
                   7522:             the name attribute is required for all but submit &amp; reset
                   7523:           </xs:documentation>
                   7524:         </xs:annotation>
                   7525:       </xs:attribute>
                   7526:       <xs:attribute name="value"/>
                   7527:       <xs:attribute name="checked">
                   7528:         <xs:simpleType>
                   7529:           <xs:restriction base="xs:token">
                   7530:             <xs:enumeration value="checked"/>
                   7531:           </xs:restriction>
                   7532:         </xs:simpleType>
                   7533:       </xs:attribute>
                   7534:       <xs:attribute name="disabled">
                   7535:         <xs:simpleType>
                   7536:           <xs:restriction base="xs:token">
                   7537:             <xs:enumeration value="disabled"/>
                   7538:           </xs:restriction>
                   7539:         </xs:simpleType>
                   7540:       </xs:attribute>
                   7541:       <xs:attribute name="readonly">
                   7542:         <xs:simpleType>
                   7543:           <xs:restriction base="xs:token">
                   7544:             <xs:enumeration value="readonly"/>
                   7545:           </xs:restriction>
                   7546:         </xs:simpleType>
                   7547:       </xs:attribute>
                   7548:       <xs:attribute name="size"/>
                   7549:       <xs:attribute name="maxlength" type="xs:nonNegativeInteger"/>
                   7550:       <xs:attribute name="src" type="xs:anyURI"/>
                   7551:       <xs:attribute name="alt"/>
                   7552:       <xs:attribute name="usemap" type="xs:anyURI"/>
                   7553:       <xs:attribute name="onselect" type="xs:string"/>
                   7554:       <xs:attribute name="onchange" type="xs:string"/>
                   7555:       <xs:attribute name="accept" type="xs:string"/>
                   7556:       <xs:attribute name="onclick" type="xs:string">
                   7557:         <xs:annotation>
                   7558:           <xs:documentation>
                   7559:             Javascript event handler content attribute for the "click" event.
                   7560:             
                   7561:             Warning: event handler content attributes should be avoided. They make the markup bigger and less readable. Concerns of content/structure and behavior are not well-separated, making a bug harder to find. Furthermore, usage of event attributes almost always causes scripts to expose global functions on the Window object, polluting the global namespace.
                   7562:             
                   7563:             The EventTarget.addEventListener() function should be used instead to add a listener for the event.
                   7564:           </xs:documentation>
                   7565:         </xs:annotation>
                   7566:       </xs:attribute>
                   7567:     </xs:complexType>
                   7568:   </xs:element>
                   7569:   <xs:element name="select">
                   7570:     <xs:annotation>
                   7571:       <xs:documentation>
                   7572:         The HTML select (&lt;select&gt;) element represents a control that presents a menu of options. The options within the menu are represented by &lt;option&gt; elements, which can be grouped by &lt;optgroup&gt; elements. Options can be pre-selected for the user.
                   7573:       </xs:documentation>
                   7574:     </xs:annotation>
                   7575:     <xs:complexType>
                   7576:       <xs:choice maxOccurs="unbounded">
                   7577:         <xs:element ref="optgroup"/>
                   7578:         <xs:element ref="option"/>
                   7579:       </xs:choice>
                   7580:       <xs:attribute name="name"/>
                   7581:       <xs:attribute name="size" type="xs:nonNegativeInteger"/>
                   7582:       <xs:attribute name="multiple">
                   7583:         <xs:simpleType>
                   7584:           <xs:restriction base="xs:token">
                   7585:             <xs:enumeration value="multiple"/>
                   7586:           </xs:restriction>
                   7587:         </xs:simpleType>
                   7588:       </xs:attribute>
                   7589:       <xs:attribute name="disabled">
                   7590:         <xs:simpleType>
                   7591:           <xs:restriction base="xs:token">
                   7592:             <xs:enumeration value="disabled"/>
                   7593:           </xs:restriction>
                   7594:         </xs:simpleType>
                   7595:       </xs:attribute>
                   7596:       <xs:attribute name="tabindex" type="xs:nonNegativeInteger"/>
                   7597:       <xs:attribute name="onfocus" type="xs:string"/>
                   7598:       <xs:attribute name="onblur" type="xs:string"/>
                   7599:       <xs:attribute name="onchange" type="xs:string"/>
                   7600:     </xs:complexType>
                   7601:   </xs:element>
                   7602:   <xs:element name="optgroup">
                   7603:     <xs:annotation>
                   7604:       <xs:documentation>
                   7605:         In a Web form, the HTML &lt;optgroup&gt; element creates a grouping of options within a &lt;select&gt; element.
                   7606:       </xs:documentation>
                   7607:     </xs:annotation>
                   7608:     <xs:complexType>
                   7609:       <xs:sequence>
                   7610:         <xs:element maxOccurs="unbounded" ref="option"/>
                   7611:       </xs:sequence>
                   7612:       <xs:attribute name="disabled">
                   7613:         <xs:simpleType>
                   7614:           <xs:restriction base="xs:token">
                   7615:             <xs:enumeration value="disabled"/>
                   7616:           </xs:restriction>
                   7617:         </xs:simpleType>
                   7618:       </xs:attribute>
                   7619:       <xs:attribute name="label" type="xs:string" use="required"/>
                   7620:     </xs:complexType>
                   7621:   </xs:element>
                   7622:   <xs:element name="option">
                   7623:     <xs:annotation>
                   7624:       <xs:documentation>
                   7625:         In a Web form, the HTML &lt;option&gt; element is used to create a control representing an item within a &lt;select&gt;, an &lt;optgroup&gt; or a &lt;datalist&gt; HTML5 element.
                   7626:       </xs:documentation>
                   7627:     </xs:annotation>
                   7628:     <xs:complexType mixed="true">
                   7629:       <xs:attribute name="selected">
                   7630:         <xs:simpleType>
                   7631:           <xs:restriction base="xs:token">
                   7632:             <xs:enumeration value="selected"/>
                   7633:           </xs:restriction>
                   7634:         </xs:simpleType>
                   7635:       </xs:attribute>
                   7636:       <xs:attribute name="disabled">
                   7637:         <xs:simpleType>
                   7638:           <xs:restriction base="xs:token">
                   7639:             <xs:enumeration value="disabled"/>
                   7640:           </xs:restriction>
                   7641:         </xs:simpleType>
                   7642:       </xs:attribute>
                   7643:       <xs:attribute name="label" type="xs:string"/>
                   7644:       <xs:attribute name="value"/>
                   7645:     </xs:complexType>
                   7646:   </xs:element>
                   7647:   <xs:element name="textarea">
                   7648:     <xs:annotation>
                   7649:       <xs:documentation>
                   7650:         The HTML &lt;textarea&gt; element represents a multi-line plain-text editing control.
                   7651:       </xs:documentation>
                   7652:     </xs:annotation>
                   7653:     <xs:complexType mixed="true">
                   7654:       <xs:attribute name="name"/>
                   7655:       <xs:attribute name="rows" type="xs:nonNegativeInteger" use="required"/>
                   7656:       <xs:attribute name="cols" type="xs:nonNegativeInteger" use="required"/>
                   7657:       <xs:attribute name="disabled">
                   7658:         <xs:simpleType>
                   7659:           <xs:restriction base="xs:token">
                   7660:             <xs:enumeration value="disabled"/>
                   7661:           </xs:restriction>
                   7662:         </xs:simpleType>
                   7663:       </xs:attribute>
                   7664:       <xs:attribute name="readonly">
                   7665:         <xs:simpleType>
                   7666:           <xs:restriction base="xs:token">
                   7667:             <xs:enumeration value="readonly"/>
                   7668:           </xs:restriction>
                   7669:         </xs:simpleType>
                   7670:       </xs:attribute>
                   7671:       <xs:attribute name="onselect" type="xs:string"/>
                   7672:       <xs:attribute name="onchange" type="xs:string"/>
                   7673:     </xs:complexType>
                   7674:   </xs:element>
                   7675:   <xs:element name="fieldset">
                   7676:     <xs:annotation>
                   7677:       <xs:documentation>
                   7678:         The HTML &lt;fieldset&gt; element is used to group several controls as well as labels (&lt;label&gt;) within a web form.
                   7679:         
                   7680:         Only one legend element should occur in the content, and if present should only be preceded by whitespace.
                   7681:       </xs:documentation>
                   7682:     </xs:annotation>
                   7683:     <xs:complexType mixed="true">
                   7684:       <xs:sequence>
                   7685:         <xs:element ref="legend"/>
                   7686:         <xs:choice maxOccurs="unbounded" minOccurs="0">
                   7687:           <xs:group ref="text-only"/>
                   7688:         </xs:choice>
                   7689:       </xs:sequence>
                   7690:     </xs:complexType>
                   7691:   </xs:element>
                   7692:   <xs:element name="legend">
                   7693:     <xs:annotation>
                   7694:       <xs:documentation>
                   7695:         The HTML &lt;legend&gt; Element (or HTML Legend Field Element) represents a caption for the content of its parent &lt;fieldset&gt;.
                   7696:       </xs:documentation>
                   7697:     </xs:annotation>
                   7698:     <xs:complexType mixed="true">
                   7699:       <xs:complexContent>
                   7700:         <xs:extension base="inlineBaseType">
                   7701:           <xs:attribute name="accesskey">
                   7702:             <xs:simpleType>
                   7703:               <xs:restriction base="xs:string">
                   7704:                 <xs:length fixed="true" value="1"/>
                   7705:               </xs:restriction>
                   7706:             </xs:simpleType>
                   7707:           </xs:attribute>
                   7708:         </xs:extension>
                   7709:       </xs:complexContent>
                   7710:     </xs:complexType>
                   7711:   </xs:element>
                   7712:   <xs:element name="button">
                   7713:     <xs:annotation>
                   7714:       <xs:documentation>
                   7715:         The HTML &lt;button&gt; Element represents a clickable button.
                   7716:       </xs:documentation>
                   7717:     </xs:annotation>
                   7718:     <xs:complexType mixed="true">
                   7719:       <xs:choice maxOccurs="unbounded" minOccurs="0">
                   7720:         <xs:group ref="text-only"/>
                   7721:       </xs:choice>
                   7722:       <xs:attribute name="name"/>
                   7723:       <xs:attribute name="value"/>
                   7724:       <xs:attribute default="submit" name="type">
                   7725:         <xs:simpleType>
                   7726:           <xs:restriction base="xs:token">
                   7727:             <xs:enumeration value="button"/>
                   7728:             <xs:enumeration value="submit"/>
                   7729:             <xs:enumeration value="reset"/>
                   7730:           </xs:restriction>
                   7731:         </xs:simpleType>
                   7732:       </xs:attribute>
                   7733:       <xs:attribute name="disabled">
                   7734:         <xs:simpleType>
                   7735:           <xs:restriction base="xs:token">
                   7736:             <xs:enumeration value="disabled"/>
                   7737:           </xs:restriction>
                   7738:         </xs:simpleType>
                   7739:       </xs:attribute>
                   7740:     </xs:complexType>
                   7741:   </xs:element>
                   7742:   
                   7743:   <xs:element name="iframe">
                   7744:     <xs:annotation>
                   7745:       <xs:documentation>
                   7746:         The HTML &lt;iframe&gt; Element (or HTML inline frame element) represents a nested browsing context, effectively embedding another HTML page into the current page.
                   7747:       </xs:documentation>
                   7748:     </xs:annotation>
                   7749:     <xs:complexType mixed="true">
                   7750:       <xs:attributeGroup ref="coreattrs"/>
                   7751:       <xs:attribute name="name" type="xs:NMTOKEN"/>
                   7752:       <xs:attribute name="src" type="xs:anyURI"/>
                   7753:       <xs:attribute default="1" name="frameborder">
                   7754:         <xs:annotation>
                   7755:           <xs:documentation>
                   7756:             Warning: HTML 4 only
                   7757:             
                   7758:             The value 1 (the default) tells the browser to draw a border between this frame and every other frame.
                   7759:             The value 0 tells the browser not to draw a border between this frame and other frames.
                   7760:           </xs:documentation>
                   7761:         </xs:annotation>
                   7762:         <xs:simpleType>
                   7763:           <xs:restriction base="xs:token">
                   7764:             <xs:enumeration value="1"/>
                   7765:             <xs:enumeration value="0"/>
                   7766:           </xs:restriction>
                   7767:         </xs:simpleType>
                   7768:       </xs:attribute>
                   7769:       <xs:attribute name="height" type="htmlLength"/>
                   7770:       <xs:attribute name="width" type="htmlLength"/>
                   7771:       <xs:attribute name="allowfullscreen">
                   7772:         <xs:simpleType>
                   7773:           <xs:restriction base="xs:string">
                   7774:             <xs:enumeration value="allowfullscreen"/>
                   7775:           </xs:restriction>
                   7776:         </xs:simpleType>
                   7777:       </xs:attribute>
                   7778:     </xs:complexType>
                   7779:   </xs:element>
                   7780:   
                   7781: </xs:schema>

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