Modifiers For Tag- And Macro Declarations

Within <$macro> and <$deftag>, you can use several modifiers to tell hsc how to handle this macro/tag.

Allowed modifiers for both <$macro> and <$deftag> are:
/CLOSE (short: /C)
macro/tag is a container and requires a corresponding end tag.
/ONLYONCE (short: /1)
macro/tag is required at the most once within a document
/REQUIRED (short: /R)
macro/tag is required to appear at least once within a document
/RECOMMENDED (short: /RCMD)
macro/tag ought to appear at least once within a document
/MUST_BE_INSIDE (short: /MBI)
Needs a string as argument, that contains a list of container tags, that must be started before tag is allowed to be used.
Example:
The tag <LI> must be used inside some sort of lists only, therefore /MBI="ul|ol|dir|menu" is used. The vertical bar (``|'') is used as a separator for multiple tags.
In XHTML mode, this modifier is stricter than for traditional HTML: it means ``directly inside'' instead of ``somewhere inside''. I.e. the following would be legal in HTML, but not in XHTML (the actual definition is different, this is just an example!):
<$deftag P /MBI="BODY">
<body>
  <div>
    <p>Blah</p>
  </div>
</body>
/NOT_ALLOWED_WITHIN (short: /NAW)
Like /MBI, but this time tags that must not be used before. For example, a nested usage of <A> is not allowed, therefore /NAW="a" is used.
Additionally, the following modifiers can be used with <$deftag>
/AUTOCLOSE (short: /AC)
Used for <P> and <LI>, which can be used as container or single tag depending on the HTML version. Tags marked with this modifier can not be nested.
/EMPTY (short: /E)
Marks tags with the SGML content model EMPTY, like <BR>, <IMG>, <HR> etc. In HTML mode, they simply must not have a closing tag. In XHTML mode, they should have a trailing slash or a closing tag immediately following. The latter is not supported yet, but HSC can complete these tags with a slash if you forget it (or want to produce HTML4 and XHTML documents from one source - not that I understood what for...). Warning 88 will be issued when this happens.
/JERK (short: /J)
tag is only used by jerks
/LAZY (short: /L)
This modifier is just there for our laziness and defines some often needed attributes with a single letter; ``c'' for ``CLASS:string'', ``d'' for ``DIR:enum("ltr|rtl")'', ``h'' for ``HREF:uri'', ``i'' for ``ID:id'', ``k'' for ``CLEAR:bool'', ``l'' for ``LANG:string'', ``m'' for ``MD:string'', ``s'' for ``SRC:uri'', ``t'' for ``TITLE:string''. ``y'' for ``STYLE:string''. ``v'' for ``events''.
For example, use /LAZY="cil".
"Events" is special in that it declares several scripting-related attributes at once: onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup. These are the most frequent attributes, collected under an entity in HTML 4.01.
/OBSOLETE (short: /O)
tag is obsolete and should not be used any more. This e.g. concerns <LISTING>.
/SKIPLF (short: /S)
skip a linefeed ("\n") that comes immediately after the tag. This is only useful for some of hsc's special tags and only avoids some unnecessary empty lines.
/SPECIAL (short: /SPC)
This one marks tags which are no normal tags with some attributes, but have their own syntax. The only HTML tag which has this modifier set is <!> (for SGML comments).
/WHTSPC (short: /W)
If this modifier is set, any occurrence of the container is checked for succeeding/preceding white spaces. By default, this concerns the tags <A>, <TITLE>, headings and physical/logical styles like <B> or <strong>.