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 &quot;attached&quot; 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:
+        &lt;schema . . .&gt;
+         . . .
+         &lt;import namespace="http://www.w3.org/XML/1998/namespace"
+                    schemaLocation="http://www.w3.org/2001/03/xml.xsd"/&gt;
+
+        Subsequently, qualified reference to any of the attributes
+        or the group defined below will have the desired effect, e.g.
+
+        &lt;type . . .&gt;
+         . . .
+         &lt;attributeGroup ref="xml:specialAttrs"/&gt;
+
+         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>