mpackage.xsd
XML Schema Definition (XSD) for this schema.
Schema URL
https://schema.gesslar.dev/mudlet-mpackage/v1.001/mpackage.xsdFull 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>