<?xml version="1.0" encoding="UTF-8"?>

<!--
  Copyright 2002-2004 The Apache Software Foundation

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<project>
  <extend>${basedir}/../tag-project.xml</extend>
  <id>commons-jelly-tags-validate</id>
  <name>commons-jelly-tags-validate</name>
  <currentVersion>1.0</currentVersion>
  <package>org.apache.commons.jelly.tags.validate</package>
  <description>This is a Jelly interface for XML validation.</description>
  <shortDescription>Commons Jelly Validate Tag Library</shortDescription>
  <versions>
    <version>
      <id>1.0</id>
      <name>1.0</name>
      <tag>COMMONS-JELLY-VALIDATE-1_0</tag>
    </version>
  </versions>

  <dependencies>
    <!-- START for compilation -->
    <dependency>
      <groupId>msv</groupId>
      <artifactId>isorelax</artifactId>
      <version>20030807</version>
      <properties>
        <gump.project>iso-relax</gump.project>
      </properties>
    </dependency>
    <dependency>
      <id>junit</id>
      <version>3.8.1</version>
    </dependency>
    <dependency>
      <id>msv</id>
      <version>20030807</version>
    </dependency>
    <!-- END for compilation -->
    <!-- runtime dependencies -->

    <dependency>
      <groupId>msv</groupId>
      <artifactId>xsdlib</artifactId>
      <version>20030807</version>
    </dependency>
    <dependency>
      <groupId>msv</groupId>
      <artifactId>relaxngDatatype</artifactId>
      <version>20030807</version>
      <properties>
        <gump.project>relaxng</gump.project>
      </properties>
    </dependency>
    <!-- END runtime -->
    <!-- START for test -->

    <dependency>
      <groupId>commons-jelly</groupId>
      <artifactId>commons-jelly-tags-junit</artifactId>
      <version>1.0</version>
      <url>http://jakarta.apache.org/commons/jelly/libs/junit/</url>
    </dependency>
    <!-- END for test -->
    <!-- START for running demos -->

    <dependency>
      <id>commons-cli</id>
      <version>1.0</version>
    </dependency>
    <!-- END for running demos -->

  </dependencies>
</project>
