<?xml version="1.0" encoding="UTF-8"?>
<!--***********************************************************
 * 
 * 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.
 * 
 ***********************************************************-->



<!ENTITY % component-description-optional "reference-docu|service-dependency|type">
<!ENTITY % module-description-optional "project-build-dependency|runtime-module-dependency|(%component-description-optional;)">
<!ELEMENT module-description (module-name, component-description*,(%module-description-optional;)* )>
<!ELEMENT component-description (author,name,description,loader-name,language,status, supported-service+, (%component-description-optional;)* )>

<!ELEMENT author (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT reference-docu EMPTY >
<!ATTLIST reference-docu 
	xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink/Namespace"
	xlink:type      (simple)        #FIXED "simple" 
	xlink:href      CDATA           #REQUIRED
  	xlink:role      NMTOKEN         #IMPLIED
  	xlink:title   	CDATA           #IMPLIED >

<!ELEMENT module-name (#PCDATA)>
<!ELEMENT loader-name (#PCDATA)>
<!ELEMENT supported-service (#PCDATA)>
<!ELEMENT service-dependency (#PCDATA)>
<!ELEMENT project-build-dependency (#PCDATA)>
<!ELEMENT runtime-module-dependency (#PCDATA)>
<!ELEMENT language (#PCDATA)>
<!ELEMENT status EMPTY >
<!ATTLIST status value (under_construction | alpha | beta | final) #REQUIRED>
<!ELEMENT type (#PCDATA)>
