Skip to main content

mpackage.xsd

XML Schema Definition (XSD) for this schema.

Schema URL

https://schema.gesslar.dev/static/schemas/mudlet-mpackage/v1.001/mpackage.xsd

Full Schema

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

<!-- Root Element -->
<xs:element name="MudletPackage">
<xs:annotation>
<xs:documentation> Root element for Mudlet package XML files (.mpackage). Version history: -
1.001: Added ASCII control code support in script elements Current default version: 1.001 </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="TriggerPackage" minOccurs="0" />
<xs:element ref="TimerPackage" minOccurs="0" />
<xs:element ref="AliasPackage" minOccurs="0" />
<xs:element ref="ActionPackage" minOccurs="0" />
<xs:element ref="ScriptPackage" minOccurs="0" />
<xs:element ref="KeyPackage" minOccurs="0" />
<xs:element ref="VariablePackage" minOccurs="0" />
<xs:element ref="HelpPackage" minOccurs="0" />
<xs:element ref="HostPackage" minOccurs="0" />
</xs:choice>
<xs:attribute name="version" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>XML format version (e.g., "1.001")</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>

<!-- Simple Types -->
<xs:simpleType name="yesNoType">
<xs:restriction base="xs:string">
<xs:enumeration value="yes" />
<xs:enumeration value="no" />
</xs:restriction>
</xs:simpleType>

<xs:simpleType name="colorType">
<xs:annotation>
<xs:documentation>Color as hex string (#RRGGBB) or "transparent"</xs:documentation>
</xs:annotation>
<xs:union>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="transparent" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="#[0-9A-Fa-f]{6}" />
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>

<xs:simpleType name="timeType">
<xs:annotation>
<xs:documentation>Time format: hh:mm:ss.zzz (note: hours can exceed 23)</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{2}:[0-9]{2}:[0-9]{2}\.[0-9]{3}" />
</xs:restriction>
</xs:simpleType>

<xs:simpleType name="triggerTypeType">
<xs:annotation>
<xs:documentation> Trigger pattern types: 0=REGEX_SUBSTRING, 1=REGEX_PERL,
2=REGEX_BEGIN_OF_LINE_SUBSTRING, 3=REGEX_EXACT_MATCH, 4=REGEX_LUA_CODE, 5=REGEX_LINE_SPACER,
6=REGEX_COLOR_PATTERN, 7=REGEX_PROMPT </xs:documentation>
</xs:annotation>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0" />
<xs:maxInclusive value="7" />
</xs:restriction>
</xs:simpleType>

<xs:simpleType name="patternTypeType">
<xs:annotation>
<xs:documentation>Pattern type for regexCodePropertyList (same values as triggerTypeType)</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0" />
<xs:maxInclusive value="7" />
</xs:restriction>
</xs:simpleType>

<xs:simpleType name="nonNegativeIntType">
<xs:restriction base="xs:integer">
<xs:minInclusive value="0" />
</xs:restriction>
</xs:simpleType>

<xs:simpleType name="buttonStateType">
<xs:annotation>
<xs:documentation>Button state: 1=unchecked/up, 2=checked/down (backward compatibility)</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:integer">
<xs:enumeration value="1" />
<xs:enumeration value="2" />
</xs:restriction>
</xs:simpleType>

<xs:simpleType name="orientationType">
<xs:annotation>
<xs:documentation>Button orientation: 0=horizontal, 1=vertical</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:integer">
<xs:enumeration value="0" />
<xs:enumeration value="1" />
</xs:restriction>
</xs:simpleType>

<xs:simpleType name="locationType">
<xs:annotation>
<xs:documentation> Toolbar location: 0=Top Easy Button Bar, 2=Right Easy Button Bar, 3=Left
Easy Button Bar, 4=Dockable/Floating </xs:documentation>
</xs:annotation>
<xs:restriction base="xs:integer">
<xs:enumeration value="0" />
<xs:enumeration value="2" />
<xs:enumeration value="3" />
<xs:enumeration value="4" />
</xs:restriction>
</xs:simpleType>

<xs:simpleType name="buttonRotationType">
<xs:annotation>
<xs:documentation>Button rotation in degrees: 0, 90, 180, or 270</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:integer">
<xs:enumeration value="0" />
<xs:enumeration value="90" />
<xs:enumeration value="180" />
<xs:enumeration value="270" />
</xs:restriction>
</xs:simpleType>

<!-- Trigger Package -->
<xs:element name="TriggerPackage">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="TriggerGroup" />
<xs:element ref="Trigger" />
</xs:choice>
</xs:complexType>
</xs:element>

<xs:element name="TriggerGroup">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="script" type="xs:string" />
<xs:element name="triggerType" type="triggerTypeType" />
<xs:element name="conditonLineDelta" type="xs:integer">
<xs:annotation>
<xs:documentation>Note: typo in element name (should be 'condition'). Kept for backward
compatibility.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="mStayOpen" type="nonNegativeIntType" />
<xs:element name="mCommand" type="xs:string" />
<xs:element name="packageName" type="xs:string" />
<xs:element name="mFgColor" type="colorType" />
<xs:element name="mBgColor" type="colorType" />
<xs:element name="mSoundFile" type="xs:string" />
<xs:element name="colorTriggerFgColor" type="colorType" />
<xs:element name="colorTriggerBgColor" type="colorType" />
<xs:element name="regexCodeList">
<xs:complexType>
<xs:sequence>
<xs:element name="string" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="regexCodePropertyList">
<xs:complexType>
<xs:sequence>
<xs:element name="integer" type="patternTypeType" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="TriggerGroup" />
<xs:element ref="Trigger" />
</xs:choice>
</xs:sequence>
<xs:attribute name="isActive" type="yesNoType" use="required" />
<xs:attribute name="isFolder" type="yesNoType" use="required" />
<xs:attribute name="isTempTrigger" type="yesNoType" use="required" />
<xs:attribute name="isMultiline" type="yesNoType" use="required" />
<xs:attribute name="isPerlSlashGOption" type="yesNoType" use="required" />
<xs:attribute name="isColorizerTrigger" type="yesNoType" use="required" />
<xs:attribute name="isFilterTrigger" type="yesNoType" use="required" />
<xs:attribute name="isSoundTrigger" type="yesNoType" use="required" />
<xs:attribute name="isColorTrigger" type="yesNoType" use="required" />
<xs:attribute name="isColorTriggerFg" type="yesNoType" use="required" />
<xs:attribute name="isColorTriggerBg" type="yesNoType" use="required" />
</xs:complexType>
</xs:element>

<xs:element name="Trigger">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="script" type="xs:string" />
<xs:element name="triggerType" type="triggerTypeType" />
<xs:element name="conditonLineDelta" type="xs:integer">
<xs:annotation>
<xs:documentation>Note: typo in element name (should be 'condition'). Kept for backward
compatibility.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="mStayOpen" type="nonNegativeIntType" />
<xs:element name="mCommand" type="xs:string" />
<xs:element name="packageName" type="xs:string" />
<xs:element name="mFgColor" type="colorType" />
<xs:element name="mBgColor" type="colorType" />
<xs:element name="mSoundFile" type="xs:string" />
<xs:element name="colorTriggerFgColor" type="colorType" />
<xs:element name="colorTriggerBgColor" type="colorType" />
<xs:element name="regexCodeList">
<xs:complexType>
<xs:sequence>
<xs:element name="string" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="regexCodePropertyList">
<xs:complexType>
<xs:sequence>
<xs:element name="integer" type="patternTypeType" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="isActive" type="yesNoType" use="required" />
<xs:attribute name="isFolder" type="yesNoType" use="required" />
<xs:attribute name="isTempTrigger" type="yesNoType" use="required" />
<xs:attribute name="isMultiline" type="yesNoType" use="required" />
<xs:attribute name="isPerlSlashGOption" type="yesNoType" use="required" />
<xs:attribute name="isColorizerTrigger" type="yesNoType" use="required" />
<xs:attribute name="isFilterTrigger" type="yesNoType" use="required" />
<xs:attribute name="isSoundTrigger" type="yesNoType" use="required" />
<xs:attribute name="isColorTrigger" type="yesNoType" use="required" />
<xs:attribute name="isColorTriggerFg" type="yesNoType" use="required" />
<xs:attribute name="isColorTriggerBg" type="yesNoType" use="required" />
</xs:complexType>
</xs:element>

<!-- Timer Package -->
<xs:element name="TimerPackage">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="TimerGroup" />
<xs:element ref="Timer" />
</xs:choice>
</xs:complexType>
</xs:element>

<xs:element name="TimerGroup">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="script" type="xs:string" />
<xs:element name="command" type="xs:string" />
<xs:element name="packageName" type="xs:string" />
<xs:element name="time" type="timeType" />
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="TimerGroup" />
<xs:element ref="Timer" />
</xs:choice>
</xs:sequence>
<xs:attribute name="isActive" type="yesNoType" use="required" />
<xs:attribute name="isFolder" type="yesNoType" use="required" />
<xs:attribute name="isTempTimer" type="yesNoType" use="required" />
<xs:attribute name="isOffsetTimer" type="yesNoType" use="required" />
</xs:complexType>
</xs:element>

<xs:element name="Timer">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="script" type="xs:string" />
<xs:element name="command" type="xs:string" />
<xs:element name="packageName" type="xs:string" />
<xs:element name="time" type="timeType" />
</xs:sequence>
<xs:attribute name="isActive" type="yesNoType" use="required" />
<xs:attribute name="isFolder" type="yesNoType" use="required" />
<xs:attribute name="isTempTimer" type="yesNoType" use="required" />
<xs:attribute name="isOffsetTimer" type="yesNoType" use="required" />
</xs:complexType>
</xs:element>

<!-- Alias Package -->
<xs:element name="AliasPackage">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="AliasGroup" />
<xs:element ref="Alias" />
</xs:choice>
</xs:complexType>
</xs:element>

<xs:element name="AliasGroup">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="script" type="xs:string" />
<xs:element name="command" type="xs:string" />
<xs:element name="packageName" type="xs:string" />
<xs:element name="regex" type="xs:string" />
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="AliasGroup" />
<xs:element ref="Alias" />
</xs:choice>
</xs:sequence>
<xs:attribute name="isActive" type="yesNoType" use="required" />
<xs:attribute name="isFolder" type="yesNoType" use="required" />
</xs:complexType>
</xs:element>

<xs:element name="Alias">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="script" type="xs:string" />
<xs:element name="command" type="xs:string" />
<xs:element name="packageName" type="xs:string" />
<xs:element name="regex" type="xs:string" />
</xs:sequence>
<xs:attribute name="isActive" type="yesNoType" use="required" />
<xs:attribute name="isFolder" type="yesNoType" use="required" />
</xs:complexType>
</xs:element>

<!-- Action Package -->
<xs:element name="ActionPackage">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="ActionGroup" />
<xs:element ref="Action" />
</xs:choice>
</xs:complexType>
</xs:element>

<xs:element name="ActionGroup">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="packageName" type="xs:string" />
<xs:element name="script" type="xs:string" />
<xs:element name="css" type="xs:string" />
<xs:element name="commandButtonUp" type="xs:string" />
<xs:element name="commandButtonDown" type="xs:string" />
<xs:element name="icon" type="xs:string" />
<xs:element name="orientation" type="orientationType" />
<xs:element name="location" type="locationType" />
<xs:element name="posX" type="nonNegativeIntType" />
<xs:element name="posY" type="nonNegativeIntType" />
<xs:element name="mButtonState" type="buttonStateType" />
<xs:element name="sizeX" type="nonNegativeIntType" />
<xs:element name="sizeY" type="nonNegativeIntType" />
<xs:element name="buttonColumn" type="nonNegativeIntType" />
<xs:element name="buttonRotation" type="buttonRotationType" />
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="ActionGroup" />
<xs:element ref="Action" />
</xs:choice>
</xs:sequence>
<xs:attribute name="isActive" type="yesNoType" use="required" />
<xs:attribute name="isFolder" type="yesNoType" use="required" />
</xs:complexType>
</xs:element>

<xs:element name="Action">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="packageName" type="xs:string" />
<xs:element name="script" type="xs:string" />
<xs:element name="css" type="xs:string" />
<xs:element name="commandButtonUp" type="xs:string" />
<xs:element name="commandButtonDown" type="xs:string" />
<xs:element name="icon" type="xs:string" />
<xs:element name="orientation" type="orientationType" />
<xs:element name="location" type="locationType" />
<xs:element name="posX" type="nonNegativeIntType" />
<xs:element name="posY" type="nonNegativeIntType" />
<xs:element name="mButtonState" type="buttonStateType" />
<xs:element name="sizeX" type="nonNegativeIntType" />
<xs:element name="sizeY" type="nonNegativeIntType" />
<xs:element name="buttonColumn" type="nonNegativeIntType" />
<xs:element name="buttonRotation" type="buttonRotationType" />
</xs:sequence>
<xs:attribute name="isActive" type="yesNoType" use="required" />
<xs:attribute name="isFolder" type="yesNoType" use="required" />
</xs:complexType>
</xs:element>

<!-- Script Package -->
<xs:element name="ScriptPackage">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="ScriptGroup" />
<xs:element ref="Script" />
</xs:choice>
</xs:complexType>
</xs:element>

<xs:element name="ScriptGroup">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="packageName" type="xs:string" />
<xs:element name="script" type="xs:string" />
<xs:element name="eventHandlerList">
<xs:complexType>
<xs:sequence>
<xs:element name="string" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="ScriptGroup" />
<xs:element ref="Script" />
</xs:choice>
</xs:sequence>
<xs:attribute name="isActive" type="yesNoType" use="required" />
<xs:attribute name="isFolder" type="yesNoType" use="required" />
</xs:complexType>
</xs:element>

<xs:element name="Script">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="packageName" type="xs:string" />
<xs:element name="script" type="xs:string" />
<xs:element name="eventHandlerList">
<xs:complexType>
<xs:sequence>
<xs:element name="string" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="isActive" type="yesNoType" use="required" />
<xs:attribute name="isFolder" type="yesNoType" use="required" />
</xs:complexType>
</xs:element>

<!-- Key Package -->
<xs:element name="KeyPackage">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="KeyGroup" />
<xs:element ref="Key" />
</xs:choice>
</xs:complexType>
</xs:element>

<xs:element name="KeyGroup">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="packageName" type="xs:string" />
<xs:element name="script" type="xs:string" />
<xs:element name="command" type="xs:string" />
<xs:element name="keyCode" type="xs:integer" />
<xs:element name="keyModifier" type="xs:integer" />
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="KeyGroup" />
<xs:element ref="Key" />
</xs:choice>
</xs:sequence>
<xs:attribute name="isActive" type="yesNoType" use="required" />
<xs:attribute name="isFolder" type="yesNoType" use="required" />
</xs:complexType>
</xs:element>

<xs:element name="Key">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="packageName" type="xs:string" />
<xs:element name="script" type="xs:string" />
<xs:element name="command" type="xs:string" />
<xs:element name="keyCode" type="xs:integer" />
<xs:element name="keyModifier" type="xs:integer" />
</xs:sequence>
<xs:attribute name="isActive" type="yesNoType" use="required" />
<xs:attribute name="isFolder" type="yesNoType" use="required" />
</xs:complexType>
</xs:element>

<!-- Variable Package -->
<xs:element name="VariablePackage">
<xs:complexType>
<xs:sequence>
<xs:element name="VariableGroup" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="keyType" type="xs:integer" />
<xs:element name="value" type="xs:string" />
<xs:element name="valueType" type="xs:integer" />
</xs:sequence>
<xs:attribute name="isActive" type="yesNoType" use="required" />
<xs:attribute name="isFolder" type="yesNoType" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>

<!-- Help Package -->
<xs:element name="HelpPackage">
<xs:complexType>
<xs:sequence>
<xs:element name="helpURL" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>

<!-- Host Package (for profiles) -->
<xs:element name="HostPackage">
<xs:complexType>
<xs:sequence>
<xs:element name="Host">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="mInstalledPackages">
<xs:complexType>
<xs:sequence>
<xs:element name="string" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="mInstalledModules" minOccurs="0">
<xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="key" type="xs:string" />
<xs:element name="filepath" type="xs:string" />
<xs:choice>
<xs:element name="zipSync" type="xs:string" />
<xs:element name="globalSave" type="xs:integer" />
</xs:choice>
<xs:element name="priority" type="xs:integer" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="url" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>

</xs:schema>