Mavenizer document XML Schema

The following XML Schema is used by the mavenizer.xml document generated during the analysis step. It is also modified by the user during the customization step then used as input during the generation step.

<schema xmlns="http://www.w3.org/2001/XMLSchema"
	targetNamespace="urn:mavenizer-schemas:model_1.0"
	xmlns:m="urn:mavenizer-schemas:model_1.0"
	xmlns:xs="http://www.w3.org/2001/XMLSchema"
	xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.0"
	elementFormDefault="qualified" attributeFormDefault="unqualified">

	<annotation>
		<appinfo>
			<jaxb:globalBindings>
				<jaxb:javaType name="java.io.File" xmlType="m:File"
					parseMethod="net.sf.mavenizer.model.bindings.FileDataTypeConverter.parse"
					printMethod="net.sf.mavenizer.model.bindings.FileDataTypeConverter.print" />
			</jaxb:globalBindings>
		</appinfo>
	</annotation>

	<element name="project">
		<complexType>
			<sequence>
				<element name="configuration" type="m:Configuration"></element>
				<element name="unit" type="m:Unit"
					maxOccurs="unbounded">
					<annotation>
						<appinfo>
							<jaxb:property name="units"></jaxb:property>
						</appinfo>
					</annotation>
				</element>
			</sequence>
		</complexType>

		<key name="unit">
			<selector xpath="./unit"></selector>
			<field xpath="id"></field>
		</key>

		<xs:keyref name="unitRef" refer="m:unit">
			<xs:selector xpath="./dependencies/unit" />
			<xs:field xpath="@ref" />
		</xs:keyref>

	</element>

	<complexType name="Unit">
		<sequence>
			<element name="namespace" type="m:Namespace" minOccurs="0"
				maxOccurs="1">
			</element>
			<element name="identifier" type="string"></element>
			<element name="version" type="m:Version" minOccurs="0"
				maxOccurs="1">
			</element>
			<element name="classifier" type="string" minOccurs="0"
				maxOccurs="1">
			</element>
			<element name="source" type="m:File"></element>
			<element name="content" type="m:Content"></element>
			<element name="dependencies">
				<complexType>
					<sequence>
						<element name="unit" minOccurs="0"
							type="m:UnitRef" maxOccurs="unbounded">
							<annotation>
								<appinfo>
									<jaxb:property name="units"></jaxb:property>
								</appinfo>
							</annotation>
						</element>
					</sequence>
				</complexType>
			</element>
		</sequence>
		<attribute name="id" type="string"></attribute>
		<attribute name="export-definition" type="boolean" use="optional" default="true"></attribute>
		<attribute name="export-reference" type="boolean" use="optional" default="true"></attribute>
	</complexType>

	<complexType name="UnitRef">
		<attribute name="ref" type="string" use="required"></attribute>
		<attribute name="optional" type="boolean" use="optional" default="false"></attribute>
	</complexType>

	<complexType name="Version">
		<sequence>
			<element name="candidate" type="m:VersionCandidate"
				minOccurs="0" maxOccurs="unbounded">
				<annotation>
					<appinfo>
						<jaxb:property name="candidates"></jaxb:property>
					</appinfo>
				</annotation>
			</element>
		</sequence>
		<attribute name="selected" type="m:VersionCandidate"
			use="optional">
		</attribute>
	</complexType>

	<simpleType name="VersionCandidate">
		<restriction base="string"></restriction>
	</simpleType>

	<complexType name="Namespace">
		<sequence>
			<element name="candidate" type="m:NamespaceCandidate"
				minOccurs="0" maxOccurs="unbounded">
				<annotation>
					<appinfo>
						<jaxb:property name="candidates"></jaxb:property>
					</appinfo>
				</annotation>
			</element>
		</sequence>
		<attribute name="selected" type="m:NamespaceCandidate"
			use="optional">
		</attribute>
	</complexType>

	<simpleType name="NamespaceCandidate">
		<restriction base="string"></restriction>
	</simpleType>

	<complexType name="Configuration">
		<sequence>
			<element name="directory" type="m:File"></element>
		</sequence>
	</complexType>

	<complexType name="Content">
		<sequence>
			<element name="entry" type="m:Entry" minOccurs="0"
				maxOccurs="unbounded">
				<annotation>
					<appinfo>
						<jaxb:property name="entries"></jaxb:property>
					</appinfo>
				</annotation>
			</element>
			<element name="dependencies">
				<complexType>
					<sequence>
						<element name="entry" type="m:DependencyEntry"
							minOccurs="0" maxOccurs="unbounded">
							<annotation>
								<appinfo>
									<jaxb:property name="entries"></jaxb:property>
								</appinfo>
							</annotation>
						</element>
					</sequence>
				</complexType>
			</element>
		</sequence>
	</complexType>

	<complexType name="Entry">
		<attribute name="value" type="string"></attribute>
	</complexType>

	<complexType name="DependencyEntry">
		<complexContent>
			<extension base="m:Entry">
				<attribute name="resolved" type="boolean" use="optional"
					default="true">
				</attribute>
			</extension>
		</complexContent>
	</complexType>

	<simpleType name="File">
		<restriction base="string"></restriction>
	</simpleType>

	<element name="version" type="m:VersionCandidate"></element>

</schema>