<!-- ***
2001-05-14: * Element TestData added and defined
            * Element Load added and defined (content is pointer to file location) 
            * Element Assertion added and defined
              Attribute Type to indicate type of assertion made (as in Junit, Same will not be used
	      since DOM does not test sameness of objects)
	      Actual assertion content given as the text value of the Assertion element
            * Element test can contain multiple assertions, to be used instead of expected_results
              Element test has new attribute SpecPointer with the pointer to the relevant part of the
              specification   
*** -->
<!ELEMENT TestData (Author+, Organization?, Date, Email?)>
<!ELEMENT Author (#PCDATA)>
<!ELEMENT Organization (#PCDATA)>
<!ELEMENT Date (#PCDATA)>
<!ELEMENT Email (#PCDATA)>
<!ELEMENT Load (#PCDATA)>
<!ATTLIST Load
	Whitespace (Preserve | Ignore) #REQUIRED
	Entities (Keep | Expand) #REQUIRED
>
<!ELEMENT Assertion (#PCDATA)>
<!ATTLIST Assertion
	Type (Equals | Null | NotNull | Same | Error) #REQUIRED
>
<!ELEMENT type ANY>
<!ELEMENT testcases (test*)>
<!ELEMENT test (Load, Assertion+, description, test_scenario, TestData)>
<!ATTLIST test
	id CDATA #REQUIRED
	category CDATA #REQUIRED
	interface CDATA #REQUIRED
	SpecPointer CDATA #IMPLIED
>
<!ELEMENT description (#PCDATA)>
<!ELEMENT expected_results (#PCDATA)>
<!ELEMENT test_scenario (type*, (CALL | IF | (TRY, (CATCH*)) | FOR | WHILE | final_return)*)>
<!ELEMENT CALL (parameters*, array?)>
<!ATTLIST CALL
	NAME CDATA #REQUIRED
	OBJECT_TYPE CDATA "NONE"
	OBJECT CDATA "NONE"
	OBJECT_NUMBER CDATA "NONE"
	ASSIGNMENT CDATA "="
	ASSIGNMENT_OBJECT_NUMBER CDATA "NONE"
	STATIC (YES | NO) "NO"
	INFIX (YES | NO) "NO"
	TYPE CDATA "void"
>
<!ELEMENT parameters (array?)>
<!ATTLIST parameters
	VALUE CDATA "NONE"
	TYPE CDATA "NONE"
	NUMBER CDATA "NONE"
>
<!ELEMENT array (#PCDATA)>
<!ATTLIST array
	INDEX CDATA "NONE"
	NUMBER CDATA "NONE"
>
<!ELEMENT TRY (CALL | IF | FOR | (TRY, (CATCH*)) | WHILE | final_return)*>
<!ATTLIST TRY
	exception CDATA "Exception"
>
<!ELEMENT CATCH (CALL | IF | FOR | (TRY, (CATCH*)) | WHILE | final_return)*>
<!ATTLIST CATCH
	exception CDATA "Exception"
>
<!ELEMENT FOR (INIT, TEST, INC, (CALL | IF | FOR | (TRY, (CATCH*)) | WHILE | final_return)*)>
<!ATTLIST FOR
	TYPE CDATA "int"
>
<!ELEMENT INIT (CALL?)>
<!ATTLIST INIT
	VALUE CDATA "0"
>
<!ELEMENT TEST (CALL)>
<!ATTLIST TEST
	SIGNE CDATA "&lt;"
>
<!ELEMENT INC (CALL?)>
<!ATTLIST INC
	SIGNE CDATA "++"
>
<!ELEMENT IF ((CALL | (TRY, (CATCH*)) | FOR | IF | WHILE | final_return)*, ELSE?)>
<!ELEMENT ELSE (CALL | (TRY, (CATCH*)) | FOR | IF | WHILE | final_return)*>
<!ELEMENT WHILE (CALL | IF | FOR | (TRY, (CATCH*)) | WHILE | final_return)*>
<!ATTLIST WHILE
	VALUE CDATA "TRUE"
	NUMBER CDATA "NONE"
>
<!ELEMENT final_return (#PCDATA)>
<!ATTLIST final_return
	RETURN CDATA #REQUIRED
	NUMBER CDATA "NONE"
>
<!--   TYPES     -->
<!ENTITY documentFragment "DocumentFragment">
<!ENTITY document "Document">
<!ENTITY attr "Attr">
<!ENTITY node "Node">
<!ENTITY element "Element">
<!ENTITY text "Text">
<!ENTITY namedNodeMap "NamedNodeMap">
<!ENTITY nodeList "NodeList">
<!ENTITY DOMString "String">
<!ENTITY characterdata "CharacterData">
<!ENTITY CDATASection "CDATASection">
<!ENTITY documentType "DocumentType">
<!ENTITY DOMImplementation "DOMImplementation">
<!ENTITY boolean "boolean">
<!ENTITY comment "Comment">
<!ENTITY processingInstruction "ProcessingInstruction">
<!ENTITY entityReference "EntityReference">
<!ENTITY entity "Entity">
<!ENTITY notation "Notation">
<!ENTITY int "int">
<!ENTITY DOMException "DOMException">
<!ENTITY INDEX_SIZE_ERR "1">
<!ENTITY DOMSTRING_SIZE_ERR "2">
<!ENTITY HIERARCHY_REQUEST_ERR "3">
<!ENTITY WRONG_DOCUMENT_ERR "4">
<!ENTITY INVALID_CHARACTER_ERR "5">
<!ENTITY NO_DATA_ALLOWED_ERR "6">
<!ENTITY NO_MODIFICATION_ALLOWED_ERR "7">
<!ENTITY NOT_FOUND_ERR "8">
<!ENTITY NOT_SUPPORTED_ERR "9">
<!ENTITY INUSE_ATTRIBUTE_ERR "10">
<!ENTITY INVALID_STATE_ERR "11">
<!ENTITY SYNTAX_ERR "12">
<!ENTITY INVALID_MODIFICATION_ERR "13">
<!ENTITY NAMESPACE_ERR "14">
<!ENTITY INVALID_ACCESS_ERR "15">
<!-- DOMImplementation -->
<!ENTITY hasFeature "hasFeature">
<!ENTITY createDocumentType "createDocumentType">
<!ENTITY createDocument "createDocument">
<!-- Document -->
<!ENTITY createElement "createElement">
<!ENTITY createDocumentFragment "createDocumentFragment">
<!ENTITY createTextNode "createTextNode">
<!ENTITY createComment "createComment">
<!ENTITY createCDATASection "createCDATASection">
<!ENTITY createProcessingInstruction "createProcessingInstruction">
<!ENTITY createAttribute "createAttribute">
<!ENTITY createEntityReference "createEntityReference">
<!ENTITY getElementsByTagName "getElementsByTagName">
<!ENTITY importNode "importNode">
<!ENTITY createElementNS "createElementNS">
<!ENTITY createAttributeNS "createAttributeNS">
<!ENTITY getElementsByTagNameNS "getElementsByTagNameNS">
<!ENTITY getElementById "getElementById">
<!-- Node -->
<!-- methods -->
<!ENTITY insertBefore "insertBefore">
<!ENTITY replaceChild "replaceChild">
<!ENTITY removeChild "removeChild">
<!ENTITY appendChild "appendChild">
<!ENTITY hasChildNodes "hasChildNodes">
<!ENTITY cloneNode "cloneNode">
<!ENTITY normalize "normalize">
<!ENTITY isSupported "isSupported">
<!ENTITY hasAttributes "hasAttributes">
<!-- NodeList -->
<!-- methods -->
<!ENTITY item "item">
<!-- NamedNodeMap -->
<!-- methods -->
<!ENTITY getNamedItem "getNamedItem">
<!ENTITY setNamedItem "setNamedItem">
<!ENTITY removeNamedItem "removeNamedItem">
<!ENTITY item "item">
<!ENTITY getNamedItemNS "getNamedItemNS">
<!ENTITY setNamedItemNS "setNamedItemNS">
<!ENTITY removeNamedItemNS "removeNamedItemNS">
<!-- CharacterData inherits from Node -->
<!-- methods -->
<!ENTITY appendData "appendData">
<!ENTITY insertData "insertData">
<!ENTITY deleteData "deleteData">
<!ENTITY replaceData "replaceData">
<!ENTITY substringData "substringData">
<!-- Attr inherits from Node -->
<!-- Element inherits from Node -->
<!-- methods -->
<!ENTITY getAttribute "getAttribute">
<!ENTITY setAttribute "setAttribute">
<!ENTITY removeAttribute "removeAttribute">
<!ENTITY getAttributeNode "getAttributeNode">
<!ENTITY setAttributeNode "setAttributeNode">
<!ENTITY removeAttributeNode "removeAttributeNode">
<!ENTITY getElementsByTagName "getElementsByTagName">
<!ENTITY getAttributeNS "getAttributeNS">
<!ENTITY setAttributeNS "setAttributeNS">
<!ENTITY removeAttributeNS "removeAttributeNS">
<!ENTITY getAttributeNodeNS "getAttributeNodeNS">
<!ENTITY setAttributeNodeNS "setAttributeNodeNS">
<!ENTITY getElementsByTagNameNS "getElementsByTagNameNS">
<!ENTITY hasAttribute "hasAttribute">
<!ENTITY hasAttributeNS "hasAttributeNS">
<!-- Text inherits from CharacterData -->
<!-- methods -->
<!ENTITY splitText "splitText">
<!-- ProcessingInstruction inherits from Node -->
<!-- properties -->
<!ENTITY getData "getData">
<!ENTITY setData "setData">
<![%java;[

<!-- DOMImplementation -->
<!-- DocumentFragment inherits from Node -->

<!-- Document -->
<!-- methods -->
<!ENTITY doctype "getDoctype">
<!ENTITY implementation "getImplementation">
<!ENTITY documentElement "getDocumentElement">

<!-- Node -->
<!-- methods -->
<!ENTITY nodeName "getNodeName">
<!ENTITY getNodeValue "getNodeValue">
<!ENTITY setNodeValue "setNodeValue">
<!ENTITY nodeType "getNodeType">
<!ENTITY parentNode "getParentNode">
<!ENTITY childNodes "getChildNodes">
<!ENTITY firstChild "getFirstChild">
<!ENTITY lastChild "getLastChild">
<!ENTITY previousSibling "getPreviousSibling">
<!ENTITY nextSibling "getNextSibling">
<!ENTITY attributes "getAttributes">
<!ENTITY ownerDocument "getOwnerDocument">
<!ENTITY namespaceURI "getNamespaceURI">
<!ENTITY getPrefix "getPrefix">
<!ENTITY setPrefix "setPrefix">
<!ENTITY localName "getLocalName">

<!-- NodeList -->
<!-- methods -->
<!ENTITY length "getLength">

<!-- NamedNodeMap -->
<!-- methods -->
<!ENTITY length "getLength">

<!-- CharacterData inherits from Node -->
<!-- methods -->
<!-- ECMA has only data for both get/set -->
<!ENTITY getData "getData">
<!ENTITY setData "setData">
<!ENTITY length "getLength">

<!-- Attr inherits from Node -->
<!-- properties -->
<!ENTITY name "getName">
<!ENTITY specified "getSpecified">
<!ENTITY getValue "getValue">
<!ENTITY setValue "setValue">
<!ENTITY ownerElement "getOwnerElement">

<!-- Element inherits from Node -->
<!-- methods -->
<!ENTITY tagName "getTagName">

<!-- Text inherits from CharacterData -->
<!-- Comment inherits from CharacterData -->
<!-- CDATASection inherits from Text -->

<!-- DocumentType inherits from Node -->
<!-- methods -->
<!ENTITY name "getName">
<!ENTITY entities "getEntities">
<!ENTITY notations "getNotations">
<!ENTITY publicId "getPublicId">
<!ENTITY systemId "getSystemId">
<!ENTITY internalSubset "getInternalSubset">

<!-- Notation inherits from Node -->
<!-- properties -->
<!ENTITY publicId "getPublicId">
<!ENTITY systemId "getSystemId">

<!-- Entity inherits from Node -->
<!-- properties -->
<!ENTITY publicId "getPublicId">
<!ENTITY systemId "getSystemId">
<!ENTITY notationName "getNotationName">

<!-- EntityReference inherits from Node -->

<!-- ProcessingInstruction inherits from Node -->
<!-- properties -->
<!ENTITY target "getTarget">

<!-- java functions or operators -->

<!ENTITY newDocument "getXMLDocument">
<!ENTITY newNSDocument "getXMLNSDocument">
<!ENTITY equalsDOMString "equals">
<!ENTITY valueOf "valueOf">
<!ENTITY lastIndexOf "lastIndexOf">
<!ENTITY newDOMString "new String">
<!ENTITY substring "substring">
<!ENTITY plus "++">
<!ENTITY not "!">
<!ENTITY plusEqual "+=">
<!ENTITY andEqual "&amp;=">
<!ENTITY equal "==">
<!ENTITY notEqual "!=">
<!ENTITY or "||">
<!ENTITY and "&amp;&amp;">
<!ENTITY NO_DOMSTRING "NO_DOMSTRING">
<!ENTITY arrayLength "length">
<!ENTITY code "code">


]]><![%ECMAScript;[

<!-- DOMImplementation -->
<!-- DocumentFragment inherits from Node -->

<!-- Document -->
<!-- read-only properties -->
<!ENTITY doctype "docType">
<!ENTITY implementation "implementation">
<!ENTITY documentElement "documentElement">

<!-- Node -->
<!-- properties -->
<!ENTITY nodeName "nodeName">
<!ENTITY getNodeValue "nodeValue">
<!ENTITY setNodeValue "nodeValue">
<!ENTITY nodeType "nodeType">
<!ENTITY parentNode "parentNode">
<!ENTITY childNodes "childNodes">
<!ENTITY firstChild "firstChild">
<!ENTITY lastChild "lastChild">
<!ENTITY previousSibling "previousSibling">
<!ENTITY nextSibling "nextSibling">
<!ENTITY attributes "attributes">
<!ENTITY ownerDocument "ownerDocument">
<!ENTITY namespaceURI "namespaceURI">
<!ENTITY getPrefix "prefix">
<!ENTITY setPrefix "prefix">
<!ENTITY localName "localName">

<!-- NodeList -->
<!-- properties -->
<!ENTITY length "length">

<!-- NamedNodeMap -->
<!-- properties -->
<!ENTITY length "length">

<!-- CharacterData inherits from Node -->
<!-- properties -->
<!ENTITY getData "data">
<!ENTITY setData "data">
<!ENTITY length "length">

<!-- Attr inherits from Node -->
<!-- properties -->
<!ENTITY name "name">
<!ENTITY specified "specified">
<!ENTITY getValue "value">
<!ENTITY setValue "value">
<!ENTITY ownerElement "ownerElement">

<!-- Element inherits from Node -->
<!-- properties -->
<!ENTITY tagName "tagName">
<!-- methods -->

<!-- Text inherits from CharacterData -->
<!-- Comment inherits from CharacterData -->
<!-- CDATASection inherits from Text -->

<!-- DocumentType inherits from Node -->
<!-- properties -->
<!ENTITY name "name">
<!ENTITY entities "entities">
<!ENTITY notations "notations">
<!ENTITY publicId "publicId">
<!ENTITY systemId "systemId">
<!ENTITY internalSubset "internalSubset">

<!-- Notation inherits from Node -->
<!-- properties -->
<!ENTITY publicId "publicId">
<!ENTITY systemId "systemId">

<!-- Entity inherits from Node -->
<!-- properties -->
<!ENTITY publicId "publicId">
<!ENTITY systemId "systemId">
<!ENTITY notationName "notationName">

<!-- EntityReference inherits from Node -->

<!-- ProcessingInstruction inherits from Node -->
<!-- properties -->
<!ENTITY target "target">

]]>

