<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"?>
<!--
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    this work for additional information regarding copyright ownership.
    The ASF licenses this file to You 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.
-->
<rdf:RDF xml:lang="en"
         xmlns="http://usefulinc.com/ns/doap#" 
         xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
         xmlns:asfext="http://projects.apache.org/ns/asfext#"
         xmlns:foaf="http://xmlns.com/foaf/0.1/">
  <Project rdf:about="http://xalan.apache.org/xalan-j/">
    <created>2011-09-11</created>
    <license rdf:resource="http://usefulinc.com/doap/licenses/asl20" />
    <name>Apache Xalan for Java XSLT Processor</name>
    <homepage rdf:resource="http://xalan.apache.org/xalan-j/" />
    <asfext:pmc rdf:resource="http://xalan.apache.org" />
    <shortdesc>Xalan-J is an XSLT processor written in Java.</shortdesc>
    <description>
     Xalan-J is an XSLT processor for transforming XML documents into HTML, text, or other XML document
     types. It implements XSL Transformations (XSLT) Version 1.0 and XML Path Language (XPath) Version 1.0
     and can be used from the command line, in an applet or a servlet, or as a module in other program.
     Xalan-J implements the javax.xml.transform interface in Java API for XML Processing (JAXP) 1.3. This
     interface provides a modular framework and a standard API for performing XML transformations, and
     utilizes system properties to determine which Transformer and which XML parser to use.
    </description>
    <bug-database rdf:resource="http://issues.apache.org/jira/browse/XALANJ" />
    <mailing-list rdf:resource="http://mail-archives.apache.org/mod_mbox/" />
    <download-page rdf:resource="http://archive.apache.org/dist/xml/xalan-j" />
    <programming-language>Java</programming-language>
    <category rdf:resource="http://projects.apache.org/category/xml" />
    <release>
      <Version>
        <name>Xalan-J</name>
        <created>2007-11-27</created>
        <revision>2.7.1</revision>
      </Version>
    </release>
    <repository>
      <SVNRepository>
        <location rdf:resource="https://svn.apache.org/repos/asf/xalan/java/trunk/"/>
        <browse rdf:resource="http://svn.apache.org/viewvc/xalan/java/trunk/"/>
      </SVNRepository>
    </repository>
    <maintainer>
      <foaf:Person>
        <foaf:name>Xalan-J Development Team</foaf:name>
        <foaf:mbox rdf:resource="mailto:dev@xalan.apache.org"/>
      </foaf:Person>
    </maintainer>
    <asfext:implements><asfext:Standard>
      <asfext:title>XML Path Language (XPath) Version 1.0</asfext:title>
      <asfext:body>W3C</asfext:body>
      <asfext:id>XPath 1.0</asfext:id>
      <asfext:url rdf:resource="http://www.w3.org/TR/xpath/"/>
    </asfext:Standard></asfext:implements>
    <asfext:implements><asfext:Standard>
      <asfext:title>XSL Transformations (XSLT) Version 1.0</asfext:title>
      <asfext:body>W3C</asfext:body>
      <asfext:id>XSLT 1.0</asfext:id>
      <asfext:url rdf:resource="http://www.w3.org/TR/xslt"/>
    </asfext:Standard></asfext:implements>
    <asfext:implements><asfext:Standard>
      <asfext:title>Java API for XML Processing (JAXP) 1.3</asfext:title>
      <asfext:body>JCP</asfext:body>
      <asfext:id>JSR 206</asfext:id>
      <asfext:url rdf:resource="http://jcp.org/en/jsr/detail?id=206"/>
    </asfext:Standard></asfext:implements>
  </Project>
</rdf:RDF>
