R2B
diff --git a/NTAF_CNL113776.tpd b/NTAF_CNL113776.tpd
new file mode 100644
index 0000000..580581a
--- /dev/null
+++ b/NTAF_CNL113776.tpd
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<TITAN_Project_File_Information version="1.0">
+ <ProjectName>NTAF_CNL113776</ProjectName>
+ <ReferencedProjects>
+ <ReferencedProject name="ProtocolModules_Common" projectLocationURI="../COMMON/ProtocolModules_Common.tpd"/>
+ </ReferencedProjects>
+ <Files>
+ <FileResource projectRelativePath="http_ntaforum_org_2011_activation.ttcn" relativeURI="src/http_ntaforum_org_2011_activation.ttcn"/>
+ <FileResource projectRelativePath="http_ntaforum_org_2011_harness.ttcn" relativeURI="src/http_ntaforum_org_2011_harness.ttcn"/>
+ <FileResource projectRelativePath="http_ntaforum_org_2011_registry.ttcn" relativeURI="src/http_ntaforum_org_2011_registry.ttcn"/>
+ </Files>
+ <ActiveConfiguration>Default</ActiveConfiguration>
+ <Configurations>
+ <Configuration name="Default">
+ <ProjectProperties>
+ <MakefileSettings>
+ <GNUMake>true</GNUMake>
+ <targetExecutable>bin/NTAF_CNL113776</targetExecutable>
+ <buildLevel>Level 3 - Creating object files with dependency update</buildLevel>
+ </MakefileSettings>
+ <LocalBuildSettings>
+ <workingDirectory>bin</workingDirectory>
+ </LocalBuildSettings>
+ <NamingCoventions>
+ <enableProjectSpecificSettings>true</enableProjectSpecificSettings>
+ <externalFunction>.*</externalFunction>
+ <localVariable>.*</localVariable>
+ <formalParameter>.*</formalParameter>
+ </NamingCoventions>
+ </ProjectProperties>
+ </Configuration>
+ </Configurations>
+</TITAN_Project_File_Information>
\ No newline at end of file
diff --git a/src/NTAF_CNL113776.grp b/src/NTAF_CNL113776.grp
new file mode 100644
index 0000000..1fa7b1e
--- /dev/null
+++ b/src/NTAF_CNL113776.grp
@@ -0,0 +1,26 @@
+<!--
+///////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2000-2016 Ericsson Telecom AB
+//
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// which accompanies this distribution, and is available at
+// http://www.eclipse.org/legal/epl-v10.html
+///////////////////////////////////////////////////////////////////////////////
+//
+// File: NTAF_CNL113776.grp
+// Description: FileGroup file for NTAF Protocol Module
+// Rev: R2B
+// Prodnr: CNL 113 776
+// Updated: 2013-08-26
+// Contact: http://ttcn.ericsson.se
+//
+///////////////////////////////////////////////////////////////////////////////
+-->
+<!DOCTYPE TITAN_GUI_FileGroup_file>
+<File_Group name="NTAF_CNL113776" >
+ <File path="http_ntaforum_org_2011_registry.ttcn" />
+ <File path="http_ntaforum_org_2011_activation.ttcn" />
+ <File path="http_ntaforum_org_2011_harness.ttcn" />
+</File_Group>
diff --git a/src/http_ntaforum_org_2011_activation.ttcn b/src/http_ntaforum_org_2011_activation.ttcn
new file mode 100644
index 0000000..1891bce
--- /dev/null
+++ b/src/http_ntaforum_org_2011_activation.ttcn
@@ -0,0 +1,98 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2000-2016 Ericsson Telecom AB
+//
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// which accompanies this distribution, and is available at
+// http://www.eclipse.org/legal/epl-v10.html
+///////////////////////////////////////////////////////////////////////////////
+//
+// File: http_ntaforum_org_2011_activation.ttcn
+// Description:
+// References:
+// Rev: R2B
+// Prodnr: CNL 113 776
+// Updated: Sun Jan 6 13:17:58 2013
+// Contact: http://ttcn.ericsson.se
+//
+////////////////////////////////////////////////////////////////////////////////
+//
+// Generated from file(s):
+//
+// - activation.xsd
+// /* xml version = "1.0" encoding = "UTF-8" */
+// /* targetnamespace = "http://ntaforum.org/2011/activation" */
+//
+////////////////////////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////////////////////////
+//
+//
+//NTAF-0001: Tool Registration, Discovery and Activation
+//
+//
+////////////////////////////////////////////////////////////////////////////////
+
+
+module http_ntaforum_org_2011_activation {
+
+
+import from XSD all;
+
+
+import from http_ntaforum_org_2011_harness all;
+
+
+type record Activate
+{
+ XSD.String requestId optional,
+ XSD.String toolId,
+ ActivationResult result optional, //not optional in the schema -see Errata2TS001
+ XSD.String message_ optional,
+ XSD.String jid optional,
+ XSD.String activationRef optional,
+ XSD.DateTime timestamp optional,
+ record length(1 .. infinity) of Harness harness_list
+}
+with {
+ variant "name as uncapitalized";
+ variant "element";
+ variant (requestId) "attribute";
+ variant (toolId) "attribute";
+ variant (message_) "name as 'message'";
+ variant (harness_list) "untagged";
+ variant (harness_list[-]) "namespace as 'http://ntaforum.org/2011/harness' prefix 'h'";
+};
+
+
+type enumerated ActivationResult
+{
+ fail_,
+ pass_,
+ pending
+}
+with {
+ variant "text 'fail_' as 'fail'";
+ variant "text 'pass_' as 'pass'";
+ variant "name as uncapitalized";
+};
+
+
+type record Deactivate
+{
+ XSD.String activationRef
+}
+with {
+ variant "name as uncapitalized";
+ variant "element";
+};
+
+
+}
+with {
+ encode "XML";
+ variant "namespace as 'http://ntaforum.org/2011/activation' prefix 'a'";
+ variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'";
+ variant "elementFormQualified";
+}
diff --git a/src/http_ntaforum_org_2011_harness.ttcn b/src/http_ntaforum_org_2011_harness.ttcn
new file mode 100644
index 0000000..24f5593
--- /dev/null
+++ b/src/http_ntaforum_org_2011_harness.ttcn
@@ -0,0 +1,1022 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2000-2016 Ericsson Telecom AB
+//
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// which accompanies this distribution, and is available at
+// http://www.eclipse.org/legal/epl-v10.html
+///////////////////////////////////////////////////////////////////////////////
+//
+// File: http_ntaforum_org_2011_harness.ttcn
+// Description:
+// References:
+// Rev: R2B
+// Prodnr: CNL 113 776
+// Updated: Sun Jan 6 13:17:58 2013
+// Contact: http://ttcn.ericsson.se
+//
+////////////////////////////////////////////////////////////////////////////////
+//
+// Generated from file(s):
+//
+// - harness.xsd
+// /* xml version = "1.0" encoding = "UTF-8" */
+// /* targetnamespace = "http://ntaforum.org/2011/harness" */
+//
+////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////
+//
+//
+//NTAF-0002: Tool Automation Harness
+//
+//
+////////////////////////////////////////////////////////////////////////////////
+
+
+module http_ntaforum_org_2011_harness {
+
+
+import from XSD all;
+
+
+import from http_www_w3_org_XML_1998_namespace all;
+
+
+type Harness_1 Harness
+ with {
+ variant "name as uncapitalized";
+ variant "element";
+};
+
+
+type record Harness_1
+{
+ XSD.String name,
+ record length(1 .. infinity) of SessionMode supportedMode_list
+}
+with {
+ variant "name as 'harness'";
+ variant (name) "attribute";
+ variant (supportedMode_list) "untagged";
+ variant (supportedMode_list[-]) "name as 'supportedMode'";
+};
+
+
+/* Information about a certain harness including descriptions of the
+harness itself as well as the actions, events, and nested harnesses it
+supports. */
+type record Query_harness
+{
+ Namespace harness,
+ Lang lang,
+ XSD.String label_ optional,//not optional in XSD!!!!
+ XSD.String tooltip optional,
+ XSD.String description optional,
+ XSD.AnyURI helpURI optional,
+ Namespace supercedes optional,
+ XSD.String author optional,//not optional in XSD!!!
+ record of record {
+ ActionName name,
+ XSD.String label_,
+ XSD.String tooltip optional,
+ XSD.String description optional,
+ XSD.AnyURI helpURI optional,
+ record of ParameterDecl parameter_list,
+ record of XmlParameterDecl xmlParameter_list,
+ record of FileDecl file_list,
+ record of RequestGroupDecl group_list,
+ ResponseDecl responseDecl optional
+ } actionDecl_list,
+ record of record {
+ XSD.Name name,
+ record of ResponseItemDecl item_list,
+ record of ResponseXmlItemDecl xmlItem_list,
+ record of FileItemDecl fileItem_list,
+ record of ResponseGroupDecl group_list,
+ XSD.String description
+ } eventDecl_list,
+ record of Namespace subharness_list
+}
+with {
+ variant "name as 'query-harness'";
+ variant "element";
+ variant (harness) "attribute";
+ variant (lang) "attribute";
+ variant (lang) "namespace as 'http://www.w3.org/XML/1998/namespace'" "prefix 'xml'"; //added
+ variant (label_) "name as 'label'";
+ variant (actionDecl_list) "untagged";
+ variant (actionDecl_list[-]) "name as 'actionDecl'";
+ variant (actionDecl_list[-].name) "attribute";
+ variant (actionDecl_list[-].label_) "name as 'label'";
+ variant (actionDecl_list[-].parameter_list) "untagged";
+ variant (actionDecl_list[-].parameter_list[-]) "name as 'parameter'";
+ variant (actionDecl_list[-].xmlParameter_list) "untagged";
+ variant (actionDecl_list[-].xmlParameter_list[-]) "name as 'xmlParameter'";
+ variant (actionDecl_list[-].file_list) "untagged";
+ variant (actionDecl_list[-].file_list[-]) "name as 'file'";
+ variant (actionDecl_list[-].group_list) "untagged";
+ variant (actionDecl_list[-].group_list[-]) "name as 'group'";
+ variant (eventDecl_list) "untagged";
+ variant (eventDecl_list[-]) "name as 'eventDecl'";
+ variant (eventDecl_list[-].name) "attribute";
+ variant (eventDecl_list[-].item_list) "untagged";
+ variant (eventDecl_list[-].item_list[-]) "name as 'item'";
+ variant (eventDecl_list[-].xmlItem_list) "untagged";
+ variant (eventDecl_list[-].xmlItem_list[-]) "name as 'xmlItem'";
+ variant (eventDecl_list[-].fileItem_list) "untagged";
+ variant (eventDecl_list[-].fileItem_list[-]) "name as 'fileItem'";
+ variant (eventDecl_list[-].group_list) "untagged";
+ variant (eventDecl_list[-].group_list[-]) "name as 'group'";
+ variant (subharness_list) "untagged";
+ variant (subharness_list[-]) "name as 'subharness'"; //added
+};
+
+
+/* A request to open a new session using a specified harness and a set
+of parameters and other information consistent with the contract defined in query-
+harness */
+type record Open
+{
+ Namespace harness,
+ Lang lang optional,
+ SessionMode mode,
+ XSD.Boolean reportUserActivity optional,
+ Context context optional,
+ record of RequestParameter parameter_list,
+ record of RequestXmlParameter xmlParameter_list,
+ record of RequestFile file_list,
+ record of RequestGroup group_list,
+ XSD.DateTime timestamp optional,
+ XSD.String activationRef
+}
+with {
+ variant "name as uncapitalized";
+ variant "element";
+ variant (harness) "attribute";
+ variant (lang) "attribute";
+ variant (lang) "namespace as 'http://www.w3.org/XML/1998/namespace'" "prefix 'xml'";
+ variant (mode) "attribute";
+ variant (reportUserActivity) "defaultForEmpty as 'true'";
+ variant (reportUserActivity) "attribute";
+ variant (parameter_list) "untagged";
+ variant (parameter_list[-]) "name as 'parameter'";
+ variant (xmlParameter_list) "untagged";
+ variant (xmlParameter_list[-]) "name as 'xmlParameter'";
+ variant (file_list) "untagged";
+ variant (file_list[-]) "name as 'file'";
+ variant (group_list) "untagged";
+ variant (group_list[-]) "name as 'group'";
+};
+
+
+/* A request to perform a certain action within the context of a
+session previously established using open, along with parameters and other information affecting
+the behavior of this request, consistent with the contract defined by the corresponding query-
+harness. */
+type record Request
+{
+ XSD.Name session,
+ Context context optional,
+ record of RequestParameter parameter_list,
+ record of RequestXmlParameter xmlParameter_list,
+ record of RequestFile file_list,
+ record of RequestGroup group_list,
+ XSD.DateTime timestamp optional,
+ Action action_
+}
+with {
+ variant "name as uncapitalized";
+ variant "element";
+ variant (session) "attribute";
+ variant (parameter_list) "untagged";
+ variant (parameter_list[-]) "name as 'parameter'";
+ variant (xmlParameter_list) "untagged";
+ variant (xmlParameter_list[-]) "name as 'xmlParameter'";
+ variant (file_list) "untagged";
+ variant (file_list[-]) "name as 'file'";
+ variant (group_list) "untagged";
+ variant (group_list[-]) "name as 'group'";
+ variant (action_) "name as 'action'";
+};
+
+
+/* A request to cancel an action previously requested using a
+request */
+type record Cancel
+{
+ XSD.String requestId,
+ XSD.Name session,
+ XSD.DateTime timestamp optional
+}
+with {
+ variant "name as uncapitalized";
+ variant "element";
+ variant (requestId) "attribute";
+ variant (session) "attribute";
+};
+
+
+type record Progress
+{
+ XSD.String requestId,
+ XSD.Name session,
+ XSD.Int totalWork,
+ XSD.Int remainingWork,
+ XSD.String status optional,
+ XSD.Duration timeRemaining optional,
+ XSD.DateTime timestamp optional
+}
+with {
+ variant "name as uncapitalized";
+ variant "element";
+ variant (requestId) "attribute";
+ variant (session) "attribute";
+};
+
+
+/* A response returned corresponding to a request previously made.
+The response, if populated, will conform to the details defined in the contract established via
+query-harness for the action from the request. */
+type record Response
+{
+ Lang lang optional,
+ XSD.String requestId optional,
+ XSD.Name session,
+ Result result,
+ XSD.String message_ optional,
+ XSD.Float duration optional,
+ record of ResponseItem item_list,
+ record of ResponseXmlItem xmlItem_list,
+ record of FileItem file_list,
+ record of ResponseGroup group_list,
+ XSD.DateTime timestamp optional
+}
+with {
+ variant "name as uncapitalized";
+ variant "element";
+ variant (lang) "attribute";
+ variant (lang) "namespace as 'http://www.w3.org/XML/1998/namespace'" "prefix 'xml'";
+ variant (requestId) "attribute";
+ variant (session) "attribute";
+ variant (message_) "name as 'message'";
+ variant (item_list) "untagged";
+ variant (item_list[-]) "name as 'item'";
+ variant (xmlItem_list) "untagged";
+ variant (xmlItem_list[-]) "name as 'xmlItem'";
+ variant (file_list) "untagged";
+ variant (file_list[-]) "name as 'file'";
+ variant (group_list) "untagged";
+ variant (group_list[-]) "name as 'group'";
+};
+
+
+/* An autonomous message issued by the provider of a harness to the
+originator of one of its sessions informing it about some event that has occurred. It may also
+contain additional information that must conform to the corresponding information in the query-
+harness for the corresponding event. */
+type record Event
+{
+ Namespace harness,
+ Lang lang optional,
+ XSD.Name name,
+ XSD.Name session,
+ XSD.DateTime timestamp,
+ record of ResponseItem item_list,
+ record of ResponseXmlItem xmlItem_list,
+ record of FileItem file_list,
+ record of ResponseGroup group_list
+}
+with {
+ variant "name as uncapitalized";
+ variant "element";
+ variant (harness) "attribute";
+ variant (lang) "attribute";
+ variant (lang) "namespace as 'http://www.w3.org/XML/1998/namespace'" "prefix 'xml'";
+ variant (name) "attribute";
+ variant (session) "attribute";
+ variant (item_list) "untagged";
+ variant (item_list[-]) "name as 'item'";
+ variant (xmlItem_list) "untagged";
+ variant (xmlItem_list[-]) "name as 'xmlItem'";
+ variant (file_list) "untagged";
+ variant (file_list[-]) "name as 'file'";
+ variant (group_list) "untagged";
+ variant (group_list[-]) "name as 'group'";
+};
+
+
+/* A request to close a session previously opened using
+open. */
+type record Close
+{
+ XSD.Name session,
+ XSD.DateTime timestamp optional
+}
+with {
+ variant "name as uncapitalized";
+ variant "element";
+ variant (session) "attribute";
+};
+
+
+/* A notification from the provider that the session has
+closed */
+type record Notify_close
+{
+ XSD.Name session,
+ XSD.DateTime timestamp optional
+}
+with {
+ variant "name as 'notify-close'";
+ variant "element";
+ variant (session) "attribute";
+};
+
+
+/* Notification of information about an action that was performed and
+the response it produced. */
+type record Notify_action
+{
+ Lang lang optional,
+ XSD.Name session,
+ Action action_,
+ XSD.DateTime started,
+ Context context optional,
+ record of RequestParameter requestParameter_list,
+ record of RequestXmlParameter requestXmlParameter_list,
+ record of RequestFile requestFile_list,
+ record of RequestGroup requestGroup_list,
+ Result result,
+ XSD.String message_ optional,
+ XSD.Float duration optional,
+ record of ResponseItem responseItem_list,
+ record of ResponseXmlItem responseXmlItem_list,
+ record of FileItem responseFile_list,
+ record of ResponseGroup responseGroup_list,
+ XSD.DateTime timestamp optional
+}
+with {
+ variant "name as 'notify-action'";
+ variant "element";
+ variant (lang) "attribute";
+ variant (lang) "namespace as 'http://www.w3.org/XML/1998/namespace'" "prefix 'xml'";
+ variant (session) "attribute";
+ variant (action_) "name as 'action'";
+ variant (requestParameter_list) "untagged";
+ variant (requestParameter_list[-]) "name as 'requestParameter'";
+ variant (requestXmlParameter_list) "untagged";
+ variant (requestXmlParameter_list[-]) "name as 'requestXmlParameter'";
+ variant (requestFile_list) "untagged";
+ variant (requestFile_list[-]) "name as 'requestFile'";
+ variant (requestGroup_list) "untagged";
+ variant (requestGroup_list[-]) "name as 'requestGroup'";
+ variant (message_) "name as 'message'";
+ variant (responseItem_list) "untagged";
+ variant (responseItem_list[-]) "name as 'responseItem'";
+ variant (responseXmlItem_list) "untagged";
+ variant (responseXmlItem_list[-]) "name as 'responseXmlItem'";
+ variant (responseFile_list) "untagged";
+ variant (responseFile_list[-]) "name as 'responseFile'";
+ variant (responseGroup_list) "untagged";
+ variant (responseGroup_list[-]) "name as 'responseGroup'";
+};
+
+
+/* The remainder of the file contains definitions for classes referenced above */
+
+
+/* Information about a named set of actions and events that may
+describe a harness */
+type record HarnessDecl
+{
+ Lang lang,
+ XSD.String label_,
+ XSD.String tooltip optional,
+ XSD.String description optional,
+ XSD.AnyURI helpURI optional,
+ Namespace supercedes optional,
+ XSD.String author,
+ record of record {
+ ActionName name,
+ XSD.String label_,
+ XSD.String tooltip optional,
+ XSD.String description optional,
+ XSD.AnyURI helpURI optional,
+ record of ParameterDecl parameter_list,
+ record of XmlParameterDecl xmlParameter_list,
+ record of FileDecl file_list,
+ record of RequestGroupDecl group_list,
+ ResponseDecl responseDecl optional
+ } actionDecl_list,
+ record of record {
+ XSD.Name name,
+ record of ResponseItemDecl item_list,
+ record of ResponseXmlItemDecl xmlItem_list,
+ record of FileItemDecl fileItem_list,
+ record of ResponseGroupDecl group_list,
+ XSD.String description
+ } eventDecl_list
+}
+with {
+ variant "name as uncapitalized";
+ variant (lang) "attribute";
+ variant (lang) "namespace as 'http://www.w3.org/XML/1998/namespace'" "prefix 'xml'";
+ variant (label_) "name as 'label'";
+ variant (actionDecl_list) "untagged";
+ variant (actionDecl_list[-]) "name as 'actionDecl'";
+ variant (actionDecl_list[-].name) "attribute";
+ variant (actionDecl_list[-].label_) "name as 'label'";
+ variant (actionDecl_list[-].parameter_list) "untagged";
+ variant (actionDecl_list[-].parameter_list[-]) "name as 'parameter'";
+ variant (actionDecl_list[-].xmlParameter_list) "untagged";
+ variant (actionDecl_list[-].xmlParameter_list[-]) "name as 'xmlParameter'";
+ variant (actionDecl_list[-].file_list) "untagged";
+ variant (actionDecl_list[-].file_list[-]) "name as 'file'";
+ variant (actionDecl_list[-].group_list) "untagged";
+ variant (actionDecl_list[-].group_list[-]) "name as 'group'";
+ variant (eventDecl_list) "untagged";
+ variant (eventDecl_list[-]) "name as 'eventDecl'";
+ variant (eventDecl_list[-].name) "attribute";
+ variant (eventDecl_list[-].item_list) "untagged";
+ variant (eventDecl_list[-].item_list[-]) "name as 'item'";
+ variant (eventDecl_list[-].xmlItem_list) "untagged";
+ variant (eventDecl_list[-].xmlItem_list[-]) "name as 'xmlItem'";
+ variant (eventDecl_list[-].fileItem_list) "untagged";
+ variant (eventDecl_list[-].fileItem_list[-]) "name as 'fileItem'";
+ variant (eventDecl_list[-].group_list) "untagged";
+ variant (eventDecl_list[-].group_list[-]) "name as 'group'";
+};
+
+
+/* A declaration of the information that will be returned in response
+to a request for a given action supported by the harness (or harness including support for the
+given sub) */
+type record ResponseDecl
+{
+ record of ResponseItemDecl item_list,
+ record of ResponseXmlItemDecl xmlItem_list,
+ record of FileItemDecl fileItem_list,
+ record of ResponseGroupDecl group_list
+}
+with {
+ variant "name as uncapitalized";
+ variant (item_list) "untagged";
+ variant (item_list[-]) "name as 'item'";
+ variant (xmlItem_list) "untagged";
+ variant (xmlItem_list[-]) "name as 'xmlItem'";
+ variant (fileItem_list) "untagged";
+ variant (fileItem_list[-]) "name as 'fileItem'";
+ variant (group_list) "untagged";
+ variant (group_list[-]) "name as 'group'";
+};
+
+
+/* Information that is included along with a request that is made in
+the context of a session using a given harness. This information needs to conform to the
+contract laid out in the query-harness for the corresponding action. */
+type record RequestType
+{
+ Context context optional,
+ record of RequestParameter parameter_list,
+ record of RequestXmlParameter xmlParameter_list,
+ record of RequestFile file_list,
+ record of RequestGroup group_list
+}
+with {
+ variant "name as uncapitalized";
+ variant (parameter_list) "untagged";
+ variant (parameter_list[-]) "name as 'parameter'";
+ variant (xmlParameter_list) "untagged";
+ variant (xmlParameter_list[-]) "name as 'xmlParameter'";
+ variant (file_list) "untagged";
+ variant (file_list[-]) "name as 'file'";
+ variant (group_list) "untagged";
+ variant (group_list[-]) "name as 'group'";
+};
+
+
+/* Declaration of the information that may be used to describe a
+certain parameter associated with a certain action declaration on a certain harness */
+type record ParameterDecl
+{
+ ActionName name,
+ XSD.String label_,
+ XSD.String tooltip optional,
+ XSD.String description optional,
+ XSD.AnyURI helpURI optional,
+ XSD.Boolean mandatory optional,
+ DataType datatype optional,
+ XSD.String units optional,
+ XSD.String default_ optional,
+ XSD.Boolean masked optional,
+ XSD.Boolean isMultiline optional,
+ record of AllowedValueDecl allowedValue_list,
+ AllowedCountDecl allowedLength optional,
+ AllowedCountDecl allowedCount optional,
+ record of XSD.String allowedPattern_list,
+ record of AllowedRangeDecl allowedRange_list,
+ EnablementValueDecl enablementValue optional
+}
+with {
+ variant "name as uncapitalized";
+ variant (name) "attribute";
+ variant (label_) "name as 'label'";
+ variant (mandatory) "defaultForEmpty as 'true'";
+ variant (datatype) "defaultForEmpty as 'string'";
+ variant (default_) "name as 'default'";
+ variant (masked) "defaultForEmpty as 'false'";
+ variant (isMultiline) "defaultForEmpty as 'false'";
+ variant (allowedValue_list) "untagged";
+ variant (allowedValue_list[-]) "name as 'allowedValue'";
+ variant (allowedPattern_list) "untagged";
+ variant (allowedPattern_list[-]) "name as 'allowedPattern'";
+ variant (allowedRange_list) "untagged";
+ variant (allowedRange_list[-]) "name as 'allowedRange'";
+};
+
+
+/* Declaration of the information that may be used to describe a
+certain XML parameter -- i.e., a document fragment that may be included as part of a request to
+perform a given action */
+type record XmlParameterDecl
+{
+ ActionName name,
+ XSD.String label_,
+ XSD.String tooltip optional,
+ XSD.String description optional,
+ XSD.AnyURI helpURI optional,
+ XSD.Boolean mandatory optional,
+ XSD.Name element,
+ XSD.String xmlNamespace,
+ EnablementValueDecl enablementValue optional
+}
+with {
+ variant "name as uncapitalized";
+ variant (name) "attribute";
+ variant (label_) "name as 'label'";
+ variant (mandatory) "defaultForEmpty as 'true'";
+};
+
+
+/* Declaration of the information that may be used to describe a file
+that may be */
+/* " */
+/* attached */
+/* " */
+/* to the corresponding action request */
+type record FileDecl
+{
+ ActionName name,
+ XSD.String label_,
+ XSD.String tooltip optional,
+ XSD.String description optional,
+ XSD.AnyURI helpURI optional,
+ XSD.Boolean mandatory optional,
+ AllowedCountDecl allowedCount optional,
+ record of XSD.String allowedFileExtension_list,
+ EnablementValueDecl enablementValue optional
+}
+with {
+ variant "name as uncapitalized";
+ variant (name) "attribute";
+ variant (label_) "name as 'label'";
+ variant (mandatory) "defaultForEmpty as 'true'";
+ variant (allowedFileExtension_list) "untagged";
+ variant (allowedFileExtension_list[-]) "name as 'allowedFileExtension'";
+};
+
+
+type record AllowedValueDecl
+{
+ XSD.String label_ optional,
+ XSD.String base
+}
+with {
+ variant "name as uncapitalized";
+ variant (label_) "name as 'label'";
+ variant (label_) "attribute";
+ variant (base) "untagged";
+};
+
+
+type record AllowedRangeDecl
+{
+ //XSD.Decimal min optional, specifying the nr. of fractional digits is not supported
+ //XSD.Decimal max optional
+ XSD.String min optional,
+ XSD.String max optional
+
+}
+with {
+ variant "name as uncapitalized";
+};
+
+
+type record AllowedCountDecl
+{
+ XSD.Int min optional,
+ XSD.Int max optional
+}
+with {
+ variant "name as uncapitalized";
+};
+
+
+type record EnablementValueDecl
+{
+ XSD.Name parameter,
+ XSD.String value_,
+ EnableOnType enableOn
+}
+with {
+ variant "name as uncapitalized";
+ variant (value_) "name as 'value'";
+};
+
+
+/* Declaration of a named group of parameters that may be included in
+a request for a certain action */
+type record RequestGroupDecl
+{
+ ActionName name,
+ XSD.String label_,
+ XSD.String tooltip optional,
+ XSD.String description optional,
+ XSD.AnyURI helpURI optional,
+ XSD.Boolean mandatory optional,
+ AllowedCountDecl allowedCount optional,
+ XSD.Name parameterKeyName optional,
+ record of ParameterDecl parameter_list,
+ record of RequestGroupDecl group_list
+}
+with {
+ variant "name as uncapitalized";
+ variant (name) "attribute";
+ variant (label_) "name as 'label'";
+ variant (mandatory) "defaultForEmpty as 'true'";
+ variant (parameter_list) "untagged";
+ variant (parameter_list[-]) "name as 'parameter'";
+ variant (group_list) "untagged";
+ variant (group_list[-]) "name as 'group'";
+};
+
+
+/* Declaration of a certain specific item of information that may be
+returned in the response to a certain action */
+type record ResponseItemDecl
+{
+ ActionName name,
+ XSD.String label_,
+ XSD.String tooltip optional,
+ XSD.String description optional,
+ XSD.AnyURI helpURI optional,
+ XSD.Boolean mandatory optional,
+ XSD.String default_ optional,
+ DataType datatype optional,
+ XSD.String units optional,
+ XSD.Boolean masked optional,
+ XSD.Boolean isMultiline optional,
+ record of AllowedValueDecl allowedValue_list,
+ AllowedCountDecl allowedCount optional
+}
+with {
+ variant "name as uncapitalized";
+ variant (name) "attribute";
+ variant (label_) "name as 'label'";
+ variant (mandatory) "defaultForEmpty as 'true'";
+ variant (default_) "name as 'default'";
+ variant (datatype) "defaultForEmpty as 'string'";
+ variant (masked) "defaultForEmpty as 'false'";
+ variant (isMultiline) "defaultForEmpty as 'false'";
+ variant (allowedValue_list) "untagged";
+ variant (allowedValue_list[-]) "name as 'allowedValue'";
+};
+
+
+/* Declaration of a certain named XML document fragment that may be
+returned in the response to a certain action */
+type record ResponseXmlItemDecl
+{
+ ActionName name,
+ XSD.String label_,
+ XSD.String tooltip optional,
+ XSD.String description optional,
+ XSD.AnyURI helpURI optional,
+ XSD.Boolean mandatory optional,
+ XSD.Name element,
+ XSD.String xmlNamespace
+}
+with {
+ variant "name as uncapitalized";
+ variant (name) "attribute";
+ variant (label_) "name as 'label'";
+ variant (mandatory) "defaultForEmpty as 'true'";
+};
+
+
+/* Declaration of a certain named file that may be returned in the
+response to a certain action */
+type record FileItemDecl
+{
+ ActionName name,
+ XSD.String label_,
+ XSD.String tooltip optional,
+ XSD.String description optional,
+ XSD.AnyURI helpURI optional,
+ XSD.Boolean mandatory optional,
+ AllowedCountDecl allowedCount optional
+}
+with {
+ variant "name as uncapitalized";
+ variant (name) "attribute";
+ variant (label_) "name as 'label'";
+ variant (mandatory) "defaultForEmpty as 'true'";
+};
+
+
+/* Declaration of a certain named group of items that may be returned
+in the response to a certain action */
+type record ResponseGroupDecl
+{
+ ActionName name,
+ XSD.String label_, //not optional !!!
+ XSD.String tooltip optional,
+ XSD.String description optional,
+ XSD.AnyURI helpURI optional,
+ XSD.Boolean mandatory optional,
+ AllowedCountDecl allowedCount optional,
+ XSD.Name itemKeyName optional,
+ record of ResponseItemDecl item_list,
+ record of ResponseGroupDecl group_list
+}
+with {
+ variant "name as uncapitalized";
+ variant (name) "attribute";
+ variant (label_) "name as 'label'";
+ variant (mandatory) "defaultForEmpty as 'true'";
+ variant (item_list) "untagged";
+ variant (item_list[-]) "name as 'item'";
+ variant (group_list) "untagged";
+ variant (group_list[-]) "name as 'group'";
+};
+
+
+type record ResponseItem
+{
+ XSD.Name name,
+ XSD.String base
+}
+with {
+ variant "name as uncapitalized";
+ variant (name) "attribute";
+ variant (base) "untagged";
+};
+
+
+type record FileItem
+{
+ XSD.Name name,
+ XSD.String filename
+}
+with {
+ variant "name as uncapitalized";
+ variant (name) "attribute";
+};
+
+
+type record ResponseXmlItem
+{
+ XSD.Name name,
+ XSD.String elem
+}
+with {
+ variant "name as uncapitalized";
+ variant (name) "attribute";
+ variant (elem) "anyElement";
+};
+
+
+type record ResponseGroup
+{
+ XSD.Name name,
+ record of ResponseItem item_list,
+ record of ResponseGroup group_list
+}
+with {
+ variant "name as uncapitalized";
+ variant (name) "attribute";
+ variant (item_list) "untagged";
+ variant (item_list[-]) "name as 'item'";
+ variant (group_list) "untagged";
+ variant (group_list[-]) "name as 'group'";
+};
+
+
+type record Action
+{
+ Namespace harness,
+ ActionName base
+}
+with {
+ variant "name as uncapitalized";
+ variant (harness) "attribute";
+ variant (base) "untagged";
+};
+
+
+type record Context
+{
+ Jid entity optional,
+ XSD.String harness optional,
+ XSD.String requestId optional,
+ XSD.Name session optional,
+ record {
+ record of XSD.String elem_list
+ } details optional,
+ Context context optional
+}
+with {
+ variant "name as uncapitalized";
+ variant (entity) "attribute";
+ variant (harness) "attribute";
+ variant (requestId) "attribute";
+ variant (session) "attribute";
+ variant (details.elem_list) "untagged";
+ variant (details.elem_list[-]) "anyElement";
+};
+
+
+type record RequestParameter
+{
+ XSD.Name name,
+ XSD.String base
+}
+with {
+ variant "name as uncapitalized";
+ variant (name) "attribute";
+ variant (base) "untagged";
+};
+
+
+type record RequestXmlParameter
+{
+ XSD.Name name,
+ XSD.String elem
+}
+with {
+ variant "name as uncapitalized";
+ variant (name) "attribute";
+ variant (elem) "anyElement";
+};
+
+
+type record RequestFile
+{
+ XSD.Name name,
+ XSD.String filename
+}
+with {
+ variant "name as uncapitalized";
+ variant (name) "attribute";
+};
+
+
+type record RequestGroup
+{
+ XSD.Name name,
+ record of RequestParameter parameter_list,
+ record of RequestGroup group_list
+}
+with {
+ variant "name as uncapitalized";
+ variant (name) "attribute";
+ variant (parameter_list) "untagged";
+ variant (parameter_list[-]) "name as 'parameter'";
+ variant (group_list) "untagged";
+ variant (group_list[-]) "name as 'group'";
+};
+
+
+type enumerated EnableOnType
+{
+ equal,
+ not_equal,
+ pattern_match
+}
+with {
+ variant "name as uncapitalized";
+};
+
+
+type enumerated SessionMode
+{
+ invisible_and_automated,
+ visible_and_automated,
+ visible_and_interactive
+}
+with {
+ variant "name as uncapitalized";
+};
+
+
+type enumerated Result
+{
+ abort,
+ fail_,
+ pass_,
+ pending
+}
+with {
+ variant "text 'fail_' as 'fail'";
+ variant "text 'pass_' as 'pass'";
+ variant "name as uncapitalized";
+};
+
+
+type enumerated DataType
+{
+ anyURI,
+ boolean_,
+ dateTime,
+ decimal,
+ integer_,
+ string
+}
+with {
+ variant "text 'boolean_' as 'boolean'";
+ variant "text 'integer_' as 'integer'";
+ variant "name as uncapitalized";
+};
+
+
+type XSD.String Jid
+ with {
+ variant "name as uncapitalized";
+};
+
+
+type XSD.AnyURI Namespace
+ with {
+ variant "name as uncapitalized";
+};
+
+
+type XSD.Name ActionName
+ with {
+ variant "name as uncapitalized";
+};
+
+
+type record NamedElementDeclWithMandatory
+{
+ ActionName name,
+ XSD.String label_,
+ XSD.String tooltip optional,
+ XSD.String description optional,
+ XSD.AnyURI helpURI optional,
+ XSD.Boolean mandatory optional
+}
+with {
+ variant "name as uncapitalized";
+ variant (name) "attribute";
+ variant (label_) "name as 'label'";
+ variant (mandatory) "defaultForEmpty as 'true'";
+};
+
+
+type record NamedElementDecl
+{
+ ActionName name,
+ XSD.String label_,
+ XSD.String tooltip optional,
+ XSD.String description optional,
+ XSD.AnyURI helpURI optional
+}
+with {
+ variant "name as uncapitalized";
+ variant (name) "attribute";
+ variant (label_) "name as 'label'";
+};
+
+
+type record ElementDecl
+{
+ XSD.String label_,
+ XSD.String tooltip optional,
+ XSD.String description optional,
+ XSD.AnyURI helpURI optional
+}
+with {
+ variant "name as uncapitalized";
+ variant (label_) "name as 'label'";
+};
+
+
+}
+with {
+ encode "XML";
+ variant "namespace as 'http://ntaforum.org/2011/harness' prefix 'h'";
+ variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'";
+ variant "elementFormQualified";
+}
diff --git a/src/http_ntaforum_org_2011_registry.ttcn b/src/http_ntaforum_org_2011_registry.ttcn
new file mode 100644
index 0000000..d46980c
--- /dev/null
+++ b/src/http_ntaforum_org_2011_registry.ttcn
@@ -0,0 +1,102 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2000-2016 Ericsson Telecom AB
+//
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// which accompanies this distribution, and is available at
+// http://www.eclipse.org/legal/epl-v10.html
+///////////////////////////////////////////////////////////////////////////////
+//
+// File: http_ntaforum_org_2011_registry.ttcn
+// Description:
+// References:
+// Rev: R2B
+// Prodnr: CNL 113 776
+// Updated: Sun Jan 6 13:17:58 2013
+// Contact: http://ttcn.ericsson.se
+//
+////////////////////////////////////////////////////////////////////////////////
+//
+// Generated from file(s):
+//
+// - registry.xsd
+// /* xml version = "1.0" encoding = "UTF-8" */
+// /* targetnamespace = "http://ntaforum.org/2011/registry" */
+//
+////////////////////////////////////////////////////////////////////////////////
+
+
+////////////////////////////////////////////////////////////////////////////////
+//
+//
+//NTAF-0001: Tool Registration, Discovery and Activation
+//
+//
+////////////////////////////////////////////////////////////////////////////////
+
+
+module http_ntaforum_org_2011_registry {
+
+
+import from XSD all;
+
+
+import from http_www_w3_org_XML_1998_namespace all;
+
+
+import from http_ntaforum_org_2011_harness all;
+
+
+type record Entry
+{
+ XSD.AnyURI tooltype,
+ XSD.String version,
+ record of Harness harness_list,
+ record length(1 .. infinity) of record {
+ Lang lang,
+ XSD.String vendor,
+ XSD.String name,
+ XSD.String description,
+ XSD.AnyURI helpUri
+ } documentation_list,
+ XSD.DateTime published,
+ record {
+ XSD.String workspaceID,
+ record of XSD.String ipv4_list,
+ record of XSD.String ipv6_list,
+ XSD.String hostname optional,
+ XSD.String serialNumber optional,
+ XSD.String assetNumber optional,
+ XSD.String description optional
+ } location,
+ record of record {
+ XSD.String elem
+ } extension_list
+}
+with {
+ variant "name as uncapitalized";
+ variant "element";
+ variant (harness_list) "untagged";
+ variant (harness_list[-]) "namespace as 'http://ntaforum.org/2011/harness' prefix 'h'";
+ variant (documentation_list) "untagged";
+ variant (documentation_list[-]) "name as 'documentation'";
+ variant (documentation_list[-].lang) "attribute";
+ variant (documentation_list[-].lang) "namespace as 'http://www.w3.org/XML/1998/namespace'" "prefix 'xml'";
+ variant (location.ipv4_list) "untagged";
+ variant (location.ipv4_list[-]) "name as 'ipv4'";
+ variant (location.ipv6_list) "untagged";
+ variant (location.ipv6_list[-]) "name as 'ipv6'";
+ variant (extension_list) "untagged";
+ variant (extension_list[-]) "name as 'extension'";
+ variant (extension_list[-].elem) "anyElement";
+};
+
+
+}
+with {
+ encode "XML";
+ variant "namespace as 'http://ntaforum.org/2011/registry' prefix 'r'";
+ variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'";
+ variant "elementFormQualified";
+}
diff --git a/src/reference/activation.xsd b/src/reference/activation.xsd
new file mode 100644
index 0000000..d59c34a
--- /dev/null
+++ b/src/reference/activation.xsd
@@ -0,0 +1,37 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<xs:schema
+xmlns:xs='http://www.w3.org/2001/XMLSchema'
+xmlns:a='http://ntaforum.org/2011/activation'
+xmlns:h='http://ntaforum.org/2011/harness'
+targetNamespace='http://ntaforum.org/2011/activation'
+elementFormDefault='qualified' attributeFormDefault='unqualified'>
+ <xs:import namespace='http://ntaforum.org/2011/harness' schemaLocation='harness.xsd'/>
+ <xs:element name='activate'>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name='result' type='a:activationResult'/>
+ <xs:element name='message' type='xs:string' minOccurs='0'/>
+ <xs:element name='jid' type='xs:string' minOccurs='0'/>
+ <xs:element name='activationRef' type='xs:string' minOccurs='0'/>
+ <xs:element name='timestamp' type='xs:dateTime' minOccurs='0'/>
+ <xs:element ref='h:harness' maxOccurs='unbounded'/>
+ </xs:sequence>
+ <xs:attribute name='toolId' type='xs:string' use='required'/>
+ <xs:attribute name='requestId' type='xs:string'/>
+ </xs:complexType>
+ </xs:element>
+ <xs:simpleType name='activationResult'>
+ <xs:restriction base='xs:string'>
+ <xs:enumeration value='pass'/>
+ <xs:enumeration value='fail'/>
+ <xs:enumeration value='pending'/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:element name='deactivate'>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name='activationRef' type='xs:string'/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/src/reference/harness.xsd b/src/reference/harness.xsd
new file mode 100644
index 0000000..9f7635d
--- /dev/null
+++ b/src/reference/harness.xsd
@@ -0,0 +1,602 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+xmlns:h="http://ntaforum.org/2011/harness"
+xmlns:xml="http://www.w3.org/XML/1998/namespace"
+targetNamespace="http://ntaforum.org/2011/harness"
+elementFormDefault="qualified"
+attributeFormDefault="unqualified">
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml-1998.xsd"/>
+ <xs:element name="harness" type="h:harness"/>
+ <xs:complexType name="harness">
+ <xs:sequence>
+ <xs:element name="supportedMode" type="h:sessionMode" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:string" use="required"/>
+ </xs:complexType>
+ <xs:element name="query-harness">
+ <xs:annotation>
+ <xs:documentation>Information about a certain harness including descriptions of the
+harness itself as well as the actions, events, and nested harnesses it
+supports.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="h:harnessDecl">
+ <xs:sequence>
+ <xs:element name="subharness" minOccurs="0" maxOccurs="unbounded"
+type="h:namespace"/>
+ </xs:sequence>
+ <xs:attribute name="harness" type="h:namespace" use="required"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="open">
+ <xs:annotation>
+ <xs:documentation>A request to open a new session using a specified harness and a set
+of parameters and other information consistent with the contract defined in query-
+harness</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="h:requestType">
+ <xs:sequence>
+ <xs:element name="timestamp" type="xs:dateTime" minOccurs="0"/>
+ <xs:element name="activationRef" type="xs:string"/>
+ </xs:sequence>
+ <xs:attribute name="harness" type="h:namespace" use="required"/>
+ <xs:attribute name="mode" type="h:sessionMode" use="required"/>
+ <xs:attribute name="reportUserActivity" type="xs:boolean" use="optional"
+default="true"/>
+ <xs:attribute ref="xml:lang" use="optional"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="request">
+ <xs:annotation>
+ <xs:documentation>A request to perform a certain action within the context of a
+session previously established using open, along with parameters and other information affecting
+the behavior of this request, consistent with the contract defined by the corresponding query-
+harness.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="h:requestType">
+ <xs:sequence>
+ <xs:element name="timestamp" type="xs:dateTime" minOccurs="0"/>
+ <xs:element name="action" type="h:action"/>
+ </xs:sequence>
+ <xs:attribute name="session" type="xs:Name" use="required"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="cancel">
+ <xs:annotation>
+ <xs:documentation>A request to cancel an action previously requested using a
+request</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="timestamp" type="xs:dateTime" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="session" type="xs:Name" use="required"/>
+ <xs:attribute name="requestId" type="xs:string" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="progress">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="totalWork" type="xs:int"/>
+ <xs:element name="remainingWork" type="xs:int"/>
+ <xs:element name="status" type="xs:string" minOccurs="0"/>
+ <xs:element name="timeRemaining" type="xs:duration" minOccurs="0"/>
+ <xs:element name="timestamp" type="xs:dateTime" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="session" type="xs:Name" use="required"/>
+ <xs:attribute name="requestId" type="xs:string" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="response">
+ <xs:annotation>
+ <xs:documentation>A response returned corresponding to a request previously made.
+The response, if populated, will conform to the details defined in the contract established via
+query-harness for the action from the request.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="result" type="h:result"/>
+ <xs:element name="message" type="xs:string" minOccurs="0"/>
+ <xs:element name="duration" type="xs:float" minOccurs="0"/>
+ <xs:element name="item" type="h:responseItem" minOccurs="0"
+maxOccurs="unbounded"/>
+ <xs:element name="xmlItem" type="h:responseXmlItem" minOccurs="0"
+maxOccurs="unbounded"/>
+ <xs:element name="file" type="h:fileItem" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="group" type="h:responseGroup" minOccurs="0"
+maxOccurs="unbounded"/>
+ <xs:element name="timestamp" type="xs:dateTime" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="session" type="xs:Name" use="required"/>
+ <xs:attribute name="requestId" type="xs:string" use="optional"/>
+ <xs:attribute ref="xml:lang" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="event">
+ <xs:annotation>
+ <xs:documentation>An autonomous message issued by the provider of a harness to the
+originator of one of its sessions informing it about some event that has occurred. It may also
+contain additional information that must conform to the corresponding information in the query-
+harness for the corresponding event.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="timestamp" type="xs:dateTime"/>
+ <xs:element name="item" type="h:responseItem" minOccurs="0"
+maxOccurs="unbounded"/>
+ <xs:element name="xmlItem" type="h:responseXmlItem" minOccurs="0"
+maxOccurs="unbounded"/>
+ <xs:element name="file" type="h:fileItem" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="group" type="h:responseGroup" minOccurs="0"
+maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="session" type="xs:Name" use="required"/>
+ <xs:attribute name="harness" type="h:namespace" use="required"/>
+ <xs:attribute name="name" type="xs:Name" use="required"/>
+ <xs:attribute ref="xml:lang" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="close">
+ <xs:annotation>
+ <xs:documentation>A request to close a session previously opened using
+open.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="timestamp" type="xs:dateTime" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="session" type="xs:Name" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="notify-close">
+ <xs:annotation>
+ <xs:documentation>A notification from the provider that the session has
+closed</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="timestamp" type="xs:dateTime" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="session" type="xs:Name" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="notify-action">
+ <xs:annotation>
+ <xs:documentation>Notification of information about an action that was performed and
+the response it produced.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="action" type="h:action"/>
+ <xs:element name="started" type="xs:dateTime"/>
+ <xs:element name="context" type="h:context" minOccurs="0"/>
+ <xs:element name="requestParameter" type="h:requestParameter" minOccurs="0"
+maxOccurs="unbounded"/>
+ <xs:element name="requestXmlParameter" type="h:requestXmlParameter" minOccurs="0"
+maxOccurs="unbounded"/>
+ <xs:element name="requestFile" type="h:requestFile" minOccurs="0"
+maxOccurs="unbounded"/>
+ <xs:element name="requestGroup" type="h:requestGroup" minOccurs="0"
+maxOccurs="unbounded"/>
+ <xs:element name="result" type="h:result"/>
+ <xs:element name="message" type="xs:string" minOccurs="0"/>
+ <xs:element name="duration" type="xs:float" minOccurs="0"/>
+ <xs:element name="responseItem" type="h:responseItem" minOccurs="0"
+maxOccurs="unbounded"/>
+ <xs:element name="responseXmlItem" type="h:responseXmlItem" minOccurs="0"
+maxOccurs="unbounded"/>
+ <xs:element name="responseFile" type="h:fileItem" minOccurs="0"
+maxOccurs="unbounded"/>
+ <xs:element name="responseGroup" type="h:responseGroup" minOccurs="0"
+maxOccurs="unbounded"/>
+ <xs:element name="timestamp" type="xs:dateTime" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="session" type="xs:Name" use="required"/>
+ <xs:attribute ref="xml:lang" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- The remainder of the file contains definitions for classes referenced above -->
+ <xs:complexType name="harnessDecl">
+ <xs:annotation>
+ <xs:documentation>Information about a named set of actions and events that may
+describe a harness</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="h:elementDecl">
+ <xs:sequence>
+ <xs:element name="supercedes" type="h:namespace" minOccurs="0"/>
+ <xs:element name="author" type="xs:string"/>
+ <xs:element name="actionDecl" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="h:namedElementDecl">
+ <xs:sequence>
+ <xs:element name="parameter" type="h:parameterDecl" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="xmlParameter" type="h:xmlParameterDecl" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="file" type="h:fileDecl" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="group" type="h:requestGroupDecl" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="responseDecl" type="h:responseDecl" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="eventDecl" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="h:responseDecl">
+ <xs:sequence>
+ <xs:element name="description" type="xs:string"/>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:Name" use="required"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute ref="xml:lang" use="required"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="responseDecl">
+ <xs:annotation>
+ <xs:documentation>A declaration of the information that will be returned in response
+to a request for a given action supported by the harness (or harness including support for the
+given sub)</xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="item" type="h:responseItemDecl" minOccurs="0"
+maxOccurs="unbounded"/>
+ <xs:element name="xmlItem" type="h:responseXmlItemDecl" minOccurs="0"
+maxOccurs="unbounded"/>
+ <xs:element name="fileItem" type="h:fileItemDecl" minOccurs="0"
+maxOccurs="unbounded"/>
+ <xs:element name="group" type="h:responseGroupDecl" minOccurs="0"
+maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="requestType">
+ <xs:annotation>
+ <xs:documentation>Information that is included along with a request that is made in
+the context of a session using a given harness. This information needs to conform to the
+contract laid out in the query-harness for the corresponding action.</xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="context" type="h:context" minOccurs="0"/>
+ <xs:element name="parameter" type="h:requestParameter" minOccurs="0"
+maxOccurs="unbounded"/>
+ <xs:element name="xmlParameter" type="h:requestXmlParameter" minOccurs="0"
+maxOccurs="unbounded"/>
+ <xs:element name="file" type="h:requestFile" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="group" type="h:requestGroup" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="parameterDecl">
+ <xs:annotation>
+ <xs:documentation>Declaration of the information that may be used to describe a
+certain parameter associated with a certain action declaration on a certain harness
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="h:namedElementDeclWithMandatory">
+ <xs:sequence>
+ <xs:element name="datatype" type="h:dataType" default="string"
+minOccurs="0"/>
+ <xs:element name="units" type="xs:string" minOccurs="0"/>
+ <xs:element name="default" type="xs:string" minOccurs="0"/>
+ <xs:element name="masked" type="xs:boolean" default="false" minOccurs="0"/>
+ <xs:element name="isMultiline" type="xs:boolean" default="false"
+minOccurs="0"/>
+ <xs:element name="allowedValue" type="h:allowedValueDecl" minOccurs="0"
+maxOccurs="unbounded"/>
+ <xs:element name="allowedLength" type="h:allowedCountDecl" minOccurs="0"/>
+ <xs:element name="allowedCount" type="h:allowedCountDecl" minOccurs="0"/>
+ <xs:element name="allowedPattern" type="xs:string" minOccurs="0"
+maxOccurs="unbounded"/>
+ <xs:element name="allowedRange" type="h:allowedRangeDecl" minOccurs="0"
+maxOccurs="unbounded"/>
+ <xs:element name="enablementValue" type="h:enablementValueDecl"
+minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="xmlParameterDecl">
+ <xs:annotation>
+ <xs:documentation>Declaration of the information that may be used to describe a
+certain XML parameter -- i.e., a document fragment that may be included as part of a request to
+perform a given action</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="h:namedElementDeclWithMandatory">
+ <xs:sequence>
+ <xs:element name="element" type="xs:Name"/>
+ <xs:element name="xmlNamespace" type="xs:string"/>
+ <xs:element name="enablementValue" type="h:enablementValueDecl"
+minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="fileDecl">
+ <xs:annotation>
+ <xs:documentation>Declaration of the information that may be used to describe a file
+that may be "attached" to the corresponding action request</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="h:namedElementDeclWithMandatory">
+ <xs:sequence>
+ <xs:element name="allowedCount" type="h:allowedCountDecl" minOccurs="0"/>
+ <xs:element name="allowedFileExtension" type="xs:string" minOccurs="0"
+maxOccurs="unbounded"/>
+ <xs:element name="enablementValue" type="h:enablementValueDecl"
+minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="allowedValueDecl">
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="label" type="xs:string"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ <xs:complexType name="allowedRangeDecl">
+ <xs:sequence>
+ <xs:element name="min" type="xs:decimal" minOccurs="0"/>
+ <xs:element name="max" type="xs:decimal" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="allowedCountDecl">
+ <xs:sequence>
+ <xs:element name="min" type="xs:int" minOccurs="0"/>
+ <xs:element name="max" type="xs:int" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="enablementValueDecl">
+ <xs:sequence>
+ <xs:element name="parameter" type="xs:Name"/>
+ <xs:element name="value" type="xs:string"/>
+ <xs:element name="enableOn" type="h:enableOnType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="requestGroupDecl">
+ <xs:annotation>
+ <xs:documentation>Declaration of a named group of parameters that may be included in
+a request for a certain action</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="h:namedElementDeclWithMandatory">
+ <xs:sequence>
+ <xs:element name="allowedCount" type="h:allowedCountDecl" minOccurs="0"/>
+ <xs:element name="parameterKeyName" type="xs:Name" minOccurs="0"/>
+ <xs:element name="parameter" type="h:parameterDecl" minOccurs="0"
+maxOccurs="unbounded"/>
+ <xs:element name="group" type="h:requestGroupDecl" minOccurs="0"
+maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="responseItemDecl">
+ <xs:annotation>
+ <xs:documentation>Declaration of a certain specific item of information that may be
+returned in the response to a certain action</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="h:namedElementDeclWithMandatory">
+ <xs:sequence>
+ <xs:element name="default" type="xs:string" minOccurs="0"/>
+ <xs:element name="datatype" type="h:dataType" default="string"
+minOccurs="0"/>
+ <xs:element name="units" type="xs:string" minOccurs="0"/>
+ <xs:element name="masked" type="xs:boolean" default="false" minOccurs="0"/>
+ <xs:element name="isMultiline" type="xs:boolean" default="false"
+minOccurs="0"/>
+ <xs:element name="allowedValue" type="h:allowedValueDecl" minOccurs="0"
+maxOccurs="unbounded"/>
+ <xs:element name="allowedCount" type="h:allowedCountDecl" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="responseXmlItemDecl">
+ <xs:annotation>
+ <xs:documentation>Declaration of a certain named XML document fragment that may be
+returned in the response to a certain action</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="h:namedElementDeclWithMandatory">
+ <xs:sequence>
+ <xs:element name="element" type="xs:Name"/>
+ <xs:element name="xmlNamespace" type="xs:string"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="fileItemDecl">
+ <xs:annotation>
+ <xs:documentation>Declaration of a certain named file that may be returned in the
+response to a certain action</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="h:namedElementDeclWithMandatory">
+ <xs:sequence>
+ <xs:element name="allowedCount" type="h:allowedCountDecl" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="responseGroupDecl">
+ <xs:annotation>
+ <xs:documentation>Declaration of a certain named group of items that may be returned
+in the response to a certain action</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="h:namedElementDeclWithMandatory">
+ <xs:sequence>
+ <xs:element name="allowedCount" type="h:allowedCountDecl" minOccurs="0"/>
+ <xs:element name="itemKeyName" type="xs:Name" minOccurs="0"/>
+ <xs:element name="item" type="h:responseItemDecl" minOccurs="0"
+maxOccurs="unbounded"/>
+ <xs:element name="group" type="h:responseGroupDecl" minOccurs="0"
+maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="responseItem">
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="name" type="xs:Name" use="required"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ <xs:complexType name="fileItem">
+ <xs:sequence>
+ <xs:element name="filename" type="xs:string"/>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:Name" use="required"/>
+ </xs:complexType>
+ <xs:complexType name="responseXmlItem">
+ <xs:sequence>
+ <xs:any processContents="skip"/>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:Name" use="required"/>
+ </xs:complexType>
+ <xs:complexType name="responseGroup">
+ <xs:sequence>
+ <xs:element name="item" type="h:responseItem" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="group" type="h:responseGroup" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:Name" use="required"/>
+ </xs:complexType>
+ <xs:complexType name="action">
+ <xs:simpleContent>
+ <xs:extension base="h:actionName">
+ <xs:attribute name="harness" type="h:namespace" use="required"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ <xs:complexType name="context">
+ <xs:sequence>
+ <xs:element name="details" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:any processContents="skip" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="context" type="h:context" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="entity" type="h:jid" use="optional"/>
+ <xs:attribute name="harness" type="xs:string" use="optional"/>
+ <xs:attribute name="session" type="xs:Name" use="optional"/>
+ <xs:attribute name="requestId" type="xs:string" use="optional"/>
+ </xs:complexType>
+ <xs:complexType name="requestParameter">
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="name" type="xs:Name" use="required"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ <xs:complexType name="requestXmlParameter">
+ <xs:sequence>
+ <xs:any processContents="skip"/>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:Name" use="required"/>
+ </xs:complexType>
+ <xs:complexType name="requestFile">
+ <xs:sequence>
+ <xs:element name="filename" type="xs:string"/>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:Name" use="required"/>
+ </xs:complexType>
+ <xs:complexType name="requestGroup">
+ <xs:sequence>
+ <xs:element name="parameter" type="h:requestParameter" minOccurs="0"
+maxOccurs="unbounded"/>
+ <xs:element name="group" type="h:requestGroup" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:Name" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="enableOnType">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="equal"/>
+ <xs:enumeration value="not_equal"/>
+ <xs:enumeration value="pattern_match"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="sessionMode">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="visible_and_interactive"/>
+ <xs:enumeration value="visible_and_automated"/>
+ <xs:enumeration value="invisible_and_automated"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="result">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="pass"/>
+ <xs:enumeration value="fail"/>
+ <xs:enumeration value="abort"/>
+ <xs:enumeration value="pending"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="dataType">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="string"/>
+ <xs:enumeration value="integer"/>
+ <xs:enumeration value="decimal"/>
+ <xs:enumeration value="boolean"/>
+ <xs:enumeration value="anyURI"/>
+ <xs:enumeration value="dateTime"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="jid">
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ <xs:simpleType name="namespace">
+ <xs:restriction base="xs:anyURI"/>
+ </xs:simpleType>
+ <xs:simpleType name="actionName">
+ <xs:restriction base="xs:Name"/>
+ </xs:simpleType>
+ <xs:complexType name="namedElementDeclWithMandatory">
+ <xs:complexContent>
+ <xs:extension base="h:namedElementDecl">
+ <xs:sequence>
+ <xs:element name="mandatory" type="xs:boolean" default="true" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="namedElementDecl">
+ <xs:complexContent>
+ <xs:extension base="h:elementDecl">
+ <xs:attribute name="name" type="h:actionName" use="required"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="elementDecl">
+ <xs:sequence>
+ <xs:element name="label" type="xs:string"/>
+ <xs:element name="tooltip" type="xs:string" minOccurs="0"/>
+ <xs:element name="description" type="xs:string" minOccurs="0"/>
+ <xs:element name="helpURI" type="xs:anyURI" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
+
diff --git a/src/reference/registry.xsd b/src/reference/registry.xsd
new file mode 100644
index 0000000..433dbcc
--- /dev/null
+++ b/src/reference/registry.xsd
@@ -0,0 +1,52 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<xs:schema
+xmlns:xs='http://www.w3.org/2001/XMLSchema'
+xmlns:r='http://ntaforum.org/2011/registry'
+xmlns:h='http://ntaforum.org/2011/harness'
+xmlns:xml='http://www.w3.org/XML/1998/namespace'
+targetNamespace='http://ntaforum.org/2011/registry'
+elementFormDefault='qualified' attributeFormDefault='unqualified'>
+ <xs:import namespace='http://www.w3.org/XML/1998/namespace' schemaLocation='xml-1998.xsd'/>
+ <xs:import namespace='http://ntaforum.org/2011/harness' schemaLocation='harness.xsd'/>
+ <xs:element name='entry'>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name='tooltype' type='xs:anyURI'/>
+ <xs:element name='version' type='xs:string'/>
+ <xs:element ref='h:harness' minOccurs='0' maxOccurs='unbounded'/>
+ <xs:element name='documentation' maxOccurs='unbounded'>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name='vendor' type='xs:string'/>
+ <xs:element name='name' type='xs:string'/>
+ <xs:element name='description' type='xs:string'/>
+ <xs:element name='helpUri' type='xs:anyURI'/>
+ </xs:sequence>
+ <xs:attribute ref='xml:lang' use='required'/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name='published' type='xs:dateTime'/>
+ <xs:element name='location'>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name='workspaceID' type='xs:string'/>
+ <xs:element name='ipv4' type='xs:string' minOccurs='0' maxOccurs='unbounded'/>
+ <xs:element name='ipv6' type='xs:string' minOccurs='0' maxOccurs='unbounded'/>
+ <xs:element name='hostname' type='xs:string' minOccurs='0'/>
+ <xs:element name='serialNumber' type='xs:string' minOccurs='0'/>
+ <xs:element name='assetNumber' type='xs:string' minOccurs='0'/>
+ <xs:element name='description' type='xs:string' minOccurs='0'/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name='extension' minOccurs='0' maxOccurs='unbounded'>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:any processContents='skip'/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/src/reference/xml-1998.xsd b/src/reference/xml-1998.xsd
new file mode 100644
index 0000000..31db3f5
--- /dev/null
+++ b/src/reference/xml-1998.xsd
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE xs:schema PUBLIC "-//W3C//DTD XMLSCHEMA 200102//EN" "XMLSchema.dtd">
+<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace" xmlns:xs="http://www.w3.org/2001/XMLSchema" xml:lang="en">
+
+ <xs:annotation>
+ <xs:documentation>
+ See http://www.w3.org/XML/1998/namespace.html and
+ http://www.w3.org/TR/REC-xml for information about this namespace.
+
+ This schema document describes the XML namespace, in a form
+ suitable for import by other schema documents.
+
+ Note that local names in this namespace are intended to be defined
+ only by the World Wide Web Consortium or its subgroups. The
+ following names are currently defined in this namespace and should
+ not be used with conflicting semantics by any Working Group,
+ specification, or document instance:
+
+ base (as an attribute name): denotes an attribute whose value
+ provides a URI to be used as the base for interpreting any
+ relative URIs in the scope of the element on which it
+ appears; its value is inherited. This name is reserved
+ by virtue of its definition in the XML Base specification.
+
+ lang (as an attribute name): denotes an attribute whose value
+ is a language code for the natural language of the content of
+ any element; its value is inherited. This name is reserved
+ by virtue of its definition in the XML specification.
+
+ space (as an attribute name): denotes an attribute whose
+ value is a keyword indicating what whitespace processing
+ discipline is intended for the content of the element; its
+ value is inherited. This name is reserved by virtue of its
+ definition in the XML specification.
+
+ Father (in any context at all): denotes Jon Bosak, the chair of
+ the original XML Working Group. This name is reserved by
+ the following decision of the W3C XML Plenary and
+ XML Coordination groups:
+
+ In appreciation for his vision, leadership and dedication
+ the W3C XML Plenary on this 10th day of February, 2000
+ reserves for Jon Bosak in perpetuity the XML name
+ xml:Father
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+ <xs:documentation>This schema defines attributes and an attribute group
+ suitable for use by
+ schemas wishing to allow xml:base, xml:lang or xml:space attributes
+ on elements they define.
+
+ To enable this, such a schema must import this schema
+ for the XML namespace, e.g. as follows:
+ <schema . . .>
+ . . .
+ <import namespace="http://www.w3.org/XML/1998/namespace"
+ schemaLocation="http://www.w3.org/2001/03/xml.xsd"/>
+
+ Subsequently, qualified reference to any of the attributes
+ or the group defined below will have the desired effect, e.g.
+
+ <type . . .>
+ . . .
+ <attributeGroup ref="xml:specialAttrs"/>
+
+ will define a type which will schema-validate an instance
+ element with any of those attributes</xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+ <xs:documentation>In keeping with the XML Schema WG's standard versioning
+ policy, this schema document will persist at
+ http://www.w3.org/2001/03/xml.xsd.
+ At the date of issue it can also be found at
+ http://www.w3.org/2001/xml.xsd.
+ The schema document at that URI may however change in the future,
+ in order to remain compatible with the latest version of XML Schema
+ itself. In other words, if the XML Schema namespace changes, the version
+ of this document at
+ http://www.w3.org/2001/xml.xsd will change
+ accordingly; the version at
+ http://www.w3.org/2001/03/xml.xsd will not change.
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:attribute name="lang" type="xs:language">
+ <xs:annotation>
+ <xs:documentation>In due course, we should install the relevant ISO 2- and 3-letter
+ codes as the enumerated possible values . . .</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+
+ <xs:attribute name="space" default="preserve">
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="default"/>
+ <xs:enumeration value="preserve"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+
+ <xs:attribute name="base" type="xs:anyURI">
+ <xs:annotation>
+ <xs:documentation>See http://www.w3.org/TR/xmlbase/ for
+ information about this attribute.</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+
+ <xs:attributeGroup name="specialAttrs">
+ <xs:attribute ref="xml:base"/>
+ <xs:attribute ref="xml:lang"/>
+ <xs:attribute ref="xml:space"/>
+ </xs:attributeGroup>
+
+</xs:schema>