WarpIN's script language has changed with V0.9.6. The original motivation for
this change was to make WarpIN XML-compliant, since the old script language (which
was used before V0.9.6) was not for a number of reasons.
After a short debate, we decided to slightly redesign the script language. The
new script language itself is not backwards-compatible with the old language,
even though it is very similar.
WarpIN still supports the old script language in two ways:
- When WarpIN is given an archive with an old script, it switches to
"compatibility mode" and interprets the script according to the old syntax rules.
As a result, all archives created for WarpIN versions before 0.9.6 should still
work.
However, the old script language is no longer documented in this reference
to convince developers to migrate to the new language.
- WarpIN contains a small utility which automatically converts an old script
(a
.WIS
text file) to the new style.
The new language is not that much different from the old language. A few
changes had to be made however to achieve XML compatibility. The changes
are mainly the following:
- An XML header was added. This is also
the single item upon which WarpIN decides whether to switch to "compatibility mode".
If the XML header is found, WarpIN will enforce the strict new XML syntax and
report errors if an old-style script follows. Reversely, if you forget to add the
XML header to a new-style script, the old parser will choke on the script.
- XML is case-sensitive. As a result, you are now required to use the WarpIN
tags and attributes in upper case, as specified in this documentation. The
old parser allowed you to use mixed case.
- The
HEAD
and BODY
tags are gone. All elements which
used to be subelements of these two tags are now direct subelements of the
WARPIN
element.
- XML requires that all attributes have values.
As a result, a number of attributes had to be redefined, such as the
old
SELECT
, BASE
, and NODESELECT
attributes
to the PCK
element. See the documentation for the
PCK
element for the new definitions.
- XML requires that all attribute values be in quotes. As a result, specifying
things like
INDEX=1
is now invalid. It must be INDEX="1"
.
- XML requires that an attribute appear once per element.
We therefore had to convert the various
PCK
attributes for system
configuration into subelements of the PCK
element, which may appear
more than once. See the documentation for the new
CLEARPROFILE
,
CONFIGSYS
,
CREATEOBJECT
,
EXECUTE
,
KILLPROCESS
,
REGISTERCLASS
,
REPLACECLASS
,
REQUIRES
, and
WRITEPROFILE
elements for details.
- While we were at it, we greatly cleaned up the syntax of these former
attributes, which had become quite complex and difficult to type correctly. Since
these attributes are now elements, we defined new attributes for the various
parameters and cleaned them up at the same time.
- The REXX code in the
REXX
element needs to be in an extra XML <![CDATA[ ... ]]>
block
because it can contain angle brackets. This also solves the problems the old
parser had with "less than" and "greater than" comparisons in REXX code. These
are now simply skipped.