<?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)>
