Warning, /frameworks/syntax-highlighting/data/schema/language.xsd is written in an unsupported language. File is not indexed.

0001 <?xml version="1.0" encoding="UTF-8"?>
0002 <!--
0003     SPDX-FileCopyrightText: 2001 Joseph Wenninger <jowenn@kde.org>
0004     SPDX-FileCopyrightText: 2002 Anders Lund <anders@alweb.dk>
0005     SPDX-FileCopyrightText: 2003 Simon Huerlimann <simon.huerlimann@access.unizh.ch>
0006     SPDX-FileCopyrightText: 2005 Dominik Haumann <dhdev@gmx.de>
0007     SPDX-FileCopyrightText: 2008 Wilbert Berendsen <info@wilbertberendsen.nl>
0008 
0009         This file describes the XML format used for syntax highlight descriptions
0010         for the Kate text editor (http://kate.kde.org), which is part of the KDE
0011         desktop environment (http://www.kde.org).
0012         You'll find the "Writing a Kate Highlighting XML File HOWTO" at
0013         http://kate.kde.org/doc/hlhowto.php
0014 
0015         This format is identified using the SYSTEM identifier
0016         SYSTEM "language.dtd"
0017 
0018         Files using this format should include a DOCTYPE declaration like this:
0019         <!DOCTYPE language SYSTEM "language.dtd">
0020 
0021         You can validate your syntax files using "validatehl.sh yourSyntax.xml".
0022         This needs xmllint from the libxml2 XML library.
0023 
0024         In any case, the katehighlightingindexer will validate all files bundled
0025         with KTextEditor during compile time and fail on errors.
0026 
0027         To use your syntax file, copy it to ~/.local/share/katepart5/syntax/ in
0028         your home directory. You have to open a new instance of kwrite/kate to use
0029         the new syntax file.
0030 
0031   TODO
0032     - find a more readable way for the - -dtdvalid stuff, it's just annoying
0033       xml comments don't allow it.
0034 -->
0035 <!--
0036   Entity declarations
0037     You can use '&per;' instead of '.'. This seems to be useful in <item> elements.
0038 
0039   TODO
0040     - Are there any more such pre-defined entities?
0041 -->
0042 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
0043   <!--
0044     Default Styles
0045     Allowed predefined default styles for itemData, available are:
0046       - dsNormal,   used for normal text
0047       - dsKeyword,  used for keywords
0048       - dsFunction, used for function calls
0049       - dsVariable, used for variables
0050       - dsControlFlow, used for control flow, e.g. if, then, else, continue, break
0051       - dsOperator, used for operators such as +, -, *, ::
0052       - dsBuiltIn,  used for built-in language classes and functions
0053       - dsExtension,used for extensions, such as boost, Qt
0054       - dsPreprocessor, used for preprocessor statements
0055       - dsAttribute,used for attributes, e.g. @override in java
0056 
0057       - dsChar,     used for a character
0058       - dsSpecialChar, used for escaped characters
0059       - dsString,   used for strings
0060       - dsVerbatimString, used for strings such as HERE docs
0061       - dsSpecialString, used for strings such as regular expressions or LaTeX math mode
0062       - dsImport,   used for includes, imports and modules
0063 
0064       - dsDataType, used for data types
0065       - dsDecVal,   used for decimal values
0066       - dsBaseN,    used for values with a base other than 10
0067       - dsFloat,    used for float values
0068       - dsConstant, used for language constants
0069 
0070       - dsComment,  used for comments
0071       - dsDocumentation, used for comments that are API documentation
0072       - dsAnnotation, used for annotation in comments, e.g. @param in doxygen
0073       - dsCommentVar, used for variables in comments, e.g. after @param in doxygen
0074       - dsRegionMarker, used for region markers
0075       - dsInformation, used for information in comments, e.g. @note in doxygen
0076       - dsWarning,  used for warnings in comments, e.g. @warning in doxygen
0077       - dsAlert,    used for warning messages such as TODO, WARNING in comments
0078 
0079       - dsOthers,   used for 'other' things
0080       - dsError,    used for error highlighting.
0081   -->
0082   <xs:simpleType name="defStyles">
0083     <xs:restriction base="xs:token">
0084       <xs:enumeration value="dsNormal"/>
0085       <xs:enumeration value="dsKeyword"/>
0086       <xs:enumeration value="dsFunction"/>
0087       <xs:enumeration value="dsVariable"/>
0088       <xs:enumeration value="dsControlFlow"/>
0089       <xs:enumeration value="dsOperator"/>
0090       <xs:enumeration value="dsBuiltIn"/>
0091       <xs:enumeration value="dsExtension"/>
0092       <xs:enumeration value="dsPreprocessor"/>
0093       <xs:enumeration value="dsAttribute"/>
0094       <xs:enumeration value="dsChar"/>
0095       <xs:enumeration value="dsSpecialChar"/>
0096       <xs:enumeration value="dsString"/>
0097       <xs:enumeration value="dsVerbatimString"/>
0098       <xs:enumeration value="dsSpecialString"/>
0099       <xs:enumeration value="dsImport"/>
0100       <xs:enumeration value="dsDataType"/>
0101       <xs:enumeration value="dsDecVal"/>
0102       <xs:enumeration value="dsBaseN"/>
0103       <xs:enumeration value="dsFloat"/>
0104       <xs:enumeration value="dsConstant"/>
0105       <xs:enumeration value="dsComment"/>
0106       <xs:enumeration value="dsDocumentation"/>
0107       <xs:enumeration value="dsAnnotation"/>
0108       <xs:enumeration value="dsCommentVar"/>
0109       <xs:enumeration value="dsRegionMarker"/>
0110       <xs:enumeration value="dsInformation"/>
0111       <xs:enumeration value="dsWarning"/>
0112       <xs:enumeration value="dsAlert"/>
0113       <xs:enumeration value="dsOthers"/>
0114       <xs:enumeration value="dsError"/>
0115     </xs:restriction>
0116   </xs:simpleType>
0117   <!--
0118     Char type
0119     A sequence of exactly 1 character
0120   -->
0121   <xs:simpleType name="char">
0122     <xs:restriction base="xs:string">
0123       <xs:length value="1"/>
0124     </xs:restriction>
0125   </xs:simpleType>
0126   <!--
0127     Language specification
0128       name:        The name of this syntax description. Used in the Highlightning Mode menu
0129       section:     The logical group to which this syntax description belongs. Used for sub menus
0130       extensions:  A file glob or pattern to decide for which documents to use this syntax description
0131       style:       The style that this highlighter provides. It is used through required-syntax-style by the indenters. [optional]
0132       mimetype:    A list of mimetypes to decide for which documents to use this syntax description [optional]
0133       version:     Version number of this syntax description
0134       kateversion: Kate version required for using this file
0135       casesensitive: Whether text is matched case sensitive. [boolean, optional, default=true] FIXME: This is not implemented yet
0136       priority:    Priority of this language, if more than one are usable for the file [optional]
0137       author:      Name of author of this hl file [optional]
0138       license:     License for this hl file [optional]
0139       indenter:    Name of the Indenter to use for this highlighting mode per default, like "cstyle" [optional]
0140       hidden:      Should it be hidden in menu [boolean, optional, default=false]
0141 
0142     TODO
0143       - Which matches are affected by casesensitive? keyword, RegExpr, StringDetect, WordDetect...?
0144 
0145     WARNING: due to helper scripts, the language opening tag must be on a
0146     *single line* and *cannot* be split in multiple lines.
0147 
0148   -->
0149   <xs:element name="language">
0150     <xs:complexType>
0151       <xs:sequence>
0152         <xs:element ref="highlighting"/>
0153         <xs:element minOccurs="0" ref="general"/>
0154         <xs:element minOccurs="0" ref="spellchecking"/>
0155       </xs:sequence>
0156       <xs:attribute name="name" use="required"/>
0157       <xs:attribute name="section" use="required" type="xs:NMTOKEN"/>
0158       <xs:attribute name="extensions" use="required"/>
0159       <xs:attribute name="version" use="required" type="xs:integer"/>
0160       <xs:attribute name="kateversion" use="required" type="xs:decimal"/>
0161       <xs:attribute name="style"/>
0162       <xs:attribute name="mimetype"/>
0163       <xs:attribute name="casesensitive" type="xs:boolean"/>
0164       <xs:attribute name="priority" type="xs:integer"/>
0165       <xs:attribute name="author"/>
0166       <xs:attribute name="license"/>
0167       <xs:attribute name="indenter"/>
0168       <xs:attribute name="hidden" type="xs:boolean"/>
0169     </xs:complexType>
0170   </xs:element>
0171   <!-- General options -->
0172   <xs:element name="general">
0173     <xs:complexType>
0174       <xs:choice minOccurs="0" maxOccurs="unbounded">
0175         <xs:element ref="folding"/>
0176         <xs:element ref="comments"/>
0177         <xs:element ref="keywords"/>
0178         <xs:element ref="emptyLines"/>
0179       </xs:choice>
0180     </xs:complexType>
0181   </xs:element>
0182   <!--
0183     List of folding
0184     indentationsensitive: If true, the code folding is indentation based.
0185   -->
0186   <xs:element name="folding">
0187     <xs:complexType>
0188       <xs:attribute name="indentationsensitive" type="xs:boolean"/>
0189     </xs:complexType>
0190   </xs:element>
0191   <!-- List of comments -->
0192   <xs:element name="comments">
0193     <xs:complexType>
0194       <xs:sequence>
0195         <xs:element maxOccurs="unbounded" ref="comment"/>
0196       </xs:sequence>
0197     </xs:complexType>
0198   </xs:element>
0199   <!--
0200     Comment specification
0201     name:         Type of this comment. Allowed are 'singleLine' and 'multiLine'
0202     start:        The comment starts with this string
0203     end:          The comment ends with this string [optional]
0204     region:       The region name of the foldable multiline comment. If you have
0205                   beginRegion="Comment" ... endRegion="Comment" you should use
0206                   region="Comment". This way uncomment works even if you do not
0207                   select all the text of the multiline comment.
0208     position:     only availalbe for type singleLine. Default is column0, to insert
0209                   the single line comment characters after the whitespaces
0210                   (= before the first non space) set position to "afterwhitespace"
0211   -->
0212   <xs:element name="comment">
0213     <xs:complexType>
0214       <xs:attribute name="name" use="required">
0215         <xs:simpleType>
0216           <xs:restriction base="xs:token">
0217             <xs:enumeration value="singleLine"/>
0218             <xs:enumeration value="multiLine"/>
0219           </xs:restriction>
0220         </xs:simpleType>
0221       </xs:attribute>
0222       <xs:attribute name="start" use="required"/>
0223       <xs:attribute name="end"/>
0224       <xs:attribute name="region"/>
0225       <xs:attribute name="position">
0226         <xs:simpleType>
0227           <xs:restriction base="xs:token">
0228             <xs:enumeration value="afterwhitespace"/>
0229           </xs:restriction>
0230         </xs:simpleType>
0231       </xs:attribute>
0232     </xs:complexType>
0233   </xs:element>
0234   <!--
0235     Keyword options
0236     casesensitive:        Whether keywords are matched case sensitive. [boolean, optional, default=true]
0237     weakDeliminator:      Add weak deliminators [optional, default: ""]
0238     additionalDeliminator: Add deliminators [optional]
0239     wordWrapDeliminator:  characters that are used to wrap long lines [optional]
0240 
0241   -->
0242   <xs:element name="keywords">
0243     <xs:complexType>
0244       <xs:attribute name="casesensitive" type="xs:boolean"/>
0245       <xs:attribute name="weakDeliminator"/>
0246       <xs:attribute name="additionalDeliminator"/>
0247       <xs:attribute name="wordWrapDeliminator"/>
0248     </xs:complexType>
0249   </xs:element>
0250   <!--
0251     Treat lines that match a given regular expression as empty line. This is
0252     needed for example in Python for comments (#...), as then the indentation
0253     based folding should ignore the line.
0254     This is only implemented for indentation based folding. If the folding
0255     is not indentation based, the emptyLines are not used.
0256   -->
0257   <xs:element name="emptyLines">
0258     <xs:complexType>
0259       <xs:sequence>
0260         <xs:element minOccurs="0" maxOccurs="unbounded" ref="emptyLine"/>
0261       </xs:sequence>
0262     </xs:complexType>
0263   </xs:element>
0264   <!--
0265     One empty line regular expression.
0266     regexpr:       The regular expression, example from python: ^\s*#.*$
0267     casesensitive: Sets, whether the regular expression match is performed case sesitive
0268   -->
0269   <xs:element name="emptyLine">
0270     <xs:complexType>
0271       <xs:attribute name="regexpr" use="required"/>
0272       <xs:attribute name="casesensitive" type="xs:boolean"/>
0273     </xs:complexType>
0274   </xs:element>
0275   <!-- Highlighting specification -->
0276   <xs:element name="highlighting">
0277     <xs:complexType>
0278       <xs:sequence>
0279         <xs:element minOccurs="0" maxOccurs="unbounded" ref="list"/>
0280         <xs:element ref="contexts"/>
0281         <xs:element ref="itemDatas"/>
0282       </xs:sequence>
0283     </xs:complexType>
0284   </xs:element>
0285   <!--
0286     List of items
0287     name:     Name of this list
0288   -->
0289   <xs:element name="list">
0290     <xs:complexType>
0291       <xs:choice minOccurs="0" maxOccurs="unbounded">
0292         <xs:element ref="item"/>
0293         <xs:element ref="include"/>
0294       </xs:choice>
0295       <xs:attribute name="name" use="required"/>
0296     </xs:complexType>
0297   </xs:element>
0298   <!--
0299     List item
0300     contains string used in <keyword>
0301   -->
0302   <xs:element name="item" type="xs:string"/>
0303   <!--
0304     List include
0305     contains a name of <keyword>
0306   -->
0307   <xs:element name="include" type="xs:string"/>
0308   <!-- List of contexts -->
0309   <xs:element name="contexts">
0310     <xs:complexType>
0311       <xs:sequence>
0312         <xs:element maxOccurs="unbounded" ref="context"/>
0313       </xs:sequence>
0314     </xs:complexType>
0315   </xs:element>
0316   <!--
0317     context specification
0318       name:             The name of this context specification. Used in '*Context' attributes [optional]
0319       attribute:        The name of the ItemData to be used for matching text
0320       lineEndContext:   Next context if end of line is encountered
0321       lineEmptyContext: Next context if an empty line is encountered [optional]
0322       fallthrough:      Use a fallthrough context [optional]
0323                 deprecated since 5.62 but preserved to maintain compatibility in older versions of KF5
0324       fallthroughContext: Fall through to this context [optional]
0325       dynamic:          Dynamic context [boolean, optional]
0326       noIndentationBasedFolding: Python uses indentation based folding. However, Python has parts where
0327                     it does not use indentation based folding (e.g. for """ strings). In this case
0328                     switch to an own context and set this attribute to true. Then the indentation
0329                     based folding will ignore this parts and not change folding markers. [optional]
0330 
0331     TODO:
0332       - Explain fallthrough.
0333       - Make lineEndContext optional, defaults to '#stay'. Reasonable?
0334   -->
0335   <xs:element name="context">
0336     <xs:complexType>
0337       <xs:choice minOccurs="0" maxOccurs="unbounded">
0338         <xs:element ref="keyword"/>
0339         <xs:element ref="Float"/>
0340         <xs:element ref="HlCOct"/>
0341         <xs:element ref="HlCHex"/>
0342         <xs:element ref="Int"/>
0343         <xs:element ref="DetectChar"/>
0344         <xs:element ref="Detect2Chars"/>
0345         <xs:element ref="AnyChar"/>
0346         <xs:element ref="StringDetect"/>
0347         <xs:element ref="WordDetect"/>
0348         <xs:element ref="RegExpr"/>
0349         <xs:element ref="LineContinue"/>
0350         <xs:element ref="HlCStringChar"/>
0351         <xs:element ref="RangeDetect"/>
0352         <xs:element ref="HlCChar"/>
0353         <xs:element ref="IncludeRules"/>
0354         <xs:element ref="DetectSpaces"/>
0355         <xs:element ref="DetectIdentifier"/>
0356       </xs:choice>
0357       <xs:attribute name="name"/>
0358       <xs:attribute name="attribute" use="required"/>
0359       <xs:attribute name="lineEndContext" use="required"/>
0360       <xs:attribute name="lineEmptyContext"/>
0361       <xs:attribute name="fallthrough">
0362         <xs:simpleType>
0363           <!-- alway true since 5.62 -->
0364           <xs:restriction base="xs:token">
0365             <xs:enumeration value="1"/>
0366             <xs:enumeration value="true"/>
0367           </xs:restriction>
0368         </xs:simpleType>
0369       </xs:attribute>
0370       <xs:attribute name="fallthroughContext"/>
0371       <xs:attribute name="dynamic" type="xs:boolean"/>
0372       <xs:attribute name="noIndentationBasedFolding" type="xs:boolean"/>
0373     </xs:complexType>
0374   </xs:element>
0375   <!--
0376     Common attributes
0377     attribute:    The name of the ItemData to be used for matching text
0378     context:      The name of the context to go to when this rule matches
0379     beginRegion:  Begin a region of type beginRegion [optional]
0380     endRegion:    End a region of type endRegion [optional]
0381     firstNonSpace: should this rule only match at first non-space char in line?
0382     column: should this rule only match at given column in line (column == count of chars in front)
0383   -->
0384   <xs:attributeGroup name="commonAttributes">
0385     <xs:attribute name="attribute"/>
0386     <xs:attribute name="context"/>
0387     <xs:attribute name="beginRegion"/>
0388     <xs:attribute name="endRegion"/>
0389     <xs:attribute name="lookAhead" type="xs:boolean"/>
0390     <xs:attribute name="firstNonSpace" type="xs:boolean"/>
0391     <xs:attribute name="column" type="xs:integer"/>
0392   </xs:attributeGroup>
0393   <!--
0394     Detect members of a keyword list
0395       commonAttributes: Common attributes
0396       insensitive:      Is this list case-insensitive? [boolean, optional, see note]
0397       String:           Name of the list
0398       weakDeliminator:  Add weak deliminators [optional, see note]
0399       additionalDeliminator: Add deliminators [optional, see note]
0400 
0401       By default, case sensitivity is determined from <keywords casesensitive> in
0402       <general> (default=true), but can be overridden per-list with 'insensitive'.
0403 
0404       weakDeliminator and additionalDeliminator are accumulated to those defined in
0405       <keywords weakDeliminator additionalDeliminator> in <general>.
0406   -->
0407   <xs:element name="keyword">
0408     <xs:complexType>
0409       <xs:attributeGroup ref="commonAttributes"/>
0410       <xs:attribute name="insensitive" type="xs:boolean"/>
0411       <xs:attribute name="String" use="required"/>
0412       <xs:attribute name="weakDeliminator"/>
0413       <xs:attribute name="additionalDeliminator"/>
0414     </xs:complexType>
0415   </xs:element>
0416   <!--
0417     Detect a floating point number
0418     commonAttributes: Common attributes
0419     weakDeliminator:  Add weak deliminators [optional]
0420     additionalDeliminator: Add deliminators [optional]
0421   -->
0422   <xs:element name="Float">
0423     <xs:complexType>
0424       <xs:attributeGroup ref="commonAttributes"/>
0425       <xs:attribute name="weakDeliminator"/>
0426       <xs:attribute name="additionalDeliminator"/>
0427     </xs:complexType>
0428   </xs:element>
0429   <!--
0430     Detect an octal number
0431     commonAttributes: Common attributes
0432     weakDeliminator:  Add weak deliminators [optional]
0433     additionalDeliminator: Add deliminators [optional]
0434   -->
0435   <xs:element name="HlCOct">
0436     <xs:complexType>
0437       <xs:attributeGroup ref="commonAttributes"/>
0438       <xs:attribute name="weakDeliminator"/>
0439       <xs:attribute name="additionalDeliminator"/>
0440     </xs:complexType>
0441   </xs:element>
0442   <!--
0443     Detect a hexadecimal number
0444     commonAttributes: Common attributes
0445     weakDeliminator:  Add weak deliminators [optional]
0446     additionalDeliminator: Add deliminators [optional]
0447   -->
0448   <xs:element name="HlCHex">
0449     <xs:complexType>
0450       <xs:attributeGroup ref="commonAttributes"/>
0451       <xs:attribute name="weakDeliminator"/>
0452       <xs:attribute name="additionalDeliminator"/>
0453     </xs:complexType>
0454   </xs:element>
0455   <!--
0456     Detect C-style character
0457       commonAttributes: Common attributes
0458 
0459     TODO
0460       - Did I get this right?
0461   -->
0462   <xs:element name="HlCChar">
0463     <xs:complexType>
0464       <xs:attributeGroup ref="commonAttributes"/>
0465     </xs:complexType>
0466   </xs:element>
0467   <!--
0468     Detect an integer number
0469     commonAttributes: Common attributes
0470     weakDeliminator:  Add weak deliminators [optional]
0471     additionalDeliminator: Add deliminators [optional]
0472   -->
0473   <xs:element name="Int">
0474     <xs:complexType>
0475       <xs:attributeGroup ref="commonAttributes"/>
0476       <xs:attribute name="weakDeliminator"/>
0477       <xs:attribute name="additionalDeliminator"/>
0478     </xs:complexType>
0479   </xs:element>
0480   <!--
0481     Detect a single character
0482     commonAttributes: Common attributes
0483     char:             The character to look for
0484     dynamic:          Uses 1 .. 9 as placeholders for dynamic arguments (in fact, first char of arg...) [boolean, optional, default=false]
0485   -->
0486   <xs:element name="DetectChar">
0487     <xs:complexType>
0488       <xs:attributeGroup ref="commonAttributes"/>
0489       <xs:attribute name="char" type="char" use="required"/>
0490       <xs:attribute name="dynamic" type="xs:boolean"/>
0491     </xs:complexType>
0492   </xs:element>
0493   <!--
0494     Detect two characters
0495     commonAttributes: Common attributes
0496     char:             The first character
0497     char1:            The second character
0498   -->
0499   <xs:element name="Detect2Chars">
0500     <xs:complexType>
0501       <xs:attributeGroup ref="commonAttributes"/>
0502       <xs:attribute name="char" type="char" use="required"/>
0503       <xs:attribute name="char1" type="char" use="required"/>
0504     </xs:complexType>
0505   </xs:element>
0506   <!--
0507     Detect any group of characters
0508       commonAttributes: Common attributes
0509       String:           A string representing the characters to look for
0510 
0511     TODO
0512       - Description is not descriptive enough, I'm not sure what it exactly does:-(
0513   -->
0514   <xs:element name="AnyChar">
0515     <xs:complexType>
0516       <xs:attributeGroup ref="commonAttributes"/>
0517       <xs:attribute name="String" use="required"/>
0518     </xs:complexType>
0519   </xs:element>
0520   <!--
0521     Detect a string
0522       commonAttributes: Common attributes
0523       String:           The string to look for
0524       insensitive:      Whether the string is matched case INsensitive. [boolean, optional, default=false]
0525       dynamic:          Uses %1 .. %9 as placeholders for dynamic arguments [boolean, optional, default=false]
0526 
0527     TODO
0528       - What's default of insensitive? I'm not sure...
0529   -->
0530   <xs:element name="StringDetect">
0531     <xs:complexType>
0532       <xs:attributeGroup ref="commonAttributes"/>
0533       <xs:attribute name="String" use="required"/>
0534       <xs:attribute name="insensitive" type="xs:boolean"/>
0535       <xs:attribute name="dynamic" type="xs:boolean"/>
0536     </xs:complexType>
0537   </xs:element>
0538   <!--
0539     Detect a word, i.e. a string at word boundaries
0540       commonAttributes: Common attributes
0541       String:           The string to look for
0542       insensitive:      Whether the string is matched case INsensitive. [boolean, optional, default=false]
0543       weakDeliminator:  Add weak deliminators [optional]
0544       additionalDeliminator: Add deliminators [optional]
0545 
0546     TODO
0547       - What's default of insensitive? I'm not sure...
0548   -->
0549   <xs:element name="WordDetect">
0550     <xs:complexType>
0551       <xs:attributeGroup ref="commonAttributes"/>
0552       <xs:attribute name="String" use="required"/>
0553       <xs:attribute name="insensitive" type="xs:boolean"/>
0554       <xs:attribute name="weakDeliminator"/>
0555       <xs:attribute name="additionalDeliminator"/>
0556     </xs:complexType>
0557   </xs:element>
0558   <!--
0559     Detect a match of a regular expression
0560     commonAttributes: Common attributes
0561     String:           The regular expression pattern
0562     insensitive:      Whether the text is matched case INsensitive. [boolean, optional, default=false]
0563     minimal:          Wheather to use minimal matching for wild cards in the pattern [boolean, optional, default='false']
0564     dynamic:          Uses %1 .. %9 as placeholders for dynamic arguments [boolean, optional, default=false]
0565   -->
0566   <xs:element name="RegExpr">
0567     <xs:complexType>
0568       <xs:attributeGroup ref="commonAttributes"/>
0569       <xs:attribute name="String" use="required"/>
0570       <xs:attribute name="insensitive" type="xs:boolean"/>
0571       <xs:attribute name="minimal" type="xs:boolean"/>
0572       <xs:attribute name="dynamic" type="xs:boolean"/>
0573     </xs:complexType>
0574   </xs:element>
0575   <!--
0576     Detect a line continuation
0577     commonAttributes: Common attributes
0578     char:             The char marking the end of line [char,  optional,  default='\\']
0579   -->
0580   <xs:element name="LineContinue">
0581     <xs:complexType>
0582       <xs:attributeGroup ref="commonAttributes"/>
0583       <xs:attribute name="char" type="char"/>
0584     </xs:complexType>
0585   </xs:element>
0586   <!--
0587     Detect a C-style escaped character
0588       commonAttributes: Common attributes
0589 
0590     TODO:
0591       - Did I get this right? Only one character, or a string?
0592   -->
0593   <xs:element name="HlCStringChar">
0594     <xs:complexType>
0595       <xs:attributeGroup ref="commonAttributes"/>
0596     </xs:complexType>
0597   </xs:element>
0598   <!--
0599     Detect a range of characters
0600     commonAttributes: Common attributes
0601     char:             The character starting the range
0602     char1:            The character terminating the range
0603   -->
0604   <xs:element name="RangeDetect">
0605     <xs:complexType>
0606       <xs:attributeGroup ref="commonAttributes"/>
0607       <xs:attribute name="char" type="char" use="required"/>
0608       <xs:attribute name="char1" type="char" use="required"/>
0609     </xs:complexType>
0610   </xs:element>
0611   <!--
0612     Include Rules of another context
0613     context:             The name of the context to include
0614     includeAttrib:       If this is true, the host context of the IncludeRules
0615                          will be given the attribute of the source context
0616   -->
0617   <xs:element name="IncludeRules">
0618     <xs:complexType>
0619       <xs:attribute name="context" use="required"/>
0620       <xs:attribute name="includeAttrib" type="xs:boolean"/>
0621     </xs:complexType>
0622   </xs:element>
0623   <!-- Detect all following Spaces -->
0624   <xs:element name="DetectSpaces">
0625     <xs:complexType>
0626       <xs:attributeGroup ref="commonAttributes"/>
0627     </xs:complexType>
0628   </xs:element>
0629   <!-- Detect an Identifier ( == LETTER(LETTER|NUMBER|_)*) -->
0630   <xs:element name="DetectIdentifier">
0631     <xs:complexType>
0632       <xs:attributeGroup ref="commonAttributes"/>
0633     </xs:complexType>
0634   </xs:element>
0635   <!-- List of attributes -->
0636   <xs:element name="itemDatas">
0637     <xs:complexType>
0638       <xs:sequence>
0639         <xs:element maxOccurs="unbounded" ref="itemData"/>
0640       </xs:sequence>
0641     </xs:complexType>
0642   </xs:element>
0643   <!--
0644     Attribute specification
0645     name          CDATA   #REQUIRED       The name of this attribute
0646     defStyleNum   CDATA   #REQUIRED       The index of the default style to use
0647     color         CDATA   #IMPLIED        Color for this style, either a hex triplet, a name or some other format recognized by Qt [optional]
0648     selColor      CDATA   #IMPLIED        The color for this style when text is selected [optional]
0649     italic        CDATA   #IMPLIED        Whether this attribute should be rendered using an italic typeface [optional, boolean, default=false]
0650     bold          CDATA   #IMPLIED        Whether this attribute should be renederd using a bold typeface [optional, boolean, default=false]
0651     underline     CDATA   #IMPLIED        Whether this attribute should be underlined [optional, boolean, default=false]
0652     strikeOut     CDATA   #IMPLIED        Whether this attribute should be striked out [optional, boolean, default=false]
0653     backgroundColor    CDATA #IMPLIED     The background color for this style [optional]
0654     selBackgroundColor CDATA #IMPLIED     The background color for this style when text is selected [optional]
0655     spellChecking      CDATA #IMPLIED     Whether this attribute should be spell checked [optional, boolean, default=true]
0656   -->
0657   <xs:element name="itemData">
0658     <xs:complexType>
0659       <xs:attribute name="name" use="required"/>
0660       <xs:attribute name="defStyleNum" use="required" type="defStyles"/>
0661       <xs:attribute name="color"/>
0662       <xs:attribute name="selColor"/>
0663       <xs:attribute name="italic" type="xs:boolean"/>
0664       <xs:attribute name="bold" type="xs:boolean"/>
0665       <xs:attribute name="underline" type="xs:boolean"/>
0666       <xs:attribute name="strikeOut" type="xs:boolean"/>
0667       <xs:attribute name="backgroundColor"/>
0668       <xs:attribute name="selBackgroundColor"/>
0669       <xs:attribute name="spellChecking" type="xs:boolean"/>
0670     </xs:complexType>
0671   </xs:element>
0672   <!-- Spellchecking specification -->
0673   <xs:element name="spellchecking">
0674     <xs:complexType>
0675       <xs:sequence>
0676         <xs:element minOccurs="0" ref="encodings"/>
0677       </xs:sequence>
0678     </xs:complexType>
0679   </xs:element>
0680   <!-- List of character encodings -->
0681   <xs:element name="encodings">
0682     <xs:complexType>
0683       <xs:sequence>
0684         <xs:element maxOccurs="unbounded" ref="encoding"/>
0685       </xs:sequence>
0686     </xs:complexType>
0687   </xs:element>
0688   <!--
0689     Encoding specification
0690     sequence       CDATA        #REQUIRED  Character sequence of the encoding; must not contain new-line characters, i.e. \n or \r
0691     character      CDATA        #IMPLIED   Encoded character; must be of length 1
0692     ignored        (%boolean;)  #IMPLIED   If true, then the encoding sequence is ignored for spellchecking
0693   -->
0694   <xs:element name="encoding">
0695     <xs:complexType>
0696       <xs:attribute name="string" use="required"/>
0697       <xs:attribute name="char" type="char"/>
0698       <xs:attribute name="ignored" type="xs:boolean"/>
0699     </xs:complexType>
0700   </xs:element>
0701 </xs:schema>