DTD definitions for Quanta+ are made up from two parts: a) the description.rc b) the tag files The content of them depends also on the type of the DTD (real or pseudo DTD). A. The description.rc --------------------- Contains some information and rules about the DTD itself. A1. description.rc for real DTDs -------------------------------- [General] - generic information Name = DTD definition string (like -//W3C//DTD HTML 4.01 Transitional//EN) NickName = the beautified name of the DTD (like HTML 4.01 Transitional). If not defined, the Name is used as NickName. URL = url pointing to the DTD definition (http://www.w3.org/TR/html4/loose.dtd) DoctypeString = the string that should appear in the !DOCTYPE tag (HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd") Inherits = the name of the DTD from where this DTD inherits the tags (-//W3C//DTD HTML 4.01//EN) DefaultExtension = new files are created with this extension (html) Groups = the list of common attribute groups, which may be present in more than one tag (Core, I18n, Script). See below (Group1, Group2...) OBSOLETE, don't use. Groups are read from common.tag. NumOfPages = how many pages does a tag dialog have (aside of the page containing the attributes defined in the tag file). See below (Page1,...) CaseSensitive = case-sensitiveness of the DTD QuotedAttributes = OBSOLETE, not used Family = 1 (it's a real DTD) [Toolbars] - information about DTD toolbars Location = the directory inside the $KDEDIR($KDEHOME)/share/apps/quanta/toolbars where the toolbars for this DTD are Names = the list of toolbar file names (without the .toolbar.tgz extension) that are loaded for this DTD from the above directory [Group1] - replace with one of the Groups listed below Attributes = the list of attributes for this group. Currently all of the listed attributes are treated as strings. Example: [Core] Attributes = id, class, style, title [Page1] - description of a tag editor page Title = the title of this page in the tag editing dialog Groups = list of groups appearing on this page (like Core, I18n) [Extra tags] - OBSOLETE! Please define the tags in external files! List = list of tags not defined in external tag files. tag_name = attribute1, attribute2 - attribute names of tag called tag_name tag_name_options = options of tag called tag_name [Extra rules] - some rules not fitted in other places BooleanAttributes = simple or complex. Example for simple: . Example for complex: or Single Tag Style = html or XML. Example for html: Example for XML: StructGroupsCount = the number of structure groups. See below. MinusAllowedInWords = if true "this-is-a-word" is treated like a word. Otherwise it's treated like 4 words. TagAutoCompleteAfter = CHAR. The autocompletion box is brought up automatically once this CHAR is entered or SPACE is pressed after this CHAR. For real DTDs it's usually "<", but for CSS pseudo DTD it's "{". The text "none" instead of a CHAR specifies that the tag completion box should not be brought up automatically, only if the user requests it. AttributeSeparator = CHAR. This CHAR means that the attribute name has ended. It's " for XML DTDs and , for pseudo DTDs. TagSeparator = CHAR. Similar to the above. [StructGroup_1] - definition of structure group 1 Name = the text that appears if there are tags matching this group settings (like Links) No_Name = the text that appears if there are NO tags matching this group settings (like No Links) Icon = the name of the icon appearing before the above texts (like www) Tag = tagname(attribute1, attribute2, ...). Tags with name tagname will appear under this group. The item text will be "attribute1_value | attribute2_value | ..." Currently only one tag may be listed here. HasFileName = true if the item text (one of the above attribute values) contains a file name FileNameRx = regular expression used to remove the unnecessary chars from the item text. [Parsing rules] - rules used when parsing the document SpecialAreas = the beginning and ending string of special areas, separatted by a comma. Special areas are not parsed according to this DTD's rules, but as their own rules. A special area can be a pseudo DTD,a comment or something like that. Eg. SpecialAreaNames = comma separated list of the above special area names. Eg. comment Comments = comma separated list of area borders for comments. EOL means end-of-line. Eg: // EOL, /* */ AppendCommonRules = true or false. If true, the following rules are automatically appended: SpecialAreas = , , SpecialAreaNames = XML PI, comment, DTD Comments = Default is "true", so append the rules. SpecialTags = tagname(attributename) - specifies a tag which defines the start of a special area MayContain = comma separated list of pseudo-DTDs that can be present in the document. E.g. php, css A2. description.rc for pseudo DTDs ---------------------------------- Only the differences, special notices are listed here. [General] Groups = (There are no common groups) NumOfPages = 0 . There is no tag editing dialog for pseudo DTDs. Family = 2 (it's a pseudo DTD) [Extra rules] ScriptName = OBSOLETE, don't use. ScriptTagBorders = OBSOLETE, don't use. ScriptRegExp = OBSOLETE, don't use. AttributeAutoCompletionAfter = CHAR. Similar to the TagAutoCompletionAfter, but for tag attributes. It's "(" by default and ":" for CSS. Not used for real DTDs. RequestSpaceBeforeTagAutoCompletion = boolean. If "true", the list of tags does not appear if the user types the TagAutoCompletionAfter char, only if it is followed by at least one space. The default is "false". VariableGroupIndex = the index value of the group that defines variables. -1 if there is no such group, otherwise the group must exists. FunctionGroupIndex = the index value of the group that defines functions. -1 if there is no such group, otherwise the group must exists. ClassGroupIndex = the index value of the group that defines classes. -1 if there is no such group, otherwise the group must exists. ObjectGroupIndex = the index value of the group that defines objects. ClassGroupIndex must be defined, otherwise this doesn't make sense. -1 if there is no such group, otherwise the group must exists. MemberAutoCompleteAfter = a regular expression which defines when may a member variable/method appear after a class' usage. Example: - we have a class called "foo" with some member variables - the object of type "foo" is used in the document as $objFoo - the members can appear as $objFoo->member or $objFoo.member - in the above case this entry shoul look like (?:->|\.)$ (autocomplete if the object is followed by -> or .) The regular expression must be terminated with "$" (match end of line). [StructGroup_1] DefinitionRx = regular expression used to find text areas in the pseudo DTD, which will belong to this group. The first captured area should be the actual name of the group entry. Example: \bclass[\\s]+([0-9a-zA-Z_\x7f-\xff]*)[\\s]* The first captured area (between "(" and ")") holds the class name. UsageRx = to find an usage of an element of the group. Example: - classes are defined as "class foo {...}" - classes are used as $objFoo Example 2: - variables are defined as "int i" - variables are used as @i Example 3: - variables are defined as $i - variables are used as $i. In this case UsageRx is the same as DefinitionRx TypeRx = regular expression to find the type of the element. The pattern is searched on the result of DefinitionRx match and the first captured areas will hold the element type. Example (simplified): DefinitionRx =\$+([a-zA-Z]+)=new\\s[a-zA-Z]+; TypeRx = new\\s([a-zA-Z]+); This will match strings like "$fooObj=new foo;". Now this string is searched and it will find "new foo;", where "foo" is the first captured text (the regular expression matching foo is between brackets). So the type of "$fooObj" is "foo". SearchRx = OBSOLETED by DefinitionRx. Don't use it. ClearRx = OBSOLETED by DefinitionRx. Don't use it. [Parsing rules] AreaBorders = comma separated list of the area borders encapsulating this pseudo DTD. In case of PHP it is: , <* *>, <% %> Tags = tagname(attribute[defaultvalue]). If the parent(real) DTD has a tag with tagname and the attribute value of this tag is equal with the DTD name, the tag area is parsed according to the rules of this DTD. If [defaultvalue] is present, it means that if the attribute is not present in the tag it's taken as present with value = defaultvalue. Example: Tags = style(type[text/css]) means that both