<!--***********************************************************
 * 
 * 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.
 * 
 ***********************************************************-->



<!ELEMENT api (element)+>
	<!ATTLIST api
		library-name         CDATA #REQUIRED
		library-identifier   CDATA #REQUIRED
		library-majorversion CDATA #IMPLIED
		library-minorversion CDATA #IMPLIED
		library-type         CDATA #IMPLIED
		library-GUID         CDATA #IMPLIED
		library-filename     CDATA #IMPLIED
		author               CDATA #REQUIRED
		date-created         CDATA #REQUIRED
   >

<!ELEMENT element (source, destination?)>
	<!ATTLIST element
		type       (class|method|property|enumeration|constant|event)  #REQUIRED
		collection (true|false)                                        "false"
		platform   CDATA                                               #IMPLIED
	>

<!ELEMENT source (context?, name?, type?, value?, parameter-list?)>
	<!ATTLIST source
		id           CDATA  #REQUIRED
		start-index  CDATA  #IMPLIED
	>

<!ELEMENT context (#PCDATA)>
	<!ATTLIST context
		kind  (library|class|module|enumeration)  #REQUIRED
	>

<!ELEMENT name (#PCDATA)>
	<!ATTLIST name
		default  (true|false)  "false"
	>

<!ELEMENT type (#PCDATA | choice)*>
	<!ATTLIST type
		array CDATA #IMPLIED
	>

<!ELEMENT choice (#PCDATA)>

<!ELEMENT value (#PCDATA)>

<!ELEMENT parameter-list (parameter+)>

<!ELEMENT parameter (type?, name)>
	<!ATTLIST parameter
		optional   (true|false)  "false"
		reference  (true|false)  "false"
	>

<!ELEMENT destination (((inplace-code | property-access-code), localdecl-code*, module-code*, comment*)?)>
    <!ATTLIST destination designation (identity|not-yet-implemented)  "not-yet-implemented">

<!ELEMENT inplace-code (context-code? , name-code, parameter-code*)>

<!ELEMENT context-code EMPTY>

<!ELEMENT name-code (#PCDATA)>

<!ELEMENT parameter-code (#PCDATA | context-code | rvalue-code | default-code)*>

<!ELEMENT rvalue-code EMPTY>

<!ELEMENT default-code (#PCDATA)>

<!ELEMENT property-access-code (getter-code?, setter-code?)>

<!ELEMENT getter-code (context-code? , name-code, parameter-code*)>

<!ELEMENT module-code (#PCDATA)>
	<!ATTLIST module-code
		module-name  CDATA  #IMPLIED
	>
<!ELEMENT comment (#PCDATA)>
	<!ATTLIST comment
		apistatus (todo|so7|so8|noapi) #REQUIRED
		forparams CDATA  #IMPLIED
	>

<!ELEMENT localdecl-code (#PCDATA | context-code)*>

<!ELEMENT setter-code (context-code? , name-code, parameter-code*)>


