Squore XML Schemas
input-data-2.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:simpleType name="id">
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z_][A-Z0-9_]+" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="relax-status">
<xs:restriction base="xs:string">
<xs:pattern value="RELAXED_[A-Z0-9_]+" />
</xs:restriction>
</xs:simpleType>
<xs:element name="bundle">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element ref="artifact"/>
<xs:element ref="finding"/>
<xs:element ref="info"/>
<xs:element ref="link"/>
<xs:element ref="metric"/>
</xs:choice>
<xs:attribute name="version" use="required" type="xs:integer" fixed="2"/>
</xs:complexType>
</xs:element>
<xs:element name="artifact">
<xs:complexType>
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="artifact"/>
<xs:element ref="finding"/>
<xs:element ref="metric"/>
<xs:element ref="key"/>
<xs:element ref="info"/>
<xs:element ref="link"/>
<xs:element ref="milestone"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="alias"/>
<xs:attribute name="art-location"/>
<xs:attribute name="id"/>
<xs:attribute name="local-art-location"/>
<xs:attribute name="local-key"/>
<xs:attribute name="local-parent"/>
<xs:attribute name="location"/>
<xs:attribute name="name"/>
<xs:attribute name="parent"/>
<xs:attribute name="path"/>
<xs:attribute name="type" use="required" type="id"/>
<xs:attribute name="view-path"/>
</xs:complexType>
</xs:element>
<xs:element name="info">
<xs:complexType>
<xs:attribute name="local-ref"/>
<xs:attribute name="name" use="required" type="id"/>
<xs:attribute name="ref"/>
<xs:attribute name="tool"/>
<xs:attribute name="value" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="key">
<xs:complexType>
<xs:attribute name="value" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="metric">
<xs:complexType>
<xs:attribute name="local-ref"/>
<xs:attribute name="name" use="required" type="id"/>
<xs:attribute name="ref"/>
<xs:attribute name="tool"/>
<xs:attribute name="value" type="xs:decimal" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="link">
<xs:complexType>
<xs:attribute name="dst"/>
<xs:attribute name="local-dst" type="xs:integer"/>
<xs:attribute name="local-src" type="xs:integer"/>
<xs:attribute name="name" use="required" type="id"/>
<xs:attribute name="src"/>
</xs:complexType>
</xs:element>
<xs:element name="finding">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="location"/>
<xs:element minOccurs="0" maxOccurs="1" ref="relax"/>
</xs:sequence>
<xs:attribute name="descr"/>
<xs:attribute name="local-ref"/>
<xs:attribute name="location" use="required"/>
<xs:attribute name="name" use="required" type="id"/>
<xs:attribute name="p0"/>
<xs:attribute name="p1"/>
<xs:attribute name="p2"/>
<xs:attribute name="p3"/>
<xs:attribute name="p4"/>
<xs:attribute name="p5"/>
<xs:attribute name="p6"/>
<xs:attribute name="p7"/>
<xs:attribute name="p8"/>
<xs:attribute name="p9"/>
<xs:attribute name="q0"/>
<xs:attribute name="q1"/>
<xs:attribute name="q2"/>
<xs:attribute name="q3"/>
<xs:attribute name="q4"/>
<xs:attribute name="q5"/>
<xs:attribute name="q6"/>
<xs:attribute name="q7"/>
<xs:attribute name="q8"/>
<xs:attribute name="q9"/>
<xs:attribute name="ref"/>
<xs:attribute name="tool"/>
</xs:complexType>
</xs:element>
<xs:element name="location">
<xs:complexType>
<xs:attribute name="local-ref"/>
<xs:attribute name="location" use="required"/>
<xs:attribute name="ref"/>
</xs:complexType>
</xs:element>
<xs:element name="relax">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="status" type="relax-status"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="milestone">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="goal"/>
</xs:sequence>
<xs:attribute name="date" use="required" type="xs:string"/>
<xs:attribute name="name" use="required" type="id"/>
<xs:attribute name="displayName" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="goal">
<xs:complexType>
<xs:attribute name="name" use="required" type="id"/>
<xs:attribute name="value" use="required" type="xs:decimal"/>
</xs:complexType>
</xs:element>
</xs:schema>
options.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="options">
<xs:complexType>
<xs:sequence>
<xs:element ref="tags"/>
<xs:element ref="repositories"/>
<xs:element ref="storage"/>
<xs:element ref="rules"/>
<xs:element ref="finding-statuses"/>
<xs:element ref="config-files"/>
</xs:sequence>
<xs:attribute name="output" use="required"/>
<xs:attribute name="tmp" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="tags">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="tag"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="tag">
<xs:complexType>
<xs:attribute name="key" use="required"/>
<xs:attribute name="value" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="repositories">
<xs:complexType>
<xs:sequence>
<xs:element ref="repository"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="repository">
<xs:complexType>
<xs:attribute name="alias"/>
<xs:attribute name="path" use="required" type="xs:anyURI"/>
</xs:complexType>
</xs:element>
<xs:element name="storage">
<xs:complexType>
<xs:attribute name="path" use="required"/>
<xs:attribute name="previous-baseline"/>
<xs:attribute name="previous-draft"/>
</xs:complexType>
</xs:element>
<xs:element name="rules">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="group"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="group">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="rule"/>
</xs:sequence>
<xs:attribute name="artefact-types" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="rule">
<xs:complexType>
<xs:attribute name="id" use="required" type="xs:NCName"/>
</xs:complexType>
</xs:element>
<xs:element name="finding-statuses">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="finding-status"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="finding-status">
<xs:complexType>
<xs:attribute name="id" use="required"/>
<xs:attribute name="type" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="config-files">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="file"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="file">
<xs:complexType>
<xs:attribute name="absolute-path" use="required" type="xs:anyURI"/>
<xs:attribute name="relative-parent-path" use="required"/>
<xs:attribute name="relative-path" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>
form.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:simpleType name="id">
<xs:restriction base="xs:string">
<xs:pattern value='[A-Z_][A-Z0-9_]+' />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="project-status">
<xs:restriction base="id">
<xs:enumeration value="IGNORE"/>
<xs:enumeration value="WARNING"/>
<xs:enumeration value="ERROR"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="tags">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="0" ref="tag"/>
<xs:element maxOccurs="0" ref="exec-phase"/>
</xs:sequence>
<xs:attribute name="baseName"/>
<xs:attribute name="deleteTmpSrc" type="xs:boolean"/>
<xs:attribute name="image"/>
<xs:attribute name="needSources" type="xs:boolean"/>
<xs:attribute name="projectStatusOnFailure" type="project-status"/>
<xs:attribute name="provide" type="xs:string"/>
<xs:attribute name="provideTypes" type="xs:string"/>
<xs:attribute name="deprecated" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="tag">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="values"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="value"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="displayIf"/>
</xs:sequence>
<xs:attribute name="changeable" type="xs:boolean"/>
<xs:attribute name="credentialType"/>
<xs:attribute name="defaultValue"/>
<xs:attribute name="displayType"/>
<xs:attribute name="key" use="required"/>
<xs:attribute name="optionTitle"/>
<xs:attribute name="required" type="xs:boolean"/>
<xs:attribute name="style"/>
<xs:attribute name="type" use="required"/>
<xs:attribute name="multi" type="xs:boolean"/>
<xs:attribute name="hide" type="xs:boolean"/>
<xs:attribute name="converter"/>
<xs:attribute name="image"/>
<xs:attribute name="inverted" type="xs:boolean"/>
<xs:attribute name="acceptedTypes"/>
<xs:attribute name="provide"/>
<xs:attribute name="provideTypes"/>
</xs:complexType>
</xs:element>
<xs:element name="value">
<xs:complexType>
<xs:attribute name="key" use="required"/>
<xs:attribute name="name"/>
<xs:attribute name="option"/>
<xs:attribute name="provide"/>
<xs:attribute name="provideTypes"/>
</xs:complexType>
</xs:element>
<xs:element name="values">
<xs:complexType>
<xs:attribute name="type" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="executeIf">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="and"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="or"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="notEmpty"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="equals"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="displayIf">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="and"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="or"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="notEmpty"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="equals"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="and">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="and"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="or"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="notEmpty"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="equals"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="or">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="and"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="or"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="notEmpty"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="equals"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="notEmpty">
<xs:complexType>
<xs:attribute name="key" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="equals">
<xs:complexType>
<xs:attribute name="key" use="required"/>
<xs:attribute name="value"/>
</xs:complexType>
</xs:element>
<xs:element name="exec-phase">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" ref="exec"/>
<xs:element minOccurs="0" ref="exec-tool"/>
</xs:sequence>
<xs:attribute name="id" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="exec">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" ref="executeIf"/>
<xs:element maxOccurs="0" ref="arg"/>
<xs:element maxOccurs="0" ref="env"/>
</xs:sequence>
<xs:attribute name="name" use="required"/>
<xs:attribute name="forkProcess" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="arg">
<xs:complexType>
<xs:attribute name="tag"/>
<xs:attribute name="value"/>
<xs:attribute name="defaultValue"/>
</xs:complexType>
</xs:element>
<xs:element name="env">
<xs:complexType>
<xs:attribute name="key" use="required"/>
<xs:attribute name="value"/>
</xs:complexType>
</xs:element>
<xs:element name="exec-tool">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" ref="executeIf"/>
<xs:element maxOccurs="0" ref="param"/>
</xs:sequence>
<xs:attribute name="name" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="param">
<xs:complexType>
<xs:attribute name="key" use="required"/>
<xs:attribute name="tag"/>
<xs:attribute name="value"/>
<xs:attribute name="defaultValue"/>
</xs:complexType>
</xs:element>
</xs:schema>
properties-1.2.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0">
<xs:element name="Bundle" type="bundleType"/>
<xs:complexType name="bundleType">
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="help" type="helpType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="hideObsoleteModels" type="obsoleteType" minOccurs="0" maxOccurs="1"/>
<xs:element name="hideModel" type="hiddenType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="explorerTabs" type="tabsType" minOccurs="0" maxOccurs="1"/>
<xs:element name="explorerTrees" type="treesType" minOccurs="0" maxOccurs="1"/>
<xs:element name="option" type="optionType" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="version" use="required" type="xs:string"/>
</xs:complexType>
<xs:complexType name="helpType">
<xs:attribute name="label" use="required" type="xs:string"/>
<xs:attribute name="url" use="required" type="xs:anyURI"/>
<xs:attribute name="profiles" use="optional" type="xs:string"/>
</xs:complexType>
<xs:complexType name="optionType">
<xs:attribute name="name" use="required" type="xs:string"/>
<xs:attribute name="value" use="required" type="xs:string"/>
</xs:complexType>
<xs:complexType name="obsoleteType">
<xs:attribute name="value" use="optional" default="false" type="xs:boolean"/>
</xs:complexType>
<xs:complexType name="hiddenType">
<xs:attribute name="name" use="required" type="xs:string"/>
</xs:complexType>
<xs:complexType name="tabsType">
<xs:sequence maxOccurs="unbounded">
<xs:element name="tab" type="tabType" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="hideSettings" use="optional" default="false" type="xs:boolean"/>
</xs:complexType>
<xs:complexType name="tabType">
<xs:attribute name="name" use="required" type="xs:string"/>
<xs:attribute name="default" use="optional" default="false" type="xs:boolean"/>
<xs:attribute name="mandatory" use="optional" default="false" type="xs:boolean"/>
<xs:attribute name="rendered" use="optional" default="true" type="xs:boolean"/>
</xs:complexType>
<xs:complexType name="treesType">
<xs:sequence maxOccurs="unbounded">
<xs:element name="tree" type="treeType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="treeType">
<xs:attribute name="name" use="required" type="xs:string"/>
<xs:attribute name="rendered" use="optional" default="true" type="xs:boolean"/>
</xs:complexType>
</xs:schema>
config-1.4.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0">
<xs:element name="squore" type="squoreType"/>
<xs:complexType name="squoreType">
<xs:sequence>
<xs:element name="paths" type="pathsType"/>
<xs:element name="database" type="databaseType" minOccurs="0"/>
<xs:element name="phantomjs" type="phantomjsType" minOccurs="0"/>
<xs:element name="configuration" type="directoriesType"/>
<xs:element name="addons" type="directoriesType"/>
<xs:element name="client" type="dataDirectoriesType" minOccurs="0"/>
<xs:element name="tmp" type="directoryType" minOccurs="0"/>
<xs:element name="projects" type="projectType" minOccurs="0"/>
<xs:element name="sources" type="directoryType" minOccurs="0"/>
<xs:element name="workspace" type="directoryType" minOccurs="0"/>
<xs:element name="dependencies" type="directoryType" minOccurs="0"/>
<xs:element name="archive" type="directoryType" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="type" use="required" type="xs:string"/>
<xs:attribute name="version" use="required" type="xs:string"/>
</xs:complexType>
<xs:complexType name="pathsType">
<xs:sequence maxOccurs="unbounded">
<xs:element name="path" type="pathType"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="pathType">
<xs:attribute name="name" use="required" type="xs:string"/>
<xs:attribute name="path" use="required" type="xs:string"/>
</xs:complexType>
<xs:complexType name="directoriesType">
<xs:sequence maxOccurs="unbounded">
<xs:element name="path" type="directoryType"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="directoryType">
<xs:attribute name="directory" use="required" type="xs:string"/>
</xs:complexType>
<xs:complexType name="databaseType">
<xs:sequence>
<xs:element name="postgresql" type="directoryType" minOccurs="0"/>
<xs:element name="cluster" type="directoryType" minOccurs="0"/>
<xs:element name="backup" type="directoryType"/>
<xs:element name="security" type="securityType" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="phantomjsType">
<xs:sequence>
<xs:element name="socket-binding" type="socketBindingType" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="socketBindingType">
<xs:attribute name="address" type="xs:string" default="127.0.0.1"/>
<xs:attribute name="port" type="xs:short" default="3003"/>
<xs:attribute name="squore-url" type="xs:string" default=""/>
<xs:attribute name="distant-url" type="xs:string" default=""/>
</xs:complexType>
<xs:complexType name="securityType">
<xs:sequence>
<xs:element name="user-name" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="dataDirectoriesType">
<xs:sequence>
<xs:element name="tmp" type="directoryType" minOccurs="0"/>
<xs:element name="projects" type="projectType" minOccurs="0"/>
<xs:element name="sources" type="directoryType" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="projectType">
<xs:sequence>
<xs:element name="data-providers" type="dpType" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="directory" use="required" type="xs:string"/>
</xs:complexType>
<xs:complexType name="dpType">
<xs:attribute name="keep-data-files" use="required" type="xs:boolean"/>
</xs:complexType>
</xs:schema>
analysis.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:simpleType name="id">
<xs:restriction base="xs:string">
<xs:pattern value='[A-Z_][A-Z0-9_]+' />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="list-id">
<xs:restriction base="xs:string">
<xs:pattern value='[A-Z_][A-Z0-9_]+(;[A-Z_][A-Z0-9_]+)*' />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="families">
<xs:restriction base="xs:string">
<xs:pattern value='[A-Z0-9_]+(;[A-Z_][A-Z0-9_]+)*' />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="categories">
<xs:restriction base="xs:string">
<xs:pattern value='[A-Z_][A-Z0-9_]+\.[A-Z_][A-Z0-9_]+(;[A-Z_][A-Z0-9_]+\.[A-Z_][A-Z0-9_]+)*' />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="measure-type">
<xs:restriction base="id">
<xs:enumeration value="METRIC"/>
<xs:enumeration value="RULE"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="format">
<xs:restriction base="id">
<xs:enumeration value="NUMBER"/>
<xs:enumeration value="PERCENT"/>
<xs:enumeration value="INTEGER"/>
<xs:enumeration value="DATE"/>
<xs:enumeration value="DATETIME"/>
<xs:enumeration value="TIME"/>
<xs:enumeration value="DAYS"/>
<xs:enumeration value="HOURS"/>
<xs:enumeration value="MINUTES"/>
<xs:enumeration value="SECONDS"/>
<xs:enumeration value="MILLISECONDS"/>
<xs:enumeration value="MAN_DAYS"/>
<xs:enumeration value="MAN_HOURS"/>
<xs:enumeration value="MAN_MINUTES"/>
<xs:enumeration value="MAN_SECONDS"/>
<xs:enumeration value="MAN_MILLISECONDS"/>
<xs:enumeration value="ENUM"/>
<xs:enumeration value="BOOLEAN"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="datetime-style">
<xs:restriction base="id">
<xs:enumeration value="DEFAULT"/>
<xs:enumeration value="SHORT"/>
<xs:enumeration value="MEDIUM"/>
<xs:enumeration value="LONG"/>
<xs:enumeration value="FULL"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="rounding-mode">
<xs:restriction base="id">
<xs:enumeration value="UP"/>
<xs:enumeration value="DOWN"/>
<xs:enumeration value="CEILING"/>
<xs:enumeration value="FLOOR"/>
<xs:enumeration value="HALF_UP"/>
<xs:enumeration value="HALF_DOWN"/>
<xs:enumeration value="HALF_EVEN"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="bounds-type">
<xs:restriction base="xs:string">
<xs:pattern value='[\[\]]((-)*[0-9](\.[0-9]+)?)*;((-)*[0-9](.[0-9]+)?)*[\[\]]' />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="path-scope">
<xs:restriction base="id">
<xs:enumeration value="CHILDREN"/>
<xs:enumeration value="DESCENDANTS"/>
<xs:enumeration value="PARENT"/>
<xs:enumeration value="ANCESTORS"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="elements">
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="ArtefactType"/>
<xs:element ref="Indicator"/>
<xs:element ref="Measure"/>
<xs:element ref="Package"/>
<xs:element ref="package"/>
<xs:element ref="Scale"/>
<xs:element ref="ScaleMacro"/>
<xs:element ref="Constant"/>
<xs:element ref="RootIndicator"/>
<xs:element ref="UpdateRules"/>
<xs:element ref="UpdateRule"/>
<xs:element ref="Link"/>
<xs:element ref="ComputedLink"/>
<xs:element ref="FindingStatus"/>
<xs:element ref="Enum"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="providedBy"/>
<xs:attribute name="name"/>
<xs:attribute name="storedOnlyIfDisplayed" type="xs:boolean"/>
</xs:complexType>
<xs:element name="Bundle" type="elements" />
<xs:element name="Package" type="elements"/>
<xs:element name="package" type="elements"/>
<xs:element name="Constant">
<xs:complexType>
<xs:attribute name="id" use="required" type="id"/>
<xs:attribute name="value" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="RootIndicator">
<xs:complexType>
<xs:attribute name="artefactTypes" use="required" type="list-id"/>
<xs:attribute name="indicatorId" use="required" type="id"/>
</xs:complexType>
</xs:element>
<xs:element name="UpdateRules">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="UpdateRule"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="UpdateRule">
<xs:complexType>
<xs:attribute name="categories" type="categories"/>
<xs:attribute name="disabled" type="xs:boolean"/>
<xs:attribute name="measureId" use="required" type="id"/>
</xs:complexType>
</xs:element>
<xs:element name="Measure">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="Computation"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="Condition"/>
</xs:sequence>
<xs:attribute name="acceptMissingValue" type="xs:boolean"/>
<xs:attribute name="categories" type="categories"/>
<xs:attribute name="dataBounds" type="bounds-type"/>
<xs:attribute name="dateStyle" type="datetime-style"/>
<xs:attribute name="decimals" type="xs:integer"/>
<xs:attribute name="defaultValue" type="xs:decimal"/>
<xs:attribute name="excludingTypes" type="list-id"/>
<xs:attribute name="enumId" type="id"/>
<xs:attribute name="invalidValue"/>
<xs:attribute name="families" type="families"/>
<xs:attribute name="format" type="format"/>
<xs:attribute name="manual" type="xs:boolean"/>
<xs:attribute name="measureId" use="required" type="id"/>
<xs:attribute name="noValue"/>
<xs:attribute name="pattern"/>
<xs:attribute name="roundingMode" type="rounding-mode"/>
<xs:attribute name="suffix"/>
<xs:attribute name="targetArtefactTypes"/>
<xs:attribute name="timeStyle" type="datetime-style"/>
<xs:attribute name="toolName"/>
<xs:attribute name="toolVersion"/>
<xs:attribute name="type" type="measure-type"/>
<xs:attribute name="usedForRelaxation" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="Computation">
<xs:complexType>
<xs:attribute name="continueOnRelaxed" type="xs:boolean"/>
<xs:attribute name="excludingTypes" type="list-id"/>
<xs:attribute name="result" use="required"/>
<xs:attribute name="stored" type="xs:boolean"/>
<xs:attribute name="targetArtefactTypes" use="required" type="list-id"/>
</xs:complexType>
</xs:element>
<xs:element name="Condition">
<xs:complexType>
<xs:attribute name="excludingTypes" type="list-id"/>
<xs:attribute name="test" use="required"/>
<xs:attribute name="targetArtefactTypes" use="required" type="list-id"/>
</xs:complexType>
</xs:element>
<xs:element name="Indicator">
<xs:complexType>
<xs:attribute name="displayedScale" type="id"/>
<xs:attribute name="displayedValue" type="id"/>
<xs:attribute name="displayTypes" type="list-id"/>
<xs:attribute name="excludingTypes" type="list-id"/>
<xs:attribute name="families" type="families"/>
<xs:attribute name="indicatorId" use="required" type="id"/>
<xs:attribute name="measureId" type="id"/>
<xs:attribute name="scaleId" type="id"/>
<xs:attribute name="targetArtefactTypes" type="list-id"/>
</xs:complexType>
</xs:element>
<xs:element name="Scale">
<xs:complexType>
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="RankFormat"/>
<xs:element ref="ScaleLevel"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="isDynamic" type="xs:boolean"/>
<xs:attribute name="macro" type="id"/>
<xs:attribute name="scaleId" use="required" type="id"/>
<xs:attribute name="targetArtefactTypes" type="list-id"/>
<xs:attribute name="excludingTypes" type="list-id"/>
<xs:attribute name="vars"/>
</xs:complexType>
</xs:element>
<xs:element name="ScaleMacro">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="ScaleLevel"/>
</xs:sequence>
<xs:attribute name="id" use="required" type="id"/>
<xs:attribute name="isDynamic" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="ArtefactType">
<xs:complexType>
<xs:attribute name="heirs" type="list-id"/>
<xs:attribute name="id" use="required" type="id"/>
<xs:attribute name="manual" type="xs:boolean"/>
<xs:attribute name="compactable" type="xs:boolean"/>
<xs:attribute name="parents" type="list-id"/>
</xs:complexType>
</xs:element>
<xs:element name="ScaleLevel">
<xs:complexType>
<xs:attribute name="bounds" use="required"/>
<xs:attribute name="levelId" use="required" type="id"/>
<xs:attribute name="rank" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="RankFormat">
<xs:complexType>
<xs:attribute name="dataBounds" type="bounds-type"/>
<xs:attribute name="dateStyle" type="datetime-style"/>
<xs:attribute name="decimals" type="xs:integer"/>
<xs:attribute name="enumId" type="id"/>
<xs:attribute name="invalidValue"/>
<xs:attribute name="format" type="format"/>
<xs:attribute name="noValue"/>
<xs:attribute name="pattern"/>
<xs:attribute name="roundingMode" type="rounding-mode"/>
<xs:attribute name="suffix"/>
<xs:attribute name="timeStyle" type="datetime-style"/>
</xs:complexType>
</xs:element>
<xs:element name="Link">
<xs:complexType>
<xs:attribute name="id" use="required" type="id"/>
<xs:attribute name="inArtefactTypes" type="list-id"/>
<xs:attribute name="outArtefactTypes" type="list-id"/>
<xs:attribute name="srcArtefactTypes" type="list-id"/>
<xs:attribute name="dstArtefactTypes" type="list-id"/>
</xs:complexType>
</xs:element>
<xs:element name="ComputedLink">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" ref="StartPath"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="NextPath"/>
</xs:sequence>
<xs:attribute name="id" use="required" type="id"/>
</xs:complexType>
</xs:element>
<xs:element name="StartPath">
<xs:complexType>
<xs:attribute name="link" type="id"/>
<xs:attribute name="links" type="list-id"/>
<xs:attribute name="scope" type="path-scope"/>
<xs:attribute name="srcArtefactTypes" type="list-id"/>
<xs:attribute name="dstArtefactTypes" type="list-id"/>
<xs:attribute name="srcCondition"/>
<xs:attribute name="dstCondition"/>
<xs:attribute name="recurse" type="xs:boolean"/>
<xs:attribute name="keepIntermediateLinks" type="xs:boolean"/>
<xs:attribute name="dstToSrc" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="NextPath">
<xs:complexType>
<xs:attribute name="link" type="id"/>
<xs:attribute name="links" type="list-id"/>
<xs:attribute name="scope" type="path-scope"/>
<xs:attribute name="dstArtefactTypes" type="list-id"/>
<xs:attribute name="dstCondition"/>
<xs:attribute name="recurse" type="xs:boolean"/>
<xs:attribute name="keepIntermediateLinks" type="xs:boolean"/>
<xs:attribute name="dstToSrc" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="FindingStatus">
<xs:complexType>
<xs:attribute name="id" use="required" type="id"/>
<xs:attribute name="type" use="required" type="id"/>
</xs:complexType>
</xs:element>
<xs:element name="Enum">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="unbounded" ref="Value"/>
</xs:sequence>
<xs:attribute name="id" type="id"/>
</xs:complexType>
</xs:element>
<xs:element name="Value">
<xs:complexType>
<xs:attribute name="id" use="required" type="id"/>
<xs:attribute name="value" type="xs:decimal"/>
</xs:complexType>
</xs:element>
</xs:schema>
decision.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:simpleType name="id">
<xs:restriction base="xs:string">
<xs:pattern value='[A-Z_][A-Z0-9_]+' />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="list-id">
<xs:restriction base="xs:string">
<xs:pattern value='[A-Z_][A-Z0-9_]+(;[A-Z_][A-Z0-9_]+)*' />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="categories">
<xs:restriction base="xs:string">
<xs:pattern value='[A-Z_][A-Z0-9_]+\.[A-Z_][A-Z0-9_]+(;[A-Z_][A-Z0-9_]+\.[A-Z_][A-Z0-9_]+)*' />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="criterion-type">
<xs:restriction base="id">
<xs:enumeration value="BENEFIT"/>
<xs:enumeration value="COST"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="preference-level">
<xs:restriction base="id">
<xs:enumeration value="VERY_LOW"/>
<xs:enumeration value="LOW"/>
<xs:enumeration value="MEDIUM"/>
<xs:enumeration value="HIGH"/>
<xs:enumeration value="VERY_HIGH"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="elements">
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Package"/>
<xs:element ref="package"/>
<xs:element ref="DecisionCriteria"/>
<xs:element ref="DecisionCriterion"/>
<xs:element ref="FindingsActionPlan"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:element name="Bundle" type="elements"/>
<xs:element name="Package" type="elements"/>
<xs:element name="package" type="elements"/>
<xs:element name="DecisionCriteria" type="elements"/>
<xs:element name="DecisionCriterion">
<xs:complexType>
<xs:sequence>
<xs:element ref="Triggers"/>
</xs:sequence>
<xs:attribute name="categories" type="categories"/>
<xs:attribute name="dcId" use="required" type="id"/>
<xs:attribute name="excludingTypes" type="list-id"/>
<xs:attribute name="families" type="list-id"/>
<xs:attribute name="roles" type="list-id"/>
<xs:attribute name="targetArtefactTypes" use="required" type="list-id"/>
</xs:complexType>
</xs:element>
<xs:element name="Triggers">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="Trigger"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Trigger">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="Test"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Test">
<xs:complexType>
<xs:attribute name="bounds"/>
<xs:attribute name="descrId" type="id"/>
<xs:attribute name="expr" use="required"/>
<xs:attribute name="p0"/>
<xs:attribute name="p1"/>
<xs:attribute name="p2"/>
<xs:attribute name="p3"/>
<xs:attribute name="p4"/>
<xs:attribute name="p5"/>
<xs:attribute name="p6"/>
<xs:attribute name="p7"/>
<xs:attribute name="p8"/>
<xs:attribute name="p9"/>
<xs:attribute name="suspect"/>
</xs:complexType>
</xs:element>
<xs:element name="FindingsActionPlan">
<xs:complexType>
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="CategoryCriterion"/>
<xs:element ref="OccurrencesCriterion"/>
<xs:element ref="VariableCriterion"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="limit" type="xs:integer"/>
<xs:attribute name="priorityScaleId" type="id"/>
</xs:complexType>
</xs:element>
<xs:element name="CategoryCriterion">
<xs:complexType>
<xs:attribute name="type" type="criterion-type"/>
<xs:attribute name="preferenceLevel" type="preference-level"/>
<xs:attribute name="scaleId" use="required" type="id"/>
<xs:attribute name="excludeLevels" type="list-id"/>
</xs:complexType>
</xs:element>
<xs:element name="OccurrencesCriterion">
<xs:complexType>
<xs:attribute name="type" type="criterion-type"/>
<xs:attribute name="preferenceLevel" type="preference-level"/>
<xs:attribute name="scaleId" type="id"/>
<xs:attribute name="excludeLevels" type="list-id"/>
</xs:complexType>
</xs:element>
<xs:element name="VariableCriterion">
<xs:complexType>
<xs:attribute name="type" type="criterion-type"/>
<xs:attribute name="preferenceLevel" type="preference-level"/>
<xs:attribute name="indicatorId" use="required" type="id"/>
<xs:attribute name="excludeLevels" type="list-id"/>
</xs:complexType>
</xs:element>
</xs:schema>
description.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:complexType name="elements">
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Package"/>
<xs:element ref="package"/>
<xs:element ref="Properties"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:element name="Bundle">
<xs:complexType>
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Package"/>
<xs:element ref="package"/>
<xs:element ref="Properties"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="available"/>
<xs:attribute name="default"/>
</xs:complexType>
</xs:element>
<xs:element name="Package" type="elements"/>
<xs:element name="package" type="elements"/>
<xs:element name="Properties">
<xs:complexType>
<xs:attribute name="src" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>
tabs.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="Package">
<xs:complexType>
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Package" />
<xs:element ref="Tab" />
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Bundle">
<xs:complexType>
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Package" />
<xs:element ref="Tab" />
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Tab">
<xs:complexType>
<xs:attribute name="name" use="required" />
<xs:attribute name="onArtefactTypes" />
<xs:attribute name="onExcludingTypes" />
<xs:attribute name="roles" />
<xs:attribute name="groups" />
<xs:attribute name="displayOnlyIf" />
<xs:attribute name="autoRun" type="xs:boolean" />
<xs:attribute name="borderColor" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:schema>
exports.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:simpleType name="type-id">
<xs:restriction base="xs:string">
<xs:pattern value='[A-Z0-9_]*' />
</xs:restriction>
</xs:simpleType>
<xs:element name="Package">
<xs:complexType>
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Package" />
<xs:element ref="Role" />
<xs:element ref="ExportDef" />
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Bundle">
<xs:complexType>
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Package" />
<xs:element ref="Role" />
<xs:element ref="ExportDef" />
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Role">
<xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Export" />
</xs:sequence>
<xs:attribute name="name" use="required" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:element name="Export">
<xs:complexType>
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="ExportDef" />
</xs:choice>
</xs:sequence>
<xs:attribute name="type" use="required" type="type-id" />
</xs:complexType>
</xs:element>
<xs:element name="ExportDef">
<xs:complexType>
<xs:attribute name="name" use="required" />
<xs:attribute name="onArtefactTypes" />
<xs:attribute name="onExcludingTypes" />
<xs:attribute name="roles" />
<xs:attribute name="groups" />
<xs:attribute name="displayOnlyIf" />
</xs:complexType>
</xs:element>
</xs:schema>
highlights.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="id">
<xs:restriction base="xs:string">
<xs:pattern value='[A-Z0-9_]*' />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="measure-id">
<xs:restriction base="xs:string">
<xs:pattern value='([BD].)?[A-Z0-9_]*' />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="info-id">
<xs:restriction base="xs:string">
<xs:pattern value='[A-Z0-9_]*' />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="indicator-id">
<xs:restriction base="xs:string">
<xs:pattern value='([I].)?[A-Z0-9_]*' />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="bounds-type">
<xs:restriction base="xs:string">
<xs:pattern value='[\[\]]((-)*[0-9](\.[0-9]+)?)*;((-)*[0-9](.[0-9]+)?)*[\[\]]' />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="top-order">
<xs:restriction base="xs:string">
<xs:enumeration value="ASC" />
<xs:enumeration value="DESC" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="link-direction">
<xs:restriction base="xs:string">
<xs:enumeration value="IN" />
<xs:enumeration value="OUT" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="result-size">
<xs:union>
<xs:simpleType>
<xs:restriction base="xs:positiveInteger" />
</xs:simpleType>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="*" />
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>
<xs:simpleType name="label-type">
<xs:restriction base="xs:string">
<xs:enumeration value="MNEMONIC" />
<xs:enumeration value="NAME" />
<xs:enumeration value="CUSTOM" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="display-type">
<xs:restriction base="xs:string">
<xs:enumeration value="VALUE" />
<xs:enumeration value="RANK" />
<xs:enumeration value="ICON" />
<xs:enumeration value="DATE" />
<xs:enumeration value="DATETIME" />
<xs:enumeration value="TIME" />
<xs:enumeration value="NAME" />
<xs:enumeration value="MNEMONIC" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="date-style">
<xs:restriction base="xs:string">
<xs:enumeration value="SHORT" />
<xs:enumeration value="MEDIUM" />
<xs:enumeration value="DEFAULT" />
<xs:enumeration value="LONG" />
<xs:enumeration value="FULL" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="elements">
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="Package" />
<xs:element ref="Role" />
<xs:element ref="Filters" />
<xs:element ref="TopArtefacts" />
<xs:element ref="TopDeltaArtefacts" />
<xs:element ref="TopNewArtefacts" />
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:element name="Bundle" type="elements" />
<xs:element name="Package" type="elements"/>
<xs:element name="TopDeltaArtefacts" type="top-artefacts" />
<xs:element name="TopNewArtefacts" type="top-artefacts" />
<xs:element name="TopArtefacts">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:choice>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="Column" />
<xs:element minOccurs="0" maxOccurs="unbounded" ref="Where" />
<xs:element minOccurs="0" maxOccurs="1" ref="where" />
<xs:element minOccurs="0" maxOccurs="unbounded" ref="OrderBy" />
</xs:choice>
</xs:sequence>
<xs:attribute name="id" use="required" type="id" />
<xs:attribute name="hideRating" use="optional" type="xs:boolean" />
<xs:attribute name="hidePath" use="optional" type="xs:boolean" />
<xs:attribute name="name" use="optional" type="xs:string" />
<xs:attribute name="onArtefactTypes" use="optional" type="xs:string" />
<xs:attribute name="roles" use="optional" type="xs:string" />
<xs:attribute name="groups" use="optional" type="xs:string" />
<xs:attribute name="artefactTypes" use="optional" type="xs:string" />
<xs:attribute name="excludingTypes" use="optional" type="xs:string" />
<xs:attribute name="onlyDirectChildren" use="optional" type="xs:boolean" />
<xs:attribute name="measureId" use="optional" default="LEVEL" type="measure-id" />
<xs:attribute name="order" use="optional" default="ASC" type="top-order" />
<xs:attribute name="altMeasureId" use="optional" type="measure-id" />
<xs:attribute name="altOrder" use="optional" type="top-order" />
<xs:attribute name="resultSize" use="required" type="result-size" />
<xs:attribute name="linkType" use="optional" type="id" />
<xs:attribute name="linkDirection" use="optional" type="link-direction" />
<xs:attribute name="displayOnlyIf" use="optional" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:complexType name="top-artefacts">
<xs:sequence maxOccurs="unbounded">
<xs:choice>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="Column" />
<xs:element minOccurs="0" maxOccurs="unbounded" ref="Where" />
<xs:element minOccurs="0" maxOccurs="1" ref="where" />
<xs:element minOccurs="0" maxOccurs="unbounded" ref="OrderBy" />
</xs:choice>
</xs:sequence>
<xs:attribute name="id" use="required" type="id" />
<xs:attribute name="hideRating" use="optional" type="xs:boolean" />
<xs:attribute name="hidePath" use="optional" type="xs:boolean" />
<xs:attribute name="name" use="optional" type="xs:string" />
<xs:attribute name="onArtefactTypes" use="optional" type="xs:string" />
<xs:attribute name="roles" use="optional" type="xs:string" />
<xs:attribute name="groups" use="optional" type="xs:string" />
<xs:attribute name="artefactTypes" use="optional" type="xs:string" />
<xs:attribute name="excludingTypes" use="optional" type="xs:string" />
<xs:attribute name="onlyDirectChildren" use="optional" type="xs:boolean" />
<xs:attribute name="measureId" use="optional" default="LEVEL" type="measure-id" />
<xs:attribute name="order" use="optional" default="ASC" type="top-order" />
<xs:attribute name="resultSize" use="required" type="result-size" />
<xs:attribute name="linkType" use="optional" type="id" />
<xs:attribute name="linkDirection" use="optional" type="link-direction" />
<xs:attribute name="displayOnlyIf" use="optional" type="xs:string" />
</xs:complexType>
<xs:element name="Role">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:element ref="Filters" />
</xs:sequence>
<xs:attribute name="name" use="required" type="xs:string" />
<xs:attribute name="preSelectedType" use="optional" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:element name="Filters">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:choice>
<xs:element ref="TopArtefacts" />
<xs:element ref="TopDeltaArtefacts" />
<xs:element ref="TopNewArtefacts" />
</xs:choice>
</xs:sequence>
<xs:attribute name="type" use="required" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:element name="Column">
<xs:complexType>
<xs:attribute name="measureId" type="measure-id" />
<xs:attribute name="infoId" type="info-id" />
<xs:attribute name="indicatorId" type="indicator-id" />
<xs:attribute name="artefactTypes" type="xs:string" />
<xs:attribute name="excludingTypes" type="xs:string" />
<xs:attribute name="headerDisplayType" type="label-type" />
<xs:attribute name="labelType" default="NAME" type="label-type" />
<xs:attribute name="label" type="xs:string" />
<xs:attribute name="displayType" default="VALUE" type="display-type" />
<xs:attribute name="decimals" default="2" type="xs:integer" />
<xs:attribute name="dateStyle" default="DEFAULT" type="date-style" />
<xs:attribute name="timeStyle" default="DEFAULT" type="date-style" />
<xs:attribute name="datePattern" type="xs:string" />
<xs:attribute name="suffix" type="xs:string" />
<xs:attribute name="useBackgroundColor" type="xs:boolean" />
<xs:attribute name="showTrend" type="xs:boolean" />
</xs:complexType>
</xs:element>
<xs:element name="Where">
<xs:complexType>
<xs:attribute name="measureId" use="optional" type="measure-id" />
<xs:attribute name="infoId" use="optional" type="info-id" />
<xs:attribute name="value" use="optional" type="xs:string" />
<xs:attribute name="bounds" use="optional" type="bounds-type" />
</xs:complexType>
</xs:element>
<xs:element name="where">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:choice>
<xs:element ref="measure" />
<xs:element ref="indicator" />
<xs:element ref="info" />
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="measure">
<xs:complexType>
<xs:attribute name="id" type="measure-id" />
<xs:attribute name="values" use="optional" type="xs:string" />
<xs:attribute name="bounds" use="optional" type="xs:string" />
<xs:attribute name="invert" use="optional" type="xs:boolean" />
</xs:complexType>
</xs:element>
<xs:element name="indicator">
<xs:complexType>
<xs:attribute name="id" type="indicator-id" />
<xs:attribute name="levels" type="xs:string" />
<xs:attribute name="invert" use="optional" type="xs:boolean" />
</xs:complexType>
</xs:element>
<xs:element name="info">
<xs:complexType>
<xs:attribute name="id" type="info-id" />
<xs:attribute name="values" use="optional" type="xs:string" />
<xs:attribute name="patterns" use="optional" type="xs:string" />
<xs:attribute name="invert" use="optional" type="xs:boolean" />
</xs:complexType>
</xs:element>
<xs:element name="OrderBy">
<xs:complexType>
<xs:attribute name="measureId" use="required" type="measure-id" />
<xs:attribute name="order" use="optional" default="ASC" type="top-order" />
</xs:complexType>
</xs:element>
</xs:schema>
properties.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:simpleType name="id">
<xs:restriction base="xs:string">
<xs:pattern value='[A-Z_][A-Z0-9_]+' />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="list-id">
<xs:restriction base="xs:string">
<xs:pattern value='[A-Z_][A-Z0-9_]+(;[A-Z_][A-Z0-9_]+)*' />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="aggregation-type">
<xs:restriction base="id">
<xs:enumeration value="MIN"/>
<xs:enumeration value="MAX"/>
<xs:enumeration value="OCC"/>
<xs:enumeration value="AVG"/>
<xs:enumeration value="DEV"/>
<xs:enumeration value="SUM"/>
<xs:enumeration value="MED"/>
<xs:enumeration value="MOD"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="elements">
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="package"/>
<xs:element ref="hideMeasure"/>
<xs:element ref="findingsTab"/>
<xs:element ref="actionItemsTab"/>
<xs:element ref="rulesEdition"/>
<xs:element ref="scoreGroups"/>
<xs:element ref="sarifExport"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:element name="bundle" type="elements"/>
<xs:element name="package" type="elements"/>
<xs:element name="hideMeasure">
<xs:complexType>
<xs:attribute name="path" use="required"/>
<xs:attribute name="targetArtefactTypes" type="list-id"/>
</xs:complexType>
</xs:element>
<xs:element name="findingsTab">
<xs:complexType>
<xs:attribute name="orderBy" type="list-id"/>
<xs:attribute name="hideColumns" type="list-id"/>
<xs:attribute name="hideCharacteristicsFilter" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="actionItemsTab">
<xs:complexType>
<xs:attribute name="orderBy" type="list-id"/>
<xs:attribute name="hideColumns" type="list-id"/>
</xs:complexType>
</xs:element>
<xs:element name="rulesEdition">
<xs:complexType>
<xs:attribute name="scales" use="required" type="list-id"/>
</xs:complexType>
</xs:element>
<xs:element name="scoreGroups">
<xs:complexType>
<xs:attribute name="indicatorId" type="id"/>
<xs:attribute name="aggregationType" type="aggregation-type"/>
</xs:complexType>
</xs:element>
<xs:element name="sarifExport">
<xs:complexType>
<xs:attribute name="scale" use="required"/>
<xs:attribute name="default"/>
<xs:attribute name="note" type="list-id" use="required"/>
<xs:attribute name="warning" type="list-id" use="required"/>
<xs:attribute name="error" type="list-id" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>
wizards.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:simpleType name="id">
<xs:restriction base="xs:string">
<xs:pattern value='[A-Z_][A-Z0-9_]+' />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="list-id">
<xs:restriction base="xs:string">
<xs:pattern value='[A-Z_][A-Z0-9_]+(;[A-Z_][A-Z0-9_]+)*' />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="project-status">
<xs:restriction base="id">
<xs:enumeration value="IGNORE"/>
<xs:enumeration value="WARNING"/>
<xs:enumeration value="ERROR"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="show-mode">
<xs:restriction base="id">
<xs:enumeration value="ALL"/>
<xs:enumeration value="AUTO"/>
<xs:enumeration value="AUTO_AND_GENERATED"/>
<xs:enumeration value="LIST"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="Bundle">
<xs:complexType>
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="tags"/>
<xs:element ref="wizard"/>
<xs:element ref="onDraft"/>
<xs:element ref="onBaseline"/>
<xs:element ref="onFailure"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="tags">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="tag"/>
</xs:sequence>
<xs:attribute name="groupId" type="id"/>
<xs:attribute name="opened" type="xs:boolean"/>
<xs:attribute name="roles" type="list-id"/>
</xs:complexType>
</xs:element>
<xs:element name="tag">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="value"/>
</xs:sequence>
<xs:attribute name="defaultValue"/>
<xs:attribute name="displayType"/> <!-- Not display-type because it is case insensitive -->
<xs:attribute name="group"/>
<xs:attribute name="groupId" type="id"/>
<xs:attribute name="measureId" use="required" type="id"/>
<xs:attribute name="name"/>
<xs:attribute name="placeholder"/>
<xs:attribute name="required" type="xs:boolean"/>
<xs:attribute name="roles" type="list-id"/>
<xs:attribute name="suffix"/>
<xs:attribute name="targetArtefactTypes" type="list-id"/>
<xs:attribute name="type" use="required"/> <!-- Not tag-type because it is case insensitive -->
</xs:complexType>
</xs:element>
<xs:element name="value">
<xs:complexType>
<xs:attribute name="key" use="required"/>
<xs:attribute name="value" use="required" type="xs:decimal"/>
</xs:complexType>
</xs:element>
<xs:element name="onDraft" type="onEvent" />
<xs:element name="onBaseline" type="onEvent" />
<xs:element name="onFailure" type="onEvent"/>
<xs:complexType name="onEvent">
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="notification" />
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:element name="notification">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:element ref="template" />
</xs:sequence>
<xs:attribute name="id" use="required" type="id"/>
<xs:attribute name="activeByDefault" type="xs:boolean"/>
<xs:attribute name="statuses" type="list-id"/>
</xs:complexType>
</xs:element>
<xs:element name="template">
<xs:complexType>
<xs:attribute name="descrId" use="required" type="id"/>
<xs:attribute name="roles" type="list-id"/>
<xs:attribute name="groups"/>
<xs:attribute name="onlyIf"/>
</xs:complexType>
</xs:element>
<xs:element name="wizard">
<xs:complexType>
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="tags"/>
<xs:element ref="milestones"/>
<xs:element ref="repositories"/>
<xs:element ref="tools"/>
<xs:element ref="onDraft"/>
<xs:element ref="onBaseline"/>
<xs:element ref="onFailure"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="autoBaseline" type="xs:boolean"/>
<xs:attribute name="group"/>
<xs:attribute name="groups"/>
<xs:attribute name="hideRulesEdition" type="xs:boolean"/>
<xs:attribute name="img"/>
<xs:attribute name="users"/>
<xs:attribute name="versionPattern"/>
<xs:attribute name="wizardId" use="required" type="id"/>
<xs:attribute name="projectsSelection" type="xs:boolean"/>
<xs:attribute name="name"/>
</xs:complexType>
</xs:element>
<xs:element name="milestones">
<xs:complexType>
<xs:sequence minOccurs="0">
<xs:element minOccurs="0" maxOccurs="unbounded" ref="goals"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="milestone"/>
</xs:sequence>
<xs:attribute name="canCreateMilestone" type="xs:boolean"/>
<xs:attribute name="canCreateGoal" type="xs:boolean"/>
<xs:attribute name="hide" type="xs:boolean"/>
<xs:attribute name="skipUiValues" type="xs:boolean"/>
<xs:attribute name="changeableMode" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="goals">
<xs:complexType>
<xs:sequence minOccurs="0">
<xs:element minOccurs="0" maxOccurs="unbounded" ref="goal"/>
</xs:sequence>
<xs:attribute name="displayableFamilies" use="required" type="list-id"/>
</xs:complexType>
</xs:element>
<xs:element name="goal">
<xs:complexType>
<xs:attribute name="mandatory" type="xs:boolean"/>
<xs:attribute name="measureId" use="required" type="id"/>
</xs:complexType>
</xs:element>
<xs:element name="milestone">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="defaultGoal"/>
</xs:sequence>
<xs:attribute name="id" use="required" type="id"/>
<xs:attribute name="mandatory" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="defaultGoal">
<xs:complexType>
<xs:attribute name="measureId" use="required" type="id"/>
<xs:attribute name="value" use="required" type="xs:integer"/>
</xs:complexType>
</xs:element>
<xs:element name="repositories">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="repository"/>
</xs:sequence>
<xs:attribute name="all" use="required" type="xs:boolean"/>
<xs:attribute name="hide" use="required" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="repository">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" ref="param"/>
</xs:sequence>
<xs:attribute name="checkedInUI" type="xs:boolean"/>
<xs:attribute name="name" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="tools">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="tool"/>
</xs:sequence>
<xs:attribute name="all" type="xs:boolean"/>
<xs:attribute name="show" type="show-mode"/>
<xs:attribute name="expandedInUI" type="xs:boolean"/>
<xs:attribute name="showCompatible" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="tool">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="param"/>
</xs:sequence>
<xs:attribute name="checkedInUI" type="xs:boolean"/>
<xs:attribute name="expandedInUI" type="xs:boolean"/>
<xs:attribute name="name" use="required"/>
<xs:attribute name="optional" type="xs:boolean"/>
<xs:attribute name="projectStatusOnFailure" type="project-status"/>
<xs:attribute name="projectStatusOnWarning" type="project-status"/>
<xs:attribute name="deprecated" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="param">
<xs:complexType>
<xs:attribute name="availableChoices"/>
<xs:attribute name="name" use="required"/>
<xs:attribute name="value"/>
<xs:attribute name="hide" type="xs:boolean"/>
</xs:complexType>
</xs:element>
</xs:schema>