Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Formatting of the XML schema

...

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" >
  <xsd:simpleType name=”coordinate”>
<xsd:restriction base=”xsd:string”>
<!-- TODO add pattern for groupId/artifactId/platformId/version/type/classifier valid values -->
</xsd:restriction>
</xsd:simpleType>
  <xs:element name="project">
<xs:annotation>
<xs:documentation source="version">5.0.0+</xs:documentation>
<xs:documentation source="description">
The <code>&lt;project&gt;</code> element is the root of the project
dependency trees.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="modelVersion" type="xs:string"/>
<xs:attribute name="groupId" type="coordinate"/>
<xs:attribute name="artifactId" type="coordinate"/>
<xs:attribute name="version" type="coordinate"/>
<xs:attribute name="platformId" type="coordinate" use="optional"/>
<xs:all>
<xs:element ref="generator" minOccurs="1" maxOccurs="1"/>
<xs:element ref="information" minOccurs="0" maxOccurs="1"/>
<xs:element ref="license" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="artifacts" minOccurs="1" maxOccurs="unbounded"/>
</xs:all>
</xs:complexType>
</xs:element>
  <xs:element name="generator">
<xs <xs:annotation>
<xs:documentation source="version">5.0.0+</xs:documentation>
<xs:documentation source="description">
The <code>&lt;generator&gt;</code> element identifies the build tool
responsible for creating this document< document
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="version" type="xs:string"/>
<xs:attribute name="url" type="xs:string"/>
</xs:complexType>
</xs:element>
  <xs:element name="information">
<xs:annotation>
<xs:documentation source="version">5.0.0+</xs:documentation>
<xs:documentation source="description">
The <code>&lt;information&gt;</code> element is a container for
descriptive information about either all the artifacts in a project or
a specific artifact.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:all>
<xs:element name="name" type="xs:string" maxOccurs="1"/>
<xs <xs:element name="description" type="xs:string" maxOccurs="1"/>
<!-- TODO add additional elements -->
</xs:all>
</xs:complexType>
</xs:element>

 

  <xs:element name="license" xmlns:spdx="http://spdx.org/rdf/terms#">
<xs:annotation>
<xs:documentation source="version">5.0.0+</xs:documentation>
<xs:documentation source="description">
The <code>&lt;license&gt;</code> element defines one of the licenses
under which the artifacts are made available. Where a license is
attached to the <code>&lt;project&gt;</code> element this defines the
default licenses for all artifacts in the project. Where a license is
attached to an <code>&lt;artifact&gt;</code> element this signifies
that the specific artifact is covered by the
<code>&lt;license&gt;</code> elements defined within that
<code>&lt;artifact&gt;</code> element. Licenses are identified using
the <a href="http://spdx.org">SPDX</a> identifiers< identifiers
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="spdx" type="xs:string"/>
< </xs:complexType>
</xs:element>
  <xs:element name="artifacts">
<xs:annotation>
<xs:documentation source="version">5.0.0+</xs:documentation>
<xs:documentation source="description">
The <code>&lt;artifacts&gt;</code> element is a container for
details of artifacts. When the <code>&lt;artifacts&gt;</code> attribute
is missing, then the artifacts listed are not platform specific.
The <code>&lt;artifacts&gt;</code> must be unique with respect to their
<code>&lt;platformId&gt;</code>, i.e. it cannot be repeated.
If the <code>&lt;project&gt;</code> element has a
<code>&lt;platformId&gt;</code> then there must be only one
<code>&lt;artifacts&gt;</code> element and it must have the matching
<code>&lt;platformId&gt;</code>.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="platformId" type="coordinate" use="optional"/>
<xs:sequence>
<xs:element ref="artifact" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
  <xs:element name="artifact">
<xs:annotation>
<xs:documentation source="version">5.0.0+</xs:documentation>
<xs:documentation source="description">
The <code>&lt;artifact&gt;</code> element represents an artifact
associated with the project.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="type" type="coordinate"/>
<xs:attribute name="classifier" type="coordinate" use="optional"/>
<xs:all>
<xs:element ref="information" minOccurs="0" maxOccurs="1"/>
<xs:element ref="license" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="component" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="provides" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="requires" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="supports" minOccurs="0" maxOccurs="unbounded"/>
</xs:all>
</xs:complexType>
</xs:element>
  <xs:element name="component">
<xs:annotation>
<xs:documentation source="version">5.0.0+</xs:documentation>
<xs:documentation source="description">
The <code>&lt;component&gt;</code> element represents a type specific
component that is component that is present within the artifact. For example a "jar"
artifact might list the Java 9+ modules that are included within
the "jar". Other file types can use the component according to the
conventions of that file type. The component information is intended
to assist build time tools in conflict detection when resolving
the composite dependency tree according to the build tools
dependency resolution strategy.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="id" type="xs:string"/>
</xs:complexType>
</xs:element>
  <xs:element name="provides">
<xs:annotation>
<xs:documentation source="version">5.0.0+</xs:documentation>
<xs:documentation source="description">
The <code>&lt;provides&gt;</code> element represents a semantic
equivalence with another artifact. There are several ways the element
can be used.
<nl>
<li>
When an artifact directly includes the<nl>
same content as another
<li>
When an artifact directly includes the same content as another
project's artifacts, for example there are some "jar" files that
will embed other artifacts to produce a so-called "uber-jar".
</li>
<li>
When an artifact re-implements the API of another project's
artifact. For example: log4j-over-slf4j reimplements the log4j
API.
</li>
<li>
When a set of projects are co-operating to provide multiple
implementations of a "virtual" project artifact. For example:
slf4j-log4j, slf4j-jul, and logback could all be considered
as providing a slf4j-impl virtual project artifact. There would
be no actual project at the slf4j-impl coordinates, but
slf4j-api could declare a requirement on the "virtual" project
artifact in order to ensure that an implementation is available
to consumers of the API

to consumers of the API
</li>
</nl>
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="groupId" type="coordinate"/>
<xs:attribute name="artifactId" type="coordinate"/>
<xs:attribute name="platformId" type="coordinate" use="optional"/>
<xs:attribute name="version" type="coordinate"/>
<xs:attribute name="range" type="xs:string"/>
<xs:attribute name="type" type="coordinate"/>
<xs:attribute name="classifier" type="coordinate" use="optional"/>
</xs:complexType>
</xs:element>
  <xs:element name="requires">
<xs:annotation>
<xs:documentation source="version">5.0.0+</xs:documentation>
<xs:documentation source="description">
The <code>&lt;requires&gt;</code> element represents a hard dependency
on another project's artifact. If the <code>&lt;version&gt;</code>
attribute is missing then this indicates that the dependency is
a virtual dependency, and there must be no child elements.
The <code>&lt;modelVersion&gt;</code> attribute must only be present
if the dependent project's <code>&lt;modelVersion&gt;</code> is newer
/code> is newer
than the <code>&lt;modelVersion&gt;</code> specified on the root
<code>&lt;project&gt;</code> element. The presence of this element
indicates that the child information was the result of an XSLT
transformation of a newer <code>&lt;modelVersion&gt;</code> and
indicates that a build tool understanding the newer
<code>&lt;modelVersion&gt;</code> may want to fetch the dependencies
tree and process it directly in order to obtain the most correct
model of the dependency.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="groupId" type="coordinate"/>
<xs:attribute name="artifactId" type="coordinate"/>
<xs:attribute name="platformId" type="coordinate" use="optional"/>
<xs:attribute name="version" type="coordinate" use="optional"/>
<xs:attribute name="range" type="xs:string"/>
<xs:attribute name="type" type="coordinate"/>
<xs:attribute name="classifier" type="coordinate" use="optional"/>
<xs:attribute name="modelVersion" type="xs:string" use="optional"/>
<xs:all>
<xs:element ref="license" minOccurs="0" maxOccurs="unbounded"/>

<xs:element ref="component" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="provides" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="requires" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="supports" minOccurs="0" maxOccurs="unbounded"/>
</xs:all>
</xs:complexType>
</xs:element>
  <xs:element name="supports">
<xs:annotation>
<xs:documentation source="version">5.0.0+</xs:documentation>
<xs:documentation source="description">
The <code>&lt;supports&gt;</code> element represents a soft dependency
on another project's artifact. This element is provided in order to
allow build time tools to perform conflict resolution when determining
the effective tree from multiple dependencies.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="groupId" type="coordinate"/>
<xs:attribute name="artifactId" type="coordinate"/>
<xs:attribute name="platformId" type="coordinate" use="optional"/>
<xs:attribute name="version" type="coordinate"/>
<xs:attribute name="range" type="xs:string"/>
<xs:attribute name="type" type="coordinate"/>
<xs:attribute name="classifier" type="coordinate" use="optional"/>
</xs:complexType>
</xs:element>
</xs:schema>