I have attached an XML Schema version of  Dan's DTD for Maven, below.  Many
of the element types that are currently defined as string could be further
refined to a specific type such as boolean, integer, etc.  However, I will
leave that to folks who are more experienced with Maven.  I merely,
translated the DTD submitted by Dan.

<schema
  xmlns="http://www.w3.org/2000/10/XMLSchema";
  targetNamespace="http://www.apache.org/maven/";
  xmlns:mn="http://www.apache.org/maven/";>

 <element name="project">
  <complexType>
   <sequence>
    <element ref="mn:name"/>
    <element ref="mn:id"/>
    <element ref="mn:currentVersion"/>
    <element ref="mn:organization" minOccurs="0" maxOccurs="1"/>
    <element ref="mn:inceptionYear"/>
    <element ref="mn:package"/>
    <element ref="mn:shortDescription"/>
    <element ref="mn:gumpRepositoryId" minOccurs="0" maxOccurs="1"/>
    <element ref="mn:description" minOccurs="0" maxOccurs="1"/>
    <element ref="mn:url"/>
    <element ref="mn:cvsWebUrl" minOccurs="0" maxOccurs="1"/>
    <element ref="mn:siteAddress" minOccurs="0" maxOccurs="1"/>
    <element ref="mn:siteDirectory" minOccurs="0" maxOccurs="1"/>
    <element ref="mn:distributionDirectory" minOccurs="0" maxOccurs="1"/>
    <element ref="mn:distributions"/>
    <element ref="mn:branches"/>
    <element ref="mn:mailingLists"/>
    <element ref="mn:developers"/>
    <element ref="mn:dependencies"/>
    <element ref="mn:build"/>
   </sequence>
  </complexType>
 </element>

 <element name="archive" type="string"/>

 <element name="id" type="string"/>

 <element name="currentVersion" type="string"/>

 <element name="organization" type="string"/>

 <element name="inceptionYear" type="gYear"/>

 <element name="package" type="string"/>

 <element name="gumpRepositoryId" type="string"/>

 <element name="description" type="string"/>

 <element name="url" type="anyURI"/>

 <element name="cvsWebUrl" type="anyURI"/>

 <element name="siteAddress" type="anyURI"/>

 <element name="siteDirectory" type="string"/>

 <element name="distributionDirectory" type="string"/>

 <element name="version" type="string"/>

 <element name="tag" type="string"/>

 <element name="name" type="string"/>

 <element name="subscribe" type="string"/>

 <element name="unsubscribe" type="string"/>

 <!-- declare email type using regular expression for an email address -->
 <simpleType name="emailType">
  <restriction base="xsd:string">
        <pattern
value="^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-z
A-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"/>
  </restriction>
 </simpleType>

 <element name="email" type="emailType"/>

 <element name="type" type="string"/>

 <element name="homepage" type="anyURI"/>

 <element name="sourceDirectory" type="string"/>

 <element name="testSourceDirectory" type="string"/>

 <element name="aspecteSourceDirectory" type="string"/>

 <element name="unitTestClassEntry" type="string"/>

 <element name="integrationUnitTestClassEntry" type="string"/>

 <element name="jarResource" type="string"/>

 <element name="jar" type="string"/>


 <element name="distributions">
  <complexType>
   <sequence>
    <element ref="mn:ditribution" minOccurs="0" maxOccurs="unbounded"/>
   </sequence>
  </complexType>
 </element>

 <element name="distribution">
  <complexType>
   <sequence>
    <element ref="mn:version"/>
    <element ref="mn:tag"/>
   </sequence>
  </complexType>
 </element>

 <element name="branches">
  <complexType>
   <sequence>
    <element ref="mn:branch" minOccurs="0" maxOccurs="unbounded"/>
   </sequence>
  </complexType>
 </element>

 <element name="branch">
  <complexType>
    <element ref="mn:tag"/>
  </complexType>
 </element>

 <element name="mailingLists">
  <complexType>
   <sequence>
     <element ref="mn:mailingList" minOccurs="0" maxOccurs="unbounded"/>
   </sequence>
  </complexType>
 </element>

 <element name="mailingList">
  <complexType>
   <sequence>
    <element ref="mn:name"/>
    <element ref="mn:subscribe"/>
    <element ref="mn:unsubscribe"/>
    <element ref="mn:archive" minOccurs="0" maxOccurs="1"/>
   </sequence>
  </complexType>
 </element>

 <element name="developers">
  <complexType>
   <sequence>
    <element ref="mn:developer" minOccurs="0" maxOccurs="unbounded"/>
   </sequence>
  </complexType>
 </element>

 <element name="developer">
  <complexType>
   <sequence>
    <element ref="mn:name"/>
    <element ref="mn:id"/>
    <element ref="mn:email"/>
    <element ref="mn:organization" minOccurs="0" maxOccurs="1"/>
   </sequence>
  </complexType>
 </element>

 <element name="dependencies">
  <complexType>
   <sequence>
    <element ref="mn:dependency" minOccurs="0" maxOccurs="unbounded"/>
   </sequence>
  </complexType>
 </element>

 <element name="dependency">
  <complexType>
   <sequence>
    <element ref="mn:name"/>
    <element ref="mn:type"/>
    <element ref="mn:version"/>
    <element ref="mn:jar"/>
    <element ref="mn:homepage"/>
   </sequence>
  </complexType>
 </element>

 <element name="build">
  <complexType>
   <sequence>
    <element ref="mn:sourceDirectories"/>
    <element ref="mn:testSourceDirectories" minOccurs="0" maxOccurs="1"/>
    <element ref="mn:aspectSourceDirectories" minOccurs="0" maxOccurs="1"/>
    <element ref="mn:unitTestClassEntries" minOccurs="0" maxOccurs="1"/>
    <element ref="mn:integrationUnitTestClassEntries" minOccurs="0"
maxOccurs="1"/>
    <element ref="mn:jarResources" minOccurs="0" maxOccurs="1"/>
    <element ref="mn:jars" required="optional"/>
   </sequence>
  </complexType>
 </element>

 <element name="sourceDirectories">
  <complexType>
   <sequence>
    <element ref="mn:sourceDirectory" minOccurs="0" maxOccurs="unbounded"/>
   </sequence>
  </complexType>
 </element>


 <element name="testSourceDirectories">
  <complexType>
   <sequence>
    <element ref="mn:testSourceDirectory" minOccurs="0"
maxOccurs="unbounded"/>
   </sequence>
  </complexType>
 </element>

 <element name="aspectSourceDirectories">
  <complexType>
   <sequence>
    <element ref="mn:aspectSourceDirectory" minOccurs="0"
maxOccurs="unbounded"/>
   </sequence>
  </complexType>
 </element>

 <element name="unitTestClassEntries">
  <complexType>
   <sequence>
    <element ref="mn:unitTestClassEntry" minOccurs="0"
maxOccurs="unbounded"/>
   </sequence>
  </complexType>
 </element>

 <element name="integrationUnitTestClassEntries">
  <complexType>
   <sequence>
    <element ref="mn:integrationUnitTestClassEntry" minOccurs="0"
maxOccurs="unbounded"/>
   <sequence>
  </complexType>
 </element>

 <element name="jarResources">
  <complexType>
   <sequence>
    <element ref="mn:jarResource" minOccurs="0" maxOccurs="unbounded"/>
   <sequence>
  </complexType>
 </element>

 <element name="jars">
  <complexType>
   <sequence>
    <element ref="mn:jar" minOccurs="0" maxOccurs="unbounded"/>
   </sequence>
  </complexType>
 </element>

</schema>

----- Original Message -----
From: "Daniel Rall" <[EMAIL PROTECTED]>
To: "Turbine Users List" <[EMAIL PROTECTED]>
Sent: Thursday, March 28, 2002 10:09 AM
Subject: Re: [maven] project descriptor qns


> Jason van Zyl <[EMAIL PROTECTED]> writes:
>
> > On Wed, 2002-03-27 at 21:57, Daniel Rall wrote:
> > > A DTD for the Maven project descriptor would answer a lot of these
> >> questions.  What do you think?
> >
> > Looks good. I'm using XML Authority to make a schema but this will
> > definitely answer peoples questions about the structure. I imagine this
> > might change here and there but I don't think it will change radically.
> > Pop it in the site!
>
> Okay.  Any particular place I should put it (I currently have it under
> maven/xdocs/)?  Also, I didn't do any validation on it -- can someone
> a suggest a tool for doing so (on Linux)?  Though I can write DTDs
> just fine (they just look like any other schema to me), I don't
> actually use them that often, and when I do there has generally been a
> pre-existing framework for doing so (yay Torque!).
>
> - Dan
>
> --
> To unsubscribe, e-mail:
<mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail:
<mailto:[EMAIL PROTECTED]>


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to