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]>
