Repository: strictdoc-project/reqif (language: python)

Issue:
Implement the validation of ReqIF files against the official XSD schema
Recently, I have received a yet another random example from a user who obtained it randomly from the internet.

In that example, there are tags that are not part of the official XSD schema, and I started to wonder if it is a good time to implement an XSD-based validator. Using the official ReqIF XSD file, it should be possible to highlight to the users when they would try to feed non-compliant files to `reqif`.

I tried to use xmlschema for reading the ReqIF's XSD, but I got an issue that I reported here: https://github.com/sissaschool/xmlschema/issues/360. When that issue is resolved, it is worth to give it another shot because the `xmlschema` tool looks very promising.

The official ReqIF XSD: https://www.omg.org/spec/ReqIF/20110401/reqif.xsd.


Discussion / hints:

Fix patch:
diff --git a/pyproject.toml b/pyproject.toml
index 4a9c4a2..b1d6748 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -34,6 +34,7 @@ classifiers = [
 dependencies = [
     "lxml >= 4.6.2",
     "jinja2 >= 2.11.2",
+    "xmlschema >= 2.4.0",
 ]
 
 [project.optional-dependencies]
diff --git a/reqif/__init__.py b/reqif/__init__.py
index 2b6a10a..151f5d8 100644
--- a/reqif/__init__.py
+++ b/reqif/__init__.py
@@ -1,1 +1,7 @@
+import os.path
+
 __version__ = "0.0.37"
+
+PATH_TO_REQIF_ROOT = os.path.abspath(
+    os.path.join(os.path.dirname(__file__), os.pardir)
+)
diff --git a/reqif/cli/cli_arg_parser.py b/reqif/cli/cli_arg_parser.py
index 8e1f165..22e404e 100644
--- a/reqif/cli/cli_arg_parser.py
+++ b/reqif/cli/cli_arg_parser.py
@@ -76,12 +76,17 @@ def formatter(prog):
     # Command – Validate
     command_parser_validate = command_subparsers.add_parser(
         "validate",
-        help=("Read a ReqIF file and validate its content."),
+        help="Read a ReqIF file and validate its content.",
         formatter_class=formatter,
     )
     command_parser_validate.add_argument(
         "input_file", type=str, help="Path to an input ReqIF file"
     )
+    command_parser_validate.add_argument(
+        "--reqif-schema",
+        action="store_true",
+        help="Enable ReqIF schema validation.",
+    )
 
     # Command – Version
     command_subparsers.add_parser(
@@ -117,8 +122,9 @@ def __init__(self, input_file: str, output_file: str):
 
 
 class ValidateCommandConfig:
-    def __init__(self, input_file: str):
+    def __init__(self, input_file: str, reqif_schema: bool):
         self.input_file: str = input_file
+        self.reqif_schema: bool = reqif_schema
 
 
 class ReqIFArgsParser:
@@ -166,7 +172,9 @@ def get_format_config(self) -> FormatCommandConfig:
         return FormatCommandConfig(self.args.input_file, self.args.output_file)
 
     def get_validate_config(self) -> ValidateCommandConfig:
-        return ValidateCommandConfig(self.args.input_file)
+        return ValidateCommandConfig(
+            self.args.input_file, self.args.reqif_schema
+        )
 
 
 def create_reqif_args_parser(testing_args=None) -> ReqIFArgsParser:
diff --git a/reqif/commands/validate/validate.py b/reqif/commands/validate/validate.py
index fd667e5..0aaa84a 100644
--- a/reqif/commands/validate/validate.py
+++ b/reqif/commands/validate/validate.py
@@ -2,6 +2,9 @@
 import sys
 from typing import List
 
+import xmlschema
+
+from reqif import PATH_TO_REQIF_ROOT
 from reqif.cli.cli_arg_parser import ValidateCommandConfig
 from reqif.models.error_handling import (
     ReqIFGeneralSemanticError,
@@ -39,6 +42,21 @@ def execute(cls, config: ValidateCommandConfig):
             print(f"{message}: {input_file}")  # noqa: T201
             sys.exit(1)
 
+        if config.reqif_schema:
+            old_cwd = os.getcwd()
+            os.chdir(PATH_TO_REQIF_ROOT)
+            schema = xmlschema.XMLSchema(
+                os.path.join(
+                    PATH_TO_REQIF_ROOT,
+                    "reqif/reqif_schema/reqif.xsd",
+                ),
+                # FIXME: This parameter seems to have no effect, this is why
+                # we do os.chdir.
+                base_url=os.path.join(PATH_TO_REQIF_ROOT),
+            )
+            schema.validate(input_file)
+            os.chdir(old_cwd)
+
         error_bundle = ValidateCommand._validate(config)
         for xml_error in error_bundle.xml_errors:
             print(f"error: {xml_error}")  # noqa: T201
diff --git a/reqif/helpers/debug.py b/reqif/helpers/debug.py
index ada7b9b..88a57a6 100644
--- a/reqif/helpers/debug.py
+++ b/reqif/helpers/debug.py
@@ -36,12 +36,12 @@ def auto_str(obj: object) -> str:
     # breaking on the objects with recursive references:
     # Example: A -> B -> A.
     for prop, value in obj.__dict__.items():
-        if type(value) == list:  # pylint: disable=unidiomatic-typecheck
+        if isinstance(value, list):
             if len(value) == 0:
                 item = f"{prop} = []"
             else:
                 item = f"{prop} = [{len(value)} elements]"
-        elif type(value) == dict:  # pylint: disable=unidiomatic-typecheck
+        elif isinstance(value, dict):
             if len(value) == 0:
                 item = f"{prop} = {{}}"
             else:
diff --git a/reqif/reqif_schema/reqif.xsd b/reqif/reqif_schema/reqif.xsd
new file mode 100644
index 0000000..a0a5cf1
--- /dev/null
+++ b/reqif/reqif_schema/reqif.xsd
@@ -0,0 +1,893 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema
+    xmlns="http://www.w3.org/1999/xhtml" xmlns:REQIF="http://www.omg.org/spec/ReqIF/20110401/reqif.xsd"
+    xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xsd="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified"
+    elementFormDefault="qualified" targetNamespace="http://www.omg.org/spec/ReqIF/20110401/reqif.xsd">
+  <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+  <xsd:import namespace="http://www.w3.org/1999/xhtml" schemaLocation="reqif/reqif_schema/www.omg.org/spec/ReqIF/20110402/driver.xsd"/>
+  <xsd:element name="REQ-IF" type="REQIF:REQ-IF"/>
+  <xsd:simpleType name="LOCAL-REF">
+    <xsd:restriction base="xsd:IDREF"/>
+  </xsd:simpleType>
+  <xsd:simpleType name="GLOBAL-REF">
+    <xsd:restriction base="xsd:string"/>
+  </xsd:simpleType>
+  <xsd:complexType name="ALTERNATIVE-ID">
+    <xsd:all/>
+    <xsd:attribute name="IDENTIFIER" type="xsd:string" use="required"/>
+  </xsd:complexType>
+  <xsd:complexType name="ATTRIBUTE-DEFINITION-BOOLEAN">
+    <xsd:all>
+      <xsd:element maxOccurs="1" minOccurs="0" name="ALTERNATIVE-ID">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="0">
+            <xsd:element name="ALTERNATIVE-ID" type="REQIF:ALTERNATIVE-ID"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="0" name="DEFAULT-VALUE">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="0">
+            <xsd:element name="ATTRIBUTE-VALUE-BOOLEAN" type="REQIF:ATTRIBUTE-VALUE-BOOLEAN"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="1" name="TYPE">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="1">
+            <xsd:element name="DATATYPE-DEFINITION-BOOLEAN-REF" type="REQIF:LOCAL-REF"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+    </xsd:all>
+    <xsd:attribute name="DESC" type="xsd:string" use="optional"/>
+    <xsd:attribute name="IDENTIFIER" type="xsd:ID" use="required"/>
+    <xsd:attribute name="IS-EDITABLE" type="xsd:boolean" use="optional"/>
+    <xsd:attribute name="LAST-CHANGE" type="xsd:dateTime" use="required"/>
+    <xsd:attribute name="LONG-NAME" type="xsd:string" use="optional"/>
+  </xsd:complexType>
+  <xsd:complexType name="ATTRIBUTE-DEFINITION-DATE">
+    <xsd:all>
+      <xsd:element maxOccurs="1" minOccurs="0" name="ALTERNATIVE-ID">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="0">
+            <xsd:element name="ALTERNATIVE-ID" type="REQIF:ALTERNATIVE-ID"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="0" name="DEFAULT-VALUE">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="0">
+            <xsd:element name="ATTRIBUTE-VALUE-DATE" type="REQIF:ATTRIBUTE-VALUE-DATE"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="1" name="TYPE">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="1">
+            <xsd:element name="DATATYPE-DEFINITION-DATE-REF" type="REQIF:LOCAL-REF"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+    </xsd:all>
+    <xsd:attribute name="DESC" type="xsd:string" use="optional"/>
+    <xsd:attribute name="IDENTIFIER" type="xsd:ID" use="required"/>
+    <xsd:attribute name="IS-EDITABLE" type="xsd:boolean" use="optional"/>
+    <xsd:attribute name="LAST-CHANGE" type="xsd:dateTime" use="required"/>
+    <xsd:attribute name="LONG-NAME" type="xsd:string" use="optional"/>
+  </xsd:complexType>
+  <xsd:complexType name="ATTRIBUTE-DEFINITION-ENUMERATION">
+    <xsd:all>
+      <xsd:element maxOccurs="1" minOccurs="0" name="DEFAULT-VALUE">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="0">
+            <xsd:element name="ATTRIBUTE-VALUE-ENUMERATION" type="REQIF:ATTRIBUTE-VALUE-ENUMERATION"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="0" name="ALTERNATIVE-ID">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="0">
+            <xsd:element name="ALTERNATIVE-ID" type="REQIF:ALTERNATIVE-ID"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="1" name="TYPE">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="1">
+            <xsd:element name="DATATYPE-DEFINITION-ENUMERATION-REF" type="REQIF:LOCAL-REF"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+    </xsd:all>
+    <xsd:attribute name="DESC" type="xsd:string" use="optional"/>
+    <xsd:attribute name="IDENTIFIER" type="xsd:ID" use="required"/>
+    <xsd:attribute name="IS-EDITABLE" type="xsd:boolean" use="optional"/>
+    <xsd:attribute name="LAST-CHANGE" type="xsd:dateTime" use="required"/>
+    <xsd:attribute name="LONG-NAME" type="xsd:string" use="optional"/>
+    <xsd:attribute name="MULTI-VALUED" type="xsd:boolean" use="required"/>
+  </xsd:complexType>
+  <xsd:complexType name="ATTRIBUTE-DEFINITION-INTEGER">
+    <xsd:all>
+      <xsd:element maxOccurs="1" minOccurs="0" name="ALTERNATIVE-ID">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="0">
+            <xsd:element name="ALTERNATIVE-ID" type="REQIF:ALTERNATIVE-ID"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="0" name="DEFAULT-VALUE">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="0">
+            <xsd:element name="ATTRIBUTE-VALUE-INTEGER" type="REQIF:ATTRIBUTE-VALUE-INTEGER"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="1" name="TYPE">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="1">
+            <xsd:element name="DATATYPE-DEFINITION-INTEGER-REF" type="REQIF:LOCAL-REF"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+    </xsd:all>
+    <xsd:attribute name="DESC" type="xsd:string" use="optional"/>
+    <xsd:attribute name="IDENTIFIER" type="xsd:ID" use="required"/>
+    <xsd:attribute name="IS-EDITABLE" type="xsd:boolean" use="optional"/>
+    <xsd:attribute name="LAST-CHANGE" type="xsd:dateTime" use="required"/>
+    <xsd:attribute name="LONG-NAME" type="xsd:string" use="optional"/>
+  </xsd:complexType>
+  <xsd:complexType name="ATTRIBUTE-DEFINITION-REAL">
+    <xsd:all>
+      <xsd:element maxOccurs="1" minOccurs="0" name="ALTERNATIVE-ID">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="0">
+            <xsd:element name="ALTERNATIVE-ID" type="REQIF:ALTERNATIVE-ID"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="0" name="DEFAULT-VALUE">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="0">
+            <xsd:element name="ATTRIBUTE-VALUE-REAL" type="REQIF:ATTRIBUTE-VALUE-REAL"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="1" name="TYPE">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="1">
+            <xsd:element name="DATATYPE-DEFINITION-REAL-REF" type="REQIF:LOCAL-REF"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+    </xsd:all>
+    <xsd:attribute name="DESC" type="xsd:string" use="optional"/>
+    <xsd:attribute name="IDENTIFIER" type="xsd:ID" use="required"/>
+    <xsd:attribute name="IS-EDITABLE" type="xsd:boolean" use="optional"/>
+    <xsd:attribute name="LAST-CHANGE" type="xsd:dateTime" use="required"/>
+    <xsd:attribute name="LONG-NAME" type="xsd:string" use="optional"/>
+  </xsd:complexType>
+  <xsd:complexType name="ATTRIBUTE-DEFINITION-STRING">
+    <xsd:all>
+      <xsd:element maxOccurs="1" minOccurs="0" name="ALTERNATIVE-ID">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="0">
+            <xsd:element name="ALTERNATIVE-ID" type="REQIF:ALTERNATIVE-ID"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="0" name="DEFAULT-VALUE">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="0">
+            <xsd:element name="ATTRIBUTE-VALUE-STRING" type="REQIF:ATTRIBUTE-VALUE-STRING"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="1" name="TYPE">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="1">
+            <xsd:element name="DATATYPE-DEFINITION-STRING-REF" type="REQIF:LOCAL-REF"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+    </xsd:all>
+    <xsd:attribute name="DESC" type="xsd:string" use="optional"/>
+    <xsd:attribute name="IDENTIFIER" type="xsd:ID" use="required"/>
+    <xsd:attribute name="IS-EDITABLE" type="xsd:boolean" use="optional"/>
+    <xsd:attribute name="LAST-CHANGE" type="xsd:dateTime" use="required"/>
+    <xsd:attribute name="LONG-NAME" type="xsd:string" use="optional"/>
+  </xsd:complexType>
+  <xsd:complexType name="ATTRIBUTE-DEFINITION-XHTML">
+    <xsd:all>
+      <xsd:element maxOccurs="1" minOccurs="0" name="ALTERNATIVE-ID">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="0">
+            <xsd:element name="ALTERNATIVE-ID" type="REQIF:ALTERNATIVE-ID"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="0" name="DEFAULT-VALUE">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="0">
+            <xsd:element name="ATTRIBUTE-VALUE-XHTML" type="REQIF:ATTRIBUTE-VALUE-XHTML"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="1" name="TYPE">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="1">
+            <xsd:element name="DATATYPE-DEFINITION-XHTML-REF" type="REQIF:LOCAL-REF"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+    </xsd:all>
+    <xsd:attribute name="DESC" type="xsd:string" use="optional"/>
+    <xsd:attribute name="IDENTIFIER" type="xsd:ID" use="required"/>
+    <xsd:attribute name="IS-EDITABLE" type="xsd:boolean" use="optional"/>
+    <xsd:attribute name="LAST-CHANGE" type="xsd:dateTime" use="required"/>
+    <xsd:attribute name="LONG-NAME" type="xsd:string" use="optional"/>
+  </xsd:complexType>
+  <xsd:complexType name="ATTRIBUTE-VALUE-BOOLEAN">
+    <xsd:all>
+      <xsd:element maxOccurs="1" minOccurs="1" name="DEFINITION">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="1">
+            <xsd:element name="ATTRIBUTE-DEFINITION-BOOLEAN-REF" type="REQIF:LOCAL-REF"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+    </xsd:all>
+    <xsd:attribute name="THE-VALUE" type="xsd:boolean" use="required"/>
+  </xsd:complexType>
+  <xsd:complexType name="ATTRIBUTE-VALUE-DATE">
+    <xsd:all>
+      <xsd:element maxOccurs="1" minOccurs="1" name="DEFINITION">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="1">
+            <xsd:element name="ATTRIBUTE-DEFINITION-DATE-REF" type="REQIF:LOCAL-REF"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+    </xsd:all>
+    <xsd:attribute name="THE-VALUE" type="xsd:dateTime" use="required"/>
+  </xsd:complexType>
+  <xsd:complexType name="ATTRIBUTE-VALUE-ENUMERATION">
+    <xsd:all>
+      <xsd:element maxOccurs="1" minOccurs="1" name="DEFINITION">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="1">
+            <xsd:element name="ATTRIBUTE-DEFINITION-ENUMERATION-REF" type="REQIF:LOCAL-REF"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="0" name="VALUES">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="unbounded" minOccurs="0">
+            <xsd:element name="ENUM-VALUE-REF" type="REQIF:LOCAL-REF"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+    </xsd:all>
+  </xsd:complexType>
+  <xsd:complexType name="ATTRIBUTE-VALUE-INTEGER">
+    <xsd:all>
+      <xsd:element maxOccurs="1" minOccurs="1" name="DEFINITION">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="1">
+            <xsd:element name="ATTRIBUTE-DEFINITION-INTEGER-REF" type="REQIF:LOCAL-REF"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+    </xsd:all>
+    <xsd:attribute name="THE-VALUE" type="xsd:integer" use="required"/>
+  </xsd:complexType>
+  <xsd:complexType name="ATTRIBUTE-VALUE-REAL">
+    <xsd:all>
+      <xsd:element maxOccurs="1" minOccurs="1" name="DEFINITION">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="1">
+            <xsd:element name="ATTRIBUTE-DEFINITION-REAL-REF" type="REQIF:LOCAL-REF"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+    </xsd:all>
+    <xsd:attribute name="THE-VALUE" type="xsd:double" use="required"/>
+  </xsd:complexType>
+  <xsd:complexType name="ATTRIBUTE-VALUE-STRING">
+    <xsd:all>
+      <xsd:element maxOccurs="1" minOccurs="1" name="DEFINITION">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="1">
+            <xsd:element name="ATTRIBUTE-DEFINITION-STRING-REF" type="REQIF:LOCAL-REF"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+    </xsd:all>
+    <xsd:attribute name="THE-VALUE" type="xsd:string" use="required"/>
+  </xsd:complexType>
+  <xsd:complexType name="ATTRIBUTE-VALUE-XHTML">
+    <xsd:all>
+      <xsd:element maxOccurs="1" minOccurs="1" name="THE-VALUE" type="REQIF:XHTML-CONTENT"/>
+      <xsd:element maxOccurs="1" minOccurs="0" name="THE-ORIGINAL-VALUE" type="REQIF:XHTML-CONTENT"/>
+      <xsd:element maxOccurs="1" minOccurs="1" name="DEFINITION">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="1">
+            <xsd:element name="ATTRIBUTE-DEFINITION-XHTML-REF" type="REQIF:LOCAL-REF"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+    </xsd:all>
+    <xsd:attribute name="IS-SIMPLIFIED" type="xsd:boolean" use="optional"/>
+  </xsd:complexType>
+  <xsd:complexType name="DATATYPE-DEFINITION-BOOLEAN">
+    <xsd:all>
+      <xsd:element maxOccurs="1" minOccurs="0" name="ALTERNATIVE-ID">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="0">
+            <xsd:element name="ALTERNATIVE-ID" type="REQIF:ALTERNATIVE-ID"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+    </xsd:all>
+    <xsd:attribute name="DESC" type="xsd:string" use="optional"/>
+    <xsd:attribute name="IDENTIFIER" type="xsd:ID" use="required"/>
+    <xsd:attribute name="LAST-CHANGE" type="xsd:dateTime" use="required"/>
+    <xsd:attribute name="LONG-NAME" type="xsd:string" use="optional"/>
+  </xsd:complexType>
+  <xsd:complexType name="DATATYPE-DEFINITION-DATE">
+    <xsd:all>
+      <xsd:element maxOccurs="1" minOccurs="0" name="ALTERNATIVE-ID">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="0">
+            <xsd:element name="ALTERNATIVE-ID" type="REQIF:ALTERNATIVE-ID"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+    </xsd:all>
+    <xsd:attribute name="DESC" type="xsd:string" use="optional"/>
+    <xsd:attribute name="IDENTIFIER" type="xsd:ID" use="required"/>
+    <xsd:attribute name="LAST-CHANGE" type="xsd:dateTime" use="required"/>
+    <xsd:attribute name="LONG-NAME" type="xsd:string" use="optional"/>
+  </xsd:complexType>
+  <xsd:complexType name="DATATYPE-DEFINITION-ENUMERATION">
+    <xsd:all>
+      <xsd:element maxOccurs="1" minOccurs="0" name="ALTERNATIVE-ID">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="0">
+            <xsd:element name="ALTERNATIVE-ID" type="REQIF:ALTERNATIVE-ID"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="0" name="SPECIFIED-VALUES">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="unbounded" minOccurs="0">
+            <xsd:element name="ENUM-VALUE" type="REQIF:ENUM-VALUE"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+    </xsd:all>
+    <xsd:attribute name="DESC" type="xsd:string" use="optional"/>
+    <xsd:attribute name="IDENTIFIER" type="xsd:ID" use="required"/>
+    <xsd:attribute name="LAST-CHANGE" type="xsd:dateTime" use="required"/>
+    <xsd:attribute name="LONG-NAME" type="xsd:string" use="optional"/>
+  </xsd:complexType>
+  <xsd:complexType name="DATATYPE-DEFINITION-INTEGER">
+    <xsd:all>
+      <xsd:element maxOccurs="1" minOccurs="0" name="ALTERNATIVE-ID">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="0">
+            <xsd:element name="ALTERNATIVE-ID" type="REQIF:ALTERNATIVE-ID"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+    </xsd:all>
+    <xsd:attribute name="DESC" type="xsd:string" use="optional"/>
+    <xsd:attribute name="IDENTIFIER" type="xsd:ID" use="required"/>
+    <xsd:attribute name="LAST-CHANGE" type="xsd:dateTime" use="required"/>
+    <xsd:attribute name="LONG-NAME" type="xsd:string" use="optional"/>
+    <xsd:attribute name="MAX" type="xsd:integer" use="required"/>
+    <xsd:attribute name="MIN" type="xsd:integer" use="required"/>
+  </xsd:complexType>
+  <xsd:complexType name="DATATYPE-DEFINITION-REAL">
+    <xsd:all>
+      <xsd:element maxOccurs="1" minOccurs="0" name="ALTERNATIVE-ID">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="0">
+            <xsd:element name="ALTERNATIVE-ID" type="REQIF:ALTERNATIVE-ID"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+    </xsd:all>
+    <xsd:attribute name="ACCURACY" type="xsd:integer" use="required"/>
+    <xsd:attribute name="DESC" type="xsd:string" use="optional"/>
+    <xsd:attribute name="IDENTIFIER" type="xsd:ID" use="required"/>
+    <xsd:attribute name="LAST-CHANGE" type="xsd:dateTime" use="required"/>
+    <xsd:attribute name="LONG-NAME" type="xsd:string" use="optional"/>
+    <xsd:attribute name="MAX" type="xsd:double" use="required"/>
+    <xsd:attribute name="MIN" type="xsd:double" use="required"/>
+  </xsd:complexType>
+  <xsd:complexType name="DATATYPE-DEFINITION-STRING">
+    <xsd:all>
+      <xsd:element maxOccurs="1" minOccurs="0" name="ALTERNATIVE-ID">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="0">
+            <xsd:element name="ALTERNATIVE-ID" type="REQIF:ALTERNATIVE-ID"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+    </xsd:all>
+    <xsd:attribute name="DESC" type="xsd:string" use="optional"/>
+    <xsd:attribute name="IDENTIFIER" type="xsd:ID" use="required"/>
+    <xsd:attribute name="LAST-CHANGE" type="xsd:dateTime" use="required"/>
+    <xsd:attribute name="LONG-NAME" type="xsd:string" use="optional"/>
+    <xsd:attribute name="MAX-LENGTH" type="xsd:integer" use="required"/>
+  </xsd:complexType>
+  <xsd:complexType name="DATATYPE-DEFINITION-XHTML">
+    <xsd:all>
+      <xsd:element maxOccurs="1" minOccurs="0" name="ALTERNATIVE-ID">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="0">
+            <xsd:element name="ALTERNATIVE-ID" type="REQIF:ALTERNATIVE-ID"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+    </xsd:all>
+    <xsd:attribute name="DESC" type="xsd:string" use="optional"/>
+    <xsd:attribute name="IDENTIFIER" type="xsd:ID" use="required"/>
+    <xsd:attribute name="LAST-CHANGE" type="xsd:dateTime" use="required"/>
+    <xsd:attribute name="LONG-NAME" type="xsd:string" use="optional"/>
+  </xsd:complexType>
+  <xsd:complexType name="EMBEDDED-VALUE">
+    <xsd:all/>
+    <xsd:attribute name="KEY" type="xsd:integer" use="required"/>
+    <xsd:attribute name="OTHER-CONTENT" type="xsd:string" use="required"/>
+  </xsd:complexType>
+  <xsd:complexType name="ENUM-VALUE">
+    <xsd:all>
+      <xsd:element maxOccurs="1" minOccurs="0" name="ALTERNATIVE-ID">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="0">
+            <xsd:element name="ALTERNATIVE-ID" type="REQIF:ALTERNATIVE-ID"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="1" name="PROPERTIES">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="1">
+            <xsd:element name="EMBEDDED-VALUE" type="REQIF:EMBEDDED-VALUE"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+    </xsd:all>
+    <xsd:attribute name="DESC" type="xsd:string" use="optional"/>
+    <xsd:attribute name="IDENTIFIER" type="xsd:ID" use="required"/>
+    <xsd:attribute name="LAST-CHANGE" type="xsd:dateTime" use="required"/>
+    <xsd:attribute name="LONG-NAME" type="xsd:string" use="optional"/>
+  </xsd:complexType>
+  <xsd:complexType name="RELATION-GROUP">
+    <xsd:all>
+      <xsd:element maxOccurs="1" minOccurs="0" name="ALTERNATIVE-ID">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="0">
+            <xsd:element name="ALTERNATIVE-ID" type="REQIF:ALTERNATIVE-ID"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="1" name="SOURCE-SPECIFICATION">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="1">
+            <xsd:element name="SPECIFICATION-REF" type="REQIF:GLOBAL-REF"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="0" name="SPEC-RELATIONS">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="unbounded" minOccurs="0">
+            <xsd:element name="SPEC-RELATION-REF" type="REQIF:LOCAL-REF"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="1" name="TARGET-SPECIFICATION">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="1">
+            <xsd:element name="SPECIFICATION-REF" type="REQIF:GLOBAL-REF"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="1" name="TYPE">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="1">
+            <xsd:element name="RELATION-GROUP-TYPE-REF" type="REQIF:LOCAL-REF"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+    </xsd:all>
+    <xsd:attribute name="DESC" type="xsd:string" use="optional"/>
+    <xsd:attribute name="IDENTIFIER" type="xsd:ID" use="required"/>
+    <xsd:attribute name="LAST-CHANGE" type="xsd:dateTime" use="required"/>
+    <xsd:attribute name="LONG-NAME" type="xsd:string" use="optional"/>
+  </xsd:complexType>
+  <xsd:complexType name="RELATION-GROUP-TYPE">
+    <xsd:all>
+      <xsd:element maxOccurs="1" minOccurs="0" name="ALTERNATIVE-ID">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="0">
+            <xsd:element name="ALTERNATIVE-ID" type="REQIF:ALTERNATIVE-ID"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="0" name="SPEC-ATTRIBUTES">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="unbounded" minOccurs="0">
+            <xsd:element name="ATTRIBUTE-DEFINITION-BOOLEAN" type="REQIF:ATTRIBUTE-DEFINITION-BOOLEAN"/>
+            <xsd:element name="ATTRIBUTE-DEFINITION-DATE" type="REQIF:ATTRIBUTE-DEFINITION-DATE"/>
+            <xsd:element name="ATTRIBUTE-DEFINITION-ENUMERATION" type="REQIF:ATTRIBUTE-DEFINITION-ENUMERATION"/>
+            <xsd:element name="ATTRIBUTE-DEFINITION-INTEGER" type="REQIF:ATTRIBUTE-DEFINITION-INTEGER"/>
+            <xsd:element name="ATTRIBUTE-DEFINITION-REAL" type="REQIF:ATTRIBUTE-DEFINITION-REAL"/>
+            <xsd:element name="ATTRIBUTE-DEFINITION-STRING" type="REQIF:ATTRIBUTE-DEFINITION-STRING"/>
+            <xsd:element name="ATTRIBUTE-DEFINITION-XHTML" type="REQIF:ATTRIBUTE-DEFINITION-XHTML"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+    </xsd:all>
+    <xsd:attribute name="DESC" type="xsd:string" use="optional"/>
+    <xsd:attribute name="IDENTIFIER" type="xsd:ID" use="required"/>
+    <xsd:attribute name="LAST-CHANGE" type="xsd:dateTime" use="required"/>
+    <xsd:attribute name="LONG-NAME" type="xsd:string" use="optional"/>
+  </xsd:complexType>
+  <xsd:complexType name="REQ-IF">
+    <xsd:sequence>
+      <xsd:element maxOccurs="1" minOccurs="1" name="THE-HEADER">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="1">
+            <xsd:element name="REQ-IF-HEADER" type="REQIF:REQ-IF-HEADER"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="1" name="CORE-CONTENT">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="1">
+            <xsd:element name="REQ-IF-CONTENT" type="REQIF:REQ-IF-CONTENT"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="0" name="TOOL-EXTENSIONS">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="unbounded" minOccurs="0">
+            <xsd:element name="REQ-IF-TOOL-EXTENSION" type="REQIF:REQ-IF-TOOL-EXTENSION"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute ref="xml:lang" use="optional"/>
+  </xsd:complexType>
+  <xsd:complexType name="REQ-IF-CONTENT">
+    <xsd:sequence>
+      <xsd:element maxOccurs="1" minOccurs="0" name="DATATYPES">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="unbounded" minOccurs="0">
+            <xsd:element name="DATATYPE-DEFINITION-BOOLEAN" type="REQIF:DATATYPE-DEFINITION-BOOLEAN"/>
+            <xsd:element name="DATATYPE-DEFINITION-DATE" type="REQIF:DATATYPE-DEFINITION-DATE"/>
+            <xsd:element name="DATATYPE-DEFINITION-ENUMERATION" type="REQIF:DATATYPE-DEFINITION-ENUMERATION"/>
+            <xsd:element name="DATATYPE-DEFINITION-INTEGER" type="REQIF:DATATYPE-DEFINITION-INTEGER"/>
+            <xsd:element name="DATATYPE-DEFINITION-REAL" type="REQIF:DATATYPE-DEFINITION-REAL"/>
+            <xsd:element name="DATATYPE-DEFINITION-STRING" type="REQIF:DATATYPE-DEFINITION-STRING"/>
+            <xsd:element name="DATATYPE-DEFINITION-XHTML" type="REQIF:DATATYPE-DEFINITION-XHTML"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="0" name="SPEC-TYPES">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="unbounded" minOccurs="0">
+            <xsd:element name="RELATION-GROUP-TYPE" type="REQIF:RELATION-GROUP-TYPE"/>
+            <xsd:element name="SPEC-OBJECT-TYPE" type="REQIF:SPEC-OBJECT-TYPE"/>
+            <xsd:element name="SPEC-RELATION-TYPE" type="REQIF:SPEC-RELATION-TYPE"/>
+            <xsd:element name="SPECIFICATION-TYPE" type="REQIF:SPECIFICATION-TYPE"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="0" name="SPEC-OBJECTS">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="unbounded" minOccurs="0">
+            <xsd:element name="SPEC-OBJECT" type="REQIF:SPEC-OBJECT"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="0" name="SPEC-RELATIONS">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="unbounded" minOccurs="0">
+            <xsd:element name="SPEC-RELATION" type="REQIF:SPEC-RELATION"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="0" name="SPECIFICATIONS">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="unbounded" minOccurs="0">
+            <xsd:element name="SPECIFICATION" type="REQIF:SPECIFICATION"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="0" name="SPEC-RELATION-GROUPS">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="unbounded" minOccurs="0">
+            <xsd:element name="RELATION-GROUP" type="REQIF:RELATION-GROUP"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+    </xsd:sequence>
+  </xsd:complexType>
+  <xsd:complexType name="REQ-IF-HEADER">
+    <xsd:sequence>
+      <xsd:element maxOccurs="1" minOccurs="0" name="COMMENT" type="xsd:string"/>
+      <xsd:element maxOccurs="1" minOccurs="1" name="CREATION-TIME" type="xsd:dateTime"/>
+      <xsd:element maxOccurs="1" minOccurs="0" name="REPOSITORY-ID" type="xsd:string"/>
+      <xsd:element maxOccurs="1" minOccurs="1" name="REQ-IF-TOOL-ID" type="xsd:string"/>
+      <xsd:element fixed="1.0" maxOccurs="1" minOccurs="1" name="REQ-IF-VERSION" type="xsd:string"/>
+      <xsd:element maxOccurs="1" minOccurs="1" name="SOURCE-TOOL-ID" type="xsd:string"/>
+      <xsd:element maxOccurs="1" minOccurs="1" name="TITLE" type="xsd:string"/>
+    </xsd:sequence>
+    <xsd:attribute name="IDENTIFIER" type="xsd:ID" use="required"/>
+  </xsd:complexType>
+  <xsd:complexType name="SPEC-HIERARCHY">
+    <xsd:all>
+      <xsd:element maxOccurs="1" minOccurs="0" name="ALTERNATIVE-ID">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="0">
+            <xsd:element name="ALTERNATIVE-ID" type="REQIF:ALTERNATIVE-ID"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="0" name="CHILDREN">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="unbounded" minOccurs="0">
+            <xsd:element name="SPEC-HIERARCHY" type="REQIF:SPEC-HIERARCHY"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="0" name="EDITABLE-ATTS">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="unbounded" minOccurs="0">
+            <xsd:element name="ATTRIBUTE-DEFINITION-BOOLEAN-REF" type="REQIF:LOCAL-REF"/>
+            <xsd:element name="ATTRIBUTE-DEFINITION-DATE-REF" type="REQIF:LOCAL-REF"/>
+            <xsd:element name="ATTRIBUTE-DEFINITION-ENUMERATION-REF" type="REQIF:LOCAL-REF"/>
+            <xsd:element name="ATTRIBUTE-DEFINITION-INTEGER-REF" type="REQIF:LOCAL-REF"/>
+            <xsd:element name="ATTRIBUTE-DEFINITION-REAL-REF" type="REQIF:LOCAL-REF"/>
+            <xsd:element name="ATTRIBUTE-DEFINITION-STRING-REF" type="REQIF:LOCAL-REF"/>
+            <xsd:element name="ATTRIBUTE-DEFINITION-XHTML-REF" type="REQIF:LOCAL-REF"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="1" name="OBJECT">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="1">
+            <xsd:element name="SPEC-OBJECT-REF" type="REQIF:LOCAL-REF"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+    </xsd:all>
+    <xsd:attribute name="DESC" type="xsd:string" use="optional"/>
+    <xsd:attribute name="IDENTIFIER" type="xsd:ID" use="required"/>
+    <xsd:attribute name="IS-EDITABLE" type="xsd:boolean" use="optional"/>
+    <xsd:attribute name="IS-TABLE-INTERNAL" type="xsd:boolean" use="optional"/>
+    <xsd:attribute name="LAST-CHANGE" type="xsd:dateTime" use="required"/>
+    <xsd:attribute name="LONG-NAME" type="xsd:string" use="optional"/>
+  </xsd:complexType>
+  <xsd:complexType name="SPEC-OBJECT">
+    <xsd:all>
+      <xsd:element maxOccurs="1" minOccurs="0" name="ALTERNATIVE-ID">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="0">
+            <xsd:element name="ALTERNATIVE-ID" type="REQIF:ALTERNATIVE-ID"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="0" name="VALUES">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="unbounded" minOccurs="0">
+            <xsd:element name="ATTRIBUTE-VALUE-BOOLEAN" type="REQIF:ATTRIBUTE-VALUE-BOOLEAN"/>
+            <xsd:element name="ATTRIBUTE-VALUE-DATE" type="REQIF:ATTRIBUTE-VALUE-DATE"/>
+            <xsd:element name="ATTRIBUTE-VALUE-ENUMERATION" type="REQIF:ATTRIBUTE-VALUE-ENUMERATION"/>
+            <xsd:element name="ATTRIBUTE-VALUE-INTEGER" type="REQIF:ATTRIBUTE-VALUE-INTEGER"/>
+            <xsd:element name="ATTRIBUTE-VALUE-REAL" type="REQIF:ATTRIBUTE-VALUE-REAL"/>
+            <xsd:element name="ATTRIBUTE-VALUE-STRING" type="REQIF:ATTRIBUTE-VALUE-STRING"/>
+            <xsd:element name="ATTRIBUTE-VALUE-XHTML" type="REQIF:ATTRIBUTE-VALUE-XHTML"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="1" name="TYPE">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="1">
+            <xsd:element name="SPEC-OBJECT-TYPE-REF" type="REQIF:LOCAL-REF"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+    </xsd:all>
+    <xsd:attribute name="DESC" type="xsd:string" use="optional"/>
+    <xsd:attribute name="IDENTIFIER" type="xsd:ID" use="required"/>
+    <xsd:attribute name="LAST-CHANGE" type="xsd:dateTime" use="required"/>
+    <xsd:attribute name="LONG-NAME" type="xsd:string" use="optional"/>
+  </xsd:complexType>
+  <xsd:complexType name="SPEC-OBJECT-TYPE">
+    <xsd:all>
+      <xsd:element maxOccurs="1" minOccurs="0" name="ALTERNATIVE-ID">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="0">
+            <xsd:element name="ALTERNATIVE-ID" type="REQIF:ALTERNATIVE-ID"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="0" name="SPEC-ATTRIBUTES">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="unbounded" minOccurs="0">
+            <xsd:element name="ATTRIBUTE-DEFINITION-BOOLEAN" type="REQIF:ATTRIBUTE-DEFINITION-BOOLEAN"/>
+            <xsd:element name="ATTRIBUTE-DEFINITION-DATE" type="REQIF:ATTRIBUTE-DEFINITION-DATE"/>
+            <xsd:element name="ATTRIBUTE-DEFINITION-ENUMERATION" type="REQIF:ATTRIBUTE-DEFINITION-ENUMERATION"/>
+            <xsd:element name="ATTRIBUTE-DEFINITION-INTEGER" type="REQIF:ATTRIBUTE-DEFINITION-INTEGER"/>
+            <xsd:element name="ATTRIBUTE-DEFINITION-REAL" type="REQIF:ATTRIBUTE-DEFINITION-REAL"/>
+            <xsd:element name="ATTRIBUTE-DEFINITION-STRING" type="REQIF:ATTRIBUTE-DEFINITION-STRING"/>
+            <xsd:element name="ATTRIBUTE-DEFINITION-XHTML" type="REQIF:ATTRIBUTE-DEFINITION-XHTML"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+    </xsd:all>
+    <xsd:attribute name="DESC" type="xsd:string" use="optional"/>
+    <xsd:attribute name="IDENTIFIER" type="xsd:ID" use="required"/>
+    <xsd:attribute name="LAST-CHANGE" type="xsd:dateTime" use="required"/>
+    <xsd:attribute name="LONG-NAME" type="xsd:string" use="optional"/>
+  </xsd:complexType>
+  <xsd:complexType name="SPEC-RELATION">
+    <xsd:all>
+      <xsd:element maxOccurs="1" minOccurs="0" name="ALTERNATIVE-ID">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="0">
+            <xsd:element name="ALTERNATIVE-ID" type="REQIF:ALTERNATIVE-ID"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="0" name="VALUES">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="unbounded" minOccurs="0">
+            <xsd:element name="ATTRIBUTE-VALUE-BOOLEAN" type="REQIF:ATTRIBUTE-VALUE-BOOLEAN"/>
+            <xsd:element name="ATTRIBUTE-VALUE-DATE" type="REQIF:ATTRIBUTE-VALUE-DATE"/>
+            <xsd:element name="ATTRIBUTE-VALUE-ENUMERATION" type="REQIF:ATTRIBUTE-VALUE-ENUMERATION"/>
+            <xsd:element name="ATTRIBUTE-VALUE-INTEGER" type="REQIF:ATTRIBUTE-VALUE-INTEGER"/>
+            <xsd:element name="ATTRIBUTE-VALUE-REAL" type="REQIF:ATTRIBUTE-VALUE-REAL"/>
+            <xsd:element name="ATTRIBUTE-VALUE-STRING" type="REQIF:ATTRIBUTE-VALUE-STRING"/>
+            <xsd:element name="ATTRIBUTE-VALUE-XHTML" type="REQIF:ATTRIBUTE-VALUE-XHTML"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="1" name="SOURCE">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="1">
+            <xsd:element name="SPEC-OBJECT-REF" type="REQIF:GLOBAL-REF"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="1" name="TARGET">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="1">
+            <xsd:element name="SPEC-OBJECT-REF" type="REQIF:GLOBAL-REF"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="1" name="TYPE">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="1">
+            <xsd:element name="SPEC-RELATION-TYPE-REF" type="REQIF:LOCAL-REF"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+    </xsd:all>
+    <xsd:attribute name="DESC" type="xsd:string" use="optional"/>
+    <xsd:attribute name="IDENTIFIER" type="xsd:ID" use="required"/>
+    <xsd:attribute name="LAST-CHANGE" type="xsd:dateTime" use="required"/>
+    <xsd:attribute name="LONG-NAME" type="xsd:string" use="optional"/>
+  </xsd:complexType>
+  <xsd:complexType name="SPEC-RELATION-TYPE">
+    <xsd:all>
+      <xsd:element maxOccurs="1" minOccurs="0" name="ALTERNATIVE-ID">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="0">
+            <xsd:element name="ALTERNATIVE-ID" type="REQIF:ALTERNATIVE-ID"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="0" name="SPEC-ATTRIBUTES">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="unbounded" minOccurs="0">
+            <xsd:element name="ATTRIBUTE-DEFINITION-BOOLEAN" type="REQIF:ATTRIBUTE-DEFINITION-BOOLEAN"/>
+            <xsd:element name="ATTRIBUTE-DEFINITION-DATE" type="REQIF:ATTRIBUTE-DEFINITION-DATE"/>
+            <xsd:element name="ATTRIBUTE-DEFINITION-ENUMERATION" type="REQIF:ATTRIBUTE-DEFINITION-ENUMERATION"/>
+            <xsd:element name="ATTRIBUTE-DEFINITION-INTEGER" type="REQIF:ATTRIBUTE-DEFINITION-INTEGER"/>
+            <xsd:element name="ATTRIBUTE-DEFINITION-REAL" type="REQIF:ATTRIBUTE-DEFINITION-REAL"/>
+            <xsd:element name="ATTRIBUTE-DEFINITION-STRING" type="REQIF:ATTRIBUTE-DEFINITION-STRING"/>
+            <xsd:element name="ATTRIBUTE-DEFINITION-XHTML" type="REQIF:ATTRIBUTE-DEFINITION-XHTML"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+    </xsd:all>
+    <xsd:attribute name="DESC" type="xsd:string" use="optional"/>
+    <xsd:attribute name="IDENTIFIER" type="xsd:ID" use="required"/>
+    <xsd:attribute name="LAST-CHANGE" type="xsd:dateTime" use="required"/>
+    <xsd:attribute name="LONG-NAME" type="xsd:string" use="optional"/>
+  </xsd:complexType>
+  <xsd:complexType name="SPECIFICATION">
+    <xsd:all>
+      <xsd:element maxOccurs="1" minOccurs="0" name="ALTERNATIVE-ID">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="0">
+            <xsd:element name="ALTERNATIVE-ID" type="REQIF:ALTERNATIVE-ID"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="0" name="VALUES">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="unbounded" minOccurs="0">
+            <xsd:element name="ATTRIBUTE-VALUE-BOOLEAN" type="REQIF:ATTRIBUTE-VALUE-BOOLEAN"/>
+            <xsd:element name="ATTRIBUTE-VALUE-DATE" type="REQIF:ATTRIBUTE-VALUE-DATE"/>
+            <xsd:element name="ATTRIBUTE-VALUE-ENUMERATION" type="REQIF:ATTRIBUTE-VALUE-ENUMERATION"/>
+            <xsd:element name="ATTRIBUTE-VALUE-INTEGER" type="REQIF:ATTRIBUTE-VALUE-INTEGER"/>
+            <xsd:element name="ATTRIBUTE-VALUE-REAL" type="REQIF:ATTRIBUTE-VALUE-REAL"/>
+            <xsd:element name="ATTRIBUTE-VALUE-STRING" type="REQIF:ATTRIBUTE-VALUE-STRING"/>
+            <xsd:element name="ATTRIBUTE-VALUE-XHTML" type="REQIF:ATTRIBUTE-VALUE-XHTML"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="0" name="CHILDREN">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="unbounded" minOccurs="0">
+            <xsd:element name="SPEC-HIERARCHY" type="REQIF:SPEC-HIERARCHY"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="1" name="TYPE">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="1">
+            <xsd:element name="SPECIFICATION-TYPE-REF" type="REQIF:LOCAL-REF"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+    </xsd:all>
+    <xsd:attribute name="DESC" type="xsd:string" use="optional"/>
+    <xsd:attribute name="IDENTIFIER" type="xsd:ID" use="required"/>
+    <xsd:attribute name="LAST-CHANGE" type="xsd:dateTime" use="required"/>
+    <xsd:attribute name="LONG-NAME" type="xsd:string" use="optional"/>
+  </xsd:complexType>
+  <xsd:complexType name="SPECIFICATION-TYPE">
+    <xsd:all>
+      <xsd:element maxOccurs="1" minOccurs="0" name="ALTERNATIVE-ID">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="1" minOccurs="0">
+            <xsd:element name="ALTERNATIVE-ID" type="REQIF:ALTERNATIVE-ID"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+      <xsd:element maxOccurs="1" minOccurs="0" name="SPEC-ATTRIBUTES">
+        <xsd:complexType>
+          <xsd:choice maxOccurs="unbounded" minOccurs="0">
+            <xsd:element name="ATTRIBUTE-DEFINITION-BOOLEAN" type="REQIF:ATTRIBUTE-DEFINITION-BOOLEAN"/>
+            <xsd:element name="ATTRIBUTE-DEFINITION-DATE" type="REQIF:ATTRIBUTE-DEFINITION-DATE"/>
+            <xsd:element name="ATTRIBUTE-DEFINITION-ENUMERATION" type="REQIF:ATTRIBUTE-DEFINITION-ENUMERATION"/>
+            <xsd:element name="ATTRIBUTE-DEFINITION-INTEGER" type="REQIF:ATTRIBUTE-DEFINITION-INTEGER"/>
+            <xsd:element name="ATTRIBUTE-DEFINITION-REAL" type="REQIF:ATTRIBUTE-DEFINITION-REAL"/>
+            <xsd:element name="ATTRIBUTE-DEFINITION-STRING" type="REQIF:ATTRIBUTE-DEFINITION-STRING"/>
+            <xsd:element name="ATTRIBUTE-DEFINITION-XHTML" type="REQIF:ATTRIBUTE-DEFINITION-XHTML"/>
+          </xsd:choice>
+        </xsd:complexType>
+      </xsd:element>
+    </xsd:all>
+    <xsd:attribute name="DESC" type="xsd:string" use="optional"/>
+    <xsd:attribute name="IDENTIFIER" type="xsd:ID" use="required"/>
+    <xsd:attribute name="LAST-CHANGE" type="xsd:dateTime" use="required"/>
+    <xsd:attribute name="LONG-NAME" type="xsd:string" use="optional"/>
+  </xsd:complexType>
+  <xsd:complexType name="REQ-IF-TOOL-EXTENSION">
+    <xsd:sequence>
+      <xsd:any namespace="##other" processContents="lax" maxOccurs="unbounded" minOccurs="0"/>
+    </xsd:sequence>
+  </xsd:complexType>
+  <xsd:complexType name="XHTML-CONTENT">
+    <xsd:group ref="xhtml.BlkStruct.class"/>
+  </xsd:complexType>
+</xsd:schema>
\ No newline at end of file
diff --git a/reqif/reqif_schema/www.omg.org/spec/ReqIF/20110402/driver.xsd b/reqif/reqif_schema/www.omg.org/spec/ReqIF/20110402/driver.xsd
new file mode 100644
index 0000000..43854bb
--- /dev/null
+++ b/reqif/reqif_schema/www.omg.org/spec/ReqIF/20110402/driver.xsd
@@ -0,0 +1,270 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema
+    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+    targetNamespace="http://www.w3.org/1999/xhtml"
+    xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+    xmlns="http://www.w3.org/1999/xhtml"
+    elementFormDefault="qualified" >
+    
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd" />
+    
+    <xsd:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
+    	schemaLocation="reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-datatypes-1.xsd" />
+    	
+    <xsd:include schemaLocation="reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-framework-1.xsd" />
+    <xsd:include schemaLocation="reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-text-1.xsd" />
+    <xsd:include schemaLocation="reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-hypertext-1.xsd" />
+    <xsd:include schemaLocation="reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-list-1.xsd" />
+    <xsd:include schemaLocation="reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-edit-1.xsd" />
+    <xsd:include schemaLocation="reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-pres-1.xsd" />
+    <xsd:include schemaLocation="reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-inlstyle-1.xsd" />
+    <xsd:include schemaLocation="reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-object-1.xsd" />
+    <xsd:include schemaLocation="reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-table-1.xsd" />
+    
+    <xsd:attributeGroup name="xhtml.I18n.extra.attrib"/>
+    
+    <xsd:attributeGroup name="xhtml.Common.extra">
+        <xsd:attributeGroup ref="xhtml.style.attrib"/>
+    </xsd:attributeGroup>
+    
+    <xsd:attributeGroup name="xhtml.Core.extra.attrib"/>
+    
+    <xsd:attributeGroup name="xhtml.Global.core.extra.attrib"/>
+    
+    <xsd:attributeGroup name="xhtml.Global.I18n.extra.attrib"/>
+    
+    <xsd:attributeGroup name="xhtml.Global.Common.extra"/>
+    
+    <xsd:group name="xhtml.HeadOpts.mix">
+        <xsd:choice>
+            <xsd:element name="object" type="xhtml.object.type" />
+        </xsd:choice>
+    </xsd:group>
+    
+    <xsd:group name="xhtml.Edit.class">
+        <xsd:choice>
+            <xsd:element name="ins" type="xhtml.edit.type" />
+            <xsd:element name="del" type="xhtml.edit.type" />
+        </xsd:choice>
+    </xsd:group>
+    
+    <xsd:group name="xhtml.Misc.extra">
+        <xsd:sequence />
+    </xsd:group>
+    
+    <xsd:group name="xhtml.Misc.class">
+        <xsd:choice>
+            <xsd:group ref="xhtml.Edit.class" />
+            <xsd:group ref="xhtml.Misc.extra" />
+        </xsd:choice>
+    </xsd:group>
+    
+    <xsd:group name="xhtml.InlStruct.class">
+        <xsd:choice>
+            <xsd:element name="br" type="xhtml.br.type" />
+            <xsd:element name="span" type="xhtml.span.type" />
+        </xsd:choice>
+    </xsd:group>
+    
+    <xsd:group name="xhtml.InlPhras.class">
+        <xsd:choice>
+            <xsd:element name="em" type="xhtml.em.type" />
+            <xsd:element name="strong" type="xhtml.strong.type" />
+            <xsd:element name="dfn" type="xhtml.dfn.type" />
+            <xsd:element name="code" type="xhtml.code.type" />
+            <xsd:element name="samp" type="xhtml.samp.type" />
+            <xsd:element name="kbd" type="xhtml.kbd.type" />
+            <xsd:element name="var" type="xhtml.var.type" />
+            <xsd:element name="cite" type="xhtml.cite.type" />
+            <xsd:element name="abbr" type="xhtml.abbr.type" />
+            <xsd:element name="acronym" type="xhtml.acronym.type" />
+            <xsd:element name="q" type="xhtml.q.type" />
+        </xsd:choice>
+    </xsd:group>
+    
+    <xsd:group name="xhtml.InlPres.class">
+        <xsd:choice>
+            <xsd:element name="tt" type="xhtml.InlPres.type" />
+            <xsd:element name="i" type="xhtml.InlPres.type" />
+            <xsd:element name="b" type="xhtml.InlPres.type" />
+            <xsd:element name="big" type="xhtml.InlPres.type" />
+            <xsd:element name="small" type="xhtml.InlPres.type" />
+            <xsd:element name="sub" type="xhtml.InlPres.type" />
+            <xsd:element name="sup" type="xhtml.InlPres.type" />
+        </xsd:choice>
+    </xsd:group>
+    
+    <xsd:group name="xhtml.Anchor.class">
+        <xsd:sequence>
+            <xsd:element name="a" type="xhtml.a.type" />
+        </xsd:sequence>
+    </xsd:group>
+    
+    <xsd:group name="xhtml.InlSpecial.class">
+        <xsd:choice>
+            <xsd:element name="object" type="xhtml.object.type" />
+        </xsd:choice>
+    </xsd:group>
+    
+    <xsd:group name="xhtml.Inline.extra">
+        <xsd:sequence />
+    </xsd:group>
+    
+    <xsd:group name="xhtml.Inline.class">
+        <xsd:choice>
+            <xsd:group ref="xhtml.InlStruct.class" />
+            <xsd:group ref="xhtml.InlPhras.class" />
+            <xsd:group ref="xhtml.InlPres.class" />
+            <xsd:group ref="xhtml.Anchor.class" />
+            <xsd:group ref="xhtml.InlSpecial.class" />
+            <xsd:group ref="xhtml.Inline.extra" />
+        </xsd:choice>
+    </xsd:group>
+    
+    <xsd:group name="xhtml.InlNoRuby.class">
+        <xsd:choice>
+            <xsd:group ref="xhtml.InlStruct.class" />
+            <xsd:group ref="xhtml.InlPhras.class" />
+            <xsd:group ref="xhtml.InlPres.class" />
+            <xsd:group ref="xhtml.Anchor.class" />
+            <xsd:group ref="xhtml.InlSpecial.class" />
+            <xsd:group ref="xhtml.Inline.extra" />
+        </xsd:choice>
+    </xsd:group>
+    
+    <xsd:group name="xhtml.InlinePre.mix">
+        <xsd:choice>
+            <xsd:group ref="xhtml.InlStruct.class" />
+            <xsd:group ref="xhtml.InlPhras.class" />
+            <xsd:element name="tt" type="xhtml.InlPres.type" />
+            <xsd:element name="i" type="xhtml.InlPres.type" />
+            <xsd:element name="b" type="xhtml.InlPres.type" />
+            <xsd:group ref="xhtml.Anchor.class" />
+            <xsd:group ref="xhtml.Misc.class" />
+            <xsd:group ref="xhtml.Inline.extra" />
+        </xsd:choice>
+    </xsd:group>
+    
+    <xsd:group name="xhtml.InlNoAnchor.class">
+        <xsd:choice>
+            <xsd:group ref="xhtml.InlStruct.class" />
+            <xsd:group ref="xhtml.InlPhras.class" />
+            <xsd:group ref="xhtml.InlPres.class" />
+            <xsd:group ref="xhtml.InlSpecial.class" />
+            <xsd:group ref="xhtml.Inline.extra" />
+        </xsd:choice>
+    </xsd:group>
+    
+    <xsd:group name="xhtml.InlNoAnchor.mix">
+        <xsd:choice>
+            <xsd:group ref="xhtml.InlNoAnchor.class" />
+            <xsd:group ref="xhtml.Misc.class" />
+        </xsd:choice>
+    </xsd:group>
+    
+    <xsd:group name="xhtml.Inline.mix">
+        <xsd:choice>
+            <xsd:group ref="xhtml.Inline.class" />
+            <xsd:group ref="xhtml.Misc.class" />
+        </xsd:choice>
+    </xsd:group>
+    
+    <xsd:group name="xhtml.Heading.class">
+        <xsd:choice>
+            <xsd:element name="h1" type="xhtml.h1.type" />
+            <xsd:element name="h2" type="xhtml.h2.type" />
+            <xsd:element name="h3" type="xhtml.h3.type" />
+            <xsd:element name="h4" type="xhtml.h4.type" />
+            <xsd:element name="h5" type="xhtml.h5.type" />
+            <xsd:element name="h6" type="xhtml.h6.type" />
+        </xsd:choice>
+    </xsd:group>
+    
+    <xsd:group name="xhtml.List.class">
+        <xsd:choice>
+            <xsd:element name="ul" type="xhtml.ul.type" />
+            <xsd:element name="ol" type="xhtml.ol.type" />
+            <xsd:element name="dl" type="xhtml.dl.type" />
+        </xsd:choice>
+    </xsd:group>
+    
+    <xsd:group name="xhtml.Table.class">
+        <xsd:choice>
+            <xsd:element name="table" type="xhtml.table.type" />
+        </xsd:choice>
+    </xsd:group>
+    
+    <xsd:group name="xhtml.BlkStruct.class">
+        <xsd:choice>
+            <xsd:element name="p" type="xhtml.p.type" />
+            <xsd:element name="div" type="xhtml.div.type" />
+        </xsd:choice>
+    </xsd:group>
+    
+    <xsd:group name="xhtml.BlkPhras.class">
+        <xsd:choice>
+            <xsd:element name="pre" type="xhtml.pre.type" />
+            <xsd:element name="blockquote" type="xhtml.blockquote.type" />
+            <xsd:element name="address" type="xhtml.address.type" />
+        </xsd:choice>
+    </xsd:group>
+    
+    <xsd:group name="xhtml.BlkPres.class">
+        <xsd:sequence>
+            <xsd:element name="hr" type="xhtml.hr.type" />
+        </xsd:sequence>
+    </xsd:group>
+    
+    <xsd:group name="xhtml.BlkSpecial.class">
+        <xsd:choice>
+            <xsd:group ref="xhtml.Table.class" />
+        </xsd:choice>
+    </xsd:group>
+    
+    <xsd:group name="xhtml.Block.extra">
+        <xsd:sequence />
+    </xsd:group>
+    
+    <xsd:group name="xhtml.Block.class">
+        <xsd:choice>
+            <xsd:group ref="xhtml.BlkStruct.class" />
+            <xsd:group ref="xhtml.BlkPhras.class" />
+            <xsd:group ref="xhtml.BlkPres.class" />
+            <xsd:group ref="xhtml.BlkSpecial.class" />
+            <xsd:group ref="xhtml.Block.extra" />
+        </xsd:choice>
+    </xsd:group>
+    
+    <xsd:group name="xhtml.Block.mix">
+        <xsd:choice>
+            <xsd:group ref="xhtml.Heading.class" />
+            <xsd:group ref="xhtml.List.class" />
+            <xsd:group ref="xhtml.Block.class" />
+            <xsd:group ref="xhtml.Misc.class" />
+        </xsd:choice>
+    </xsd:group>
+    
+    <xsd:group name="xhtml.Flow.mix">
+        <xsd:choice>
+            <xsd:group ref="xhtml.Heading.class" />
+            <xsd:group ref="xhtml.List.class" />
+            <xsd:group ref="xhtml.Block.class" />
+            <xsd:group ref="xhtml.Inline.class" />
+            <xsd:group ref="xhtml.Misc.class" />
+        </xsd:choice>
+    </xsd:group>
+    
+    <xsd:group name="xhtml.BlkNoForm.mix">
+        <xsd:choice>
+            <xsd:group ref="xhtml.Heading.class" />
+            <xsd:group ref="xhtml.List.class" />
+            <xsd:group ref="xhtml.BlkStruct.class" />
+            <xsd:group ref="xhtml.BlkPhras.class" />
+            <xsd:group ref="xhtml.BlkPres.class" />
+            <xsd:group ref="xhtml.Table.class" />
+            <xsd:group ref="xhtml.Block.extra" />
+            <xsd:group ref="xhtml.Misc.class" />
+        </xsd:choice>
+    </xsd:group>
+    
+</xsd:schema>
diff --git a/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-attribs-1.xsd b/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-attribs-1.xsd
new file mode 100644
index 0000000..aef2f92
--- /dev/null
+++ b/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-attribs-1.xsd
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+>
+    <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
+               schemaLocation="xhtml-datatypes-1.xsd" />
+
+    <xs:annotation>
+        <xs:documentation>
+      This is the XML Schema common attributes module for XHTML
+      $Id: xhtml-attribs-1.xsd,v 1.1 2018/03/20 04:13:56 plehegar Exp $
+    </xs:documentation>
+        <xs:documentation source="xhtml-copyright-1.xsd"/>
+        <xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_commonatts"/>
+    </xs:annotation>
+  <xs:import namespace="http://www.w3.org/XML/1998/namespace"
+             schemaLocation="http://www.w3.org/2001/xml.xsd">
+        <xs:annotation>
+            <xs:documentation>
+        This import brings in the XML namespace attributes
+        The module itself does not provide the schemaLocation
+        and expects the driver schema to provide the
+        actual SchemaLocation.
+      </xs:documentation>
+        </xs:annotation>
+    </xs:import>
+    <xs:attributeGroup name="xhtml.id">
+        <xs:attribute name="id" type="xs:ID"/>
+    </xs:attributeGroup>
+    <xs:attributeGroup name="xhtml.class">
+        <xs:attribute name="class" type="xs:string"/>
+    </xs:attributeGroup>
+    <xs:attributeGroup name="xhtml.title">
+        <xs:attribute name="title" type="xs:string"/>
+    </xs:attributeGroup>
+    <xs:attributeGroup name="xhtml.Core.attrib">
+        <xs:attribute ref="xml:space" fixed="preserve"/>
+        <xs:attributeGroup ref="xhtml.id"/>
+        <xs:attributeGroup ref="xhtml.class"/>
+        <xs:attributeGroup ref="xhtml.title"/>
+        <xs:attributeGroup ref="xhtml.Core.extra.attrib"/>
+    </xs:attributeGroup>
+    <xs:attributeGroup name="xhtml.I18n.attrib">
+        <xs:attribute ref="xml:lang" />
+        <xs:attributeGroup ref="xhtml.I18n.extra.attrib"/>
+    </xs:attributeGroup>
+    <xs:attributeGroup name="xhtml.Common.attrib">
+        <xs:attributeGroup ref="xhtml.Core.attrib"/>
+        <xs:attributeGroup ref="xhtml.I18n.attrib"/>
+        <xs:attributeGroup ref="xhtml.Common.extra"/>
+    </xs:attributeGroup>
+    <!-- Global attributes -->
+    <xs:attribute name="id" type="xs:ID"/>
+    <xs:attribute name="class" type="xs:string"/>
+    <xs:attribute name="title" type="xs:string"/>
+    <xs:attributeGroup name="xhtml.Global.core.attrib">
+        <xs:attribute ref="id"/>
+        <xs:attribute ref="class"/>
+        <xs:attribute ref="title"/>
+        <xs:attributeGroup ref="xhtml.Global.core.extra.attrib" />
+    </xs:attributeGroup>
+    <xs:attributeGroup name="xhtml.Global.i18n.attrib">
+        <xs:attribute ref="xml:lang" />
+        <xs:attributeGroup ref="xhtml.Global.I18n.extra.attrib"/>
+    </xs:attributeGroup>
+    <xs:attributeGroup name="xhtml.Global.common.attrib">
+        <xs:attributeGroup ref="xhtml.Global.core.attrib"/>
+        <xs:attributeGroup ref="xhtml.Global.i18n.attrib"/>
+        <xs:attributeGroup ref="xhtml.Global.Common.extra"/>
+    </xs:attributeGroup>
+</xs:schema>
diff --git a/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-blkphras-1.xsd b/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-blkphras-1.xsd
new file mode 100644
index 0000000..00cd01f
--- /dev/null
+++ b/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-blkphras-1.xsd
@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+>
+    <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" schemaLocation="xhtml-datatypes-1.xsd" />
+
+    <xs:include schemaLocation="xhtml-attribs-1.xsd" />
+
+    <xs:annotation>
+        <xs:documentation>
+          This is the XML Schema Block Phrasal support module for XHTML
+          $Id: xhtml-blkphras-1.xsd,v 1.1 2018/03/20 04:13:57 plehegar Exp $
+       </xs:documentation>
+        <xs:documentation source="xhtml-copyright-1.xsd"/>
+    </xs:annotation>
+    <xs:annotation>
+        <xs:documentation>
+           Block Phrasal
+           This module declares the elements and their attributes used to
+           support block-level phrasal markup.
+           This is the XML Schema block phrasal elements module for XHTML
+
+            * address, blockquote, pre, h1, h2, h3, h4, h5, h6
+      </xs:documentation>
+        <xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_textmodule"/>
+    </xs:annotation>
+  <xs:import namespace="http://www.w3.org/XML/1998/namespace"
+             schemaLocation="http://www.w3.org/2001/xml.xsd">
+        <xs:annotation>
+            <xs:documentation>
+          This import brings in the XML namespace attributes 
+          The module itself does not provide the schemaLocation
+          and expects the driver schema to provide the 
+          actual SchemaLocation.
+        </xs:documentation>
+        </xs:annotation>
+    </xs:import>
+    <!-- address -->
+    <xs:attributeGroup name="xhtml.address.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.address.content">
+        <xs:sequence>
+            <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:group>
+    <xs:complexType name="xhtml.address.type" mixed="true">
+        <xs:group ref="xhtml.address.content"/>
+        <xs:attributeGroup ref="xhtml.address.attlist"/>
+    </xs:complexType>
+    <!-- blockquote -->
+    <xs:attributeGroup name="xhtml.blockquote.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+        <xs:attribute name="cite" type="xh11d:URI"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.blockquote.content">
+        <xs:sequence>
+            <xs:group ref="xhtml.Block.mix" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:group>
+    <xs:complexType name="xhtml.blockquote.type">
+        <xs:group ref="xhtml.blockquote.content"/>
+        <xs:attributeGroup ref="xhtml.blockquote.attlist"/>
+    </xs:complexType>
+    <!-- pre -->
+    <xs:attributeGroup name="xhtml.pre.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.pre.content">
+        <xs:sequence>
+            <xs:group ref="xhtml.InlinePre.mix" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:group>
+    <xs:complexType name="xhtml.pre.type" mixed="true">
+        <xs:group ref="xhtml.pre.content"/>
+        <xs:attributeGroup ref="xhtml.pre.attlist"/>
+    </xs:complexType>
+    <!-- Heading Elements  -->
+    <xs:attributeGroup name="xhtml.heading.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+    </xs:attributeGroup>
+    <xs:complexType name="xhtml.heading.type" mixed="true">
+        <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:attributeGroup ref="xhtml.heading.attlist"/>
+    </xs:complexType>
+    <xs:attributeGroup name="xhtml.h1.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.h1.content">
+        <xs:sequence>
+            <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:group>
+    <xs:complexType name="xhtml.h1.type" mixed="true">
+        <xs:group ref="xhtml.h1.content"/>
+        <xs:attributeGroup ref="xhtml.h1.attlist"/>
+    </xs:complexType>
+    <xs:attributeGroup name="xhtml.h2.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.h2.content">
+        <xs:sequence>
+            <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:group>
+    <xs:complexType name="xhtml.h2.type" mixed="true">
+        <xs:group ref="xhtml.h2.content"/>
+        <xs:attributeGroup ref="xhtml.h2.attlist"/>
+    </xs:complexType>
+    <xs:attributeGroup name="xhtml.h3.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.h3.content">
+        <xs:sequence>
+            <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:group>
+    <xs:complexType name="xhtml.h3.type" mixed="true">
+        <xs:group ref="xhtml.h3.content"/>
+        <xs:attributeGroup ref="xhtml.h3.attlist"/>
+    </xs:complexType>
+    <xs:attributeGroup name="xhtml.h4.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.h4.content">
+        <xs:sequence>
+            <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:group>
+    <xs:complexType name="xhtml.h4.type" mixed="true">
+        <xs:group ref="xhtml.h4.content"/>
+        <xs:attributeGroup ref="xhtml.h4.attlist"/>
+    </xs:complexType>
+    <xs:attributeGroup name="xhtml.h5.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.h5.content">
+        <xs:sequence>
+            <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:group>
+    <xs:complexType name="xhtml.h5.type" mixed="true">
+        <xs:group ref="xhtml.h5.content"/>
+        <xs:attributeGroup ref="xhtml.h5.attlist"/>
+    </xs:complexType>
+    <xs:attributeGroup name="xhtml.h6.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.h6.content">
+        <xs:sequence>
+            <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:group>
+    <xs:complexType name="xhtml.h6.type" mixed="true">
+        <xs:group ref="xhtml.h6.content"/>
+        <xs:attributeGroup ref="xhtml.h6.attlist"/>
+    </xs:complexType>
+</xs:schema>
diff --git a/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-blkpres-1.xsd b/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-blkpres-1.xsd
new file mode 100644
index 0000000..a142f28
--- /dev/null
+++ b/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-blkpres-1.xsd
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+>
+    <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
+               schemaLocation="xhtml-datatypes-1.xsd" />
+    <xs:annotation>
+        <xs:documentation>
+      This is the XML SchemaBlock presentation element module for XHTML
+      $Id: xhtml-blkpres-1.xsd,v 1.1 2018/03/20 04:13:57 plehegar Exp $
+    </xs:documentation>
+    </xs:annotation>
+    <xs:annotation>
+        <xs:documentation>
+      Block Presentational Elements
+  
+        * hr
+  
+      This module declares the elements and their attributes used to
+      support block-level presentational markup.
+    </xs:documentation>
+        <xs:documentation source="xhtml-copyright-1.xsd"/>
+        <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_presentationmodule"/>
+    </xs:annotation>
+    <xs:attributeGroup name="xhtml.hr.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.hr.content">
+        <xs:sequence/>
+    </xs:group>
+    <xs:complexType name="xhtml.hr.type">
+        <xs:group ref="xhtml.hr.content"/>
+        <xs:attributeGroup ref="xhtml.hr.attlist"/>
+    </xs:complexType>
+</xs:schema>
diff --git a/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-blkstruct-1.xsd b/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-blkstruct-1.xsd
new file mode 100644
index 0000000..727f888
--- /dev/null
+++ b/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-blkstruct-1.xsd
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+>
+    <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
+               schemaLocation="xhtml-datatypes-1.xsd" />
+    <xs:annotation>
+        <xs:documentation>
+      Block Structural
+
+        * div, p
+  
+      This module declares the elements and their attributes used to
+      support block-level structural markup.            
+          
+      This is the XML Schema Block Structural module for XHTML
+      $Id: xhtml-blkstruct-1.xsd,v 1.1 2018/03/20 04:13:58 plehegar Exp $
+    </xs:documentation>
+        <xs:documentation source="xhtml-copyright-1.xsd"/>
+    </xs:annotation>
+    <!-- div -->
+    <xs:attributeGroup name="xhtml.div.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.div.content">
+        <xs:sequence>
+            <xs:group ref="xhtml.Flow.mix" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:group>
+    <xs:complexType name="xhtml.div.type" mixed="true">
+        <xs:group ref="xhtml.div.content"/>
+        <xs:attributeGroup ref="xhtml.div.attlist"/>
+    </xs:complexType>
+    <!-- p -->
+    <xs:attributeGroup name="xhtml.p.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.p.content">
+        <xs:sequence>
+            <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:group>
+    <xs:complexType name="xhtml.p.type" mixed="true">
+        <xs:group ref="xhtml.p.content"/>
+        <xs:attributeGroup ref="xhtml.p.attlist"/>
+    </xs:complexType>
+</xs:schema>
diff --git a/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-datatypes-1.xsd b/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-datatypes-1.xsd
new file mode 100644
index 0000000..d4d98fa
--- /dev/null
+++ b/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-datatypes-1.xsd
@@ -0,0 +1,184 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns="http://www.w3.org/1999/xhtml/datatypes/"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+ targetNamespace="http://www.w3.org/1999/xhtml/datatypes/"
+ elementFormDefault="qualified"
+>
+    <xs:annotation>
+        <xs:documentation>
+          XHTML Datatypes
+          This is the XML Schema datatypes module for XHTML
+          
+          Defines containers for the XHTML datatypes, many of
+          these imported from other specifications and standards.
+          
+          $Id: xhtml-datatypes-1.xsd,v 1.1 2018/03/20 04:13:58 plehegar Exp $
+        </xs:documentation>
+        <xs:documentation source="xhtml-copyright-1.xsd"/>
+        <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstraction.html#s_common_attrtypes"/>
+    </xs:annotation>
+
+    <!-- nn for pixels or nn% for percentage length -->
+    <xs:simpleType name="Length">
+        <xs:union memberTypes="xs:nonNegativeInteger">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:pattern value="\d+[%]|\d*\.\d+[%]"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:union>
+    </xs:simpleType>
+    <!-- space-separated list of link types -->
+    <xs:simpleType name="LinkTypes">
+        <xs:list itemType="xs:NMTOKEN"/>
+    </xs:simpleType>
+    <!-- single or comma-separated list of media descriptors -->
+    <xs:simpleType name="MediaDesc">
+        <xs:restriction base="xs:string"/>
+    </xs:simpleType>
+    <!-- pixel, percentage, or relative -->
+    <xs:simpleType name="MultiLength">
+        <xs:union memberTypes="xh11d:Length">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:pattern value="\d*\*"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:union>
+    </xs:simpleType>
+    <!-- one or more digits (NUMBER) -->
+    <xs:simpleType name="Number">
+        <xs:restriction base="xs:nonNegativeInteger"/>
+    </xs:simpleType>
+    <!-- integer representing length in pixels -->
+    <xs:simpleType name="Pixels">
+        <xs:restriction base="xs:nonNegativeInteger"/>
+    </xs:simpleType>
+    <!-- script expression -->
+    <xs:simpleType name="Script">
+        <xs:restriction base="xs:string"/>
+    </xs:simpleType>
+    <!-- sixteen color names or RGB color expression-->
+    <xs:simpleType name="Color">
+        <xs:union memberTypes="xs:NMTOKEN">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:pattern value="#[0-9a-fA-F]{3}([0-9a-fA-F]{3})?"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:union>
+    </xs:simpleType>
+    <!-- textual content -->
+    <xs:simpleType name="Text">
+        <xs:restriction base="xs:string"/>
+    </xs:simpleType>
+    <!-- Imported Datatypes  -->
+    <!-- a single character, as per section 2.2 of [XML] -->
+    <xs:simpleType name="Character">
+        <xs:restriction base="xs:string">
+            <xs:length value="1" fixed="true"/>
+        </xs:restriction>
+    </xs:simpleType>
+    <!-- a character encoding, as per [RFC2045] -->
+    <xs:simpleType name="Charset">
+        <xs:restriction base="xs:string"/>
+    </xs:simpleType>
+    <!-- a space separated list of character encodings, as per [RFC2045] -->
+    <xs:simpleType name="Charsets">
+        <xs:list itemType="Charset"/>
+    </xs:simpleType>
+    <!-- media type, as per [RFC2045] -->
+    <xs:simpleType name="ContentType">
+        <xs:restriction base="xs:string"/>
+    </xs:simpleType>
+    <!-- comma-separated list of media types, as per [RFC2045] -->
+    <xs:simpleType name="ContentTypes">
+        <xs:restriction base="xs:string"/>
+    </xs:simpleType>
+    <!-- date and time information. ISO date format -->
+    <xs:simpleType name="Datetime">
+        <xs:restriction base="xs:dateTime"/>
+    </xs:simpleType>
+    <!-- formal public identifier, as per [ISO8879] -->
+    <xs:simpleType name="FPI">
+        <xs:restriction base="xs:normalizedString"/>
+    </xs:simpleType>
+
+    <!-- a window name as used in the target attribute -->
+    <xs:simpleType name="FrameTarget">
+      <xs:union>
+        <xs:simpleType>
+          <xs:restriction base="xs:NMTOKEN">
+            <xs:enumeration value="_blank"/>
+            <xs:enumeration value="_self"/>
+            <xs:enumeration value="_parent"/>
+            <xs:enumeration value="_top"/>
+          </xs:restriction>
+        </xs:simpleType>
+        <xs:simpleType>
+          <xs:restriction base="xs:string">
+            <xs:pattern value="[a-zA-Z].*"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:union>
+    </xs:simpleType>
+    
+    <!-- a language code, as per [RFC3066] -->
+    <xs:simpleType name="LanguageCode">
+        <xs:restriction base="xs:language"/>
+    </xs:simpleType>
+    <!-- a comma separated list of language ranges -->
+    <xs:simpleType name="LanguageCodes">
+        <xs:restriction base="xs:string"/>
+    </xs:simpleType>
+    <!-- a Uniform Resource Identifier, see [URI] -->
+    <xs:simpleType name="URI">
+        <xs:restriction base="xs:anyURI"/>
+    </xs:simpleType>
+    <!-- a space-separated list of Uniform Resource Identifiers, see [URI] -->
+    <xs:simpleType name="URIs">
+        <xs:list itemType="xs:anyURI"/>
+    </xs:simpleType>
+    <!-- a relative URI reference to a fragment ID -->
+    <xs:simpleType name="URIREF">
+        <xs:restriction base="xs:string">
+            <xs:pattern value="#\c*" />
+            <xs:minLength value="1"/>
+        </xs:restriction>
+    </xs:simpleType> 
+    <!-- comma-separated list of MultiLength -->
+    <xs:simpleType name="MultiLengths">
+        <xs:restriction base="xs:string"/>
+    </xs:simpleType>
+    <!-- character Data -->
+    <xs:simpleType name="CDATA">
+        <xs:restriction base="xs:string"/>
+    </xs:simpleType>
+    <!-- CURIE placeholder datatypes -->
+    <xs:simpleType name="CURIE">
+        <xs:restriction base="xs:string">
+            <xs:pattern value="(([\i-[:]][\c-[:]]*)?:)?.+" />
+            <xs:minLength value="1"/>
+        </xs:restriction>
+    </xs:simpleType> 
+    <xs:simpleType name="CURIEs">
+        <xs:list itemType="xh11d:CURIE"/>
+    </xs:simpleType>
+    <xs:simpleType name="SafeCURIE">
+    <xs:restriction base="xs:string">
+        <xs:pattern value="\[(([\i-[:]][\c-[:]]*)?:)?.+\]" />
+        <xs:minLength value="3"/>
+    </xs:restriction>
+    </xs:simpleType>
+    <xs:simpleType name="SafeCURIEs">
+        <xs:list itemType="xh11d:SafeCURIE"/>
+    </xs:simpleType>
+    <xs:simpleType name="URIorSafeCURIE">
+        <xs:union memberTypes="xs:anyURI xh11d:SafeCURIE" />
+    </xs:simpleType>
+    <xs:simpleType name="URIorSafeCURIEs">
+        <xs:list itemType="xh11d:URIorSafeCURIE"/>
+    </xs:simpleType>
+</xs:schema>
diff --git a/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-edit-1.xsd b/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-edit-1.xsd
new file mode 100644
index 0000000..5a8d6d5
--- /dev/null
+++ b/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-edit-1.xsd
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+>
+    <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
+               schemaLocation="xhtml-datatypes-1.xsd" />
+
+    <xs:annotation>
+        <xs:documentation>
+          Editing Elements
+          This is the XML Schema Editing Markup module for XHTML
+
+           * ins, del
+  
+         This module declares element types and attributes used to indicate
+         inserted and deleted content while editing a document.
+
+          $Id: xhtml-edit-1.xsd,v 1.1 2018/03/20 04:13:58 plehegar Exp $
+        </xs:documentation>
+        <xs:documentation source="xhtml-copyright-1.xsd"/>
+        <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_editmodule"/>
+    </xs:annotation>
+    <xs:attributeGroup name="xhtml.edit.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+        <xs:attribute name="cite" type="xh11d:URI"/>
+        <xs:attribute name="datetime" type="xh11d:Datetime"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.edit.content">
+        <xs:sequence>
+            <xs:group ref="xhtml.Flow.mix" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:group>
+    <xs:complexType name="xhtml.edit.type" mixed="true">
+        <xs:group ref="xhtml.edit.content"/>
+        <xs:attributeGroup ref="xhtml.edit.attlist"/>
+    </xs:complexType>
+</xs:schema>
diff --git a/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-framework-1.xsd b/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-framework-1.xsd
new file mode 100644
index 0000000..fd6eac1
--- /dev/null
+++ b/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-framework-1.xsd
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+ elementFormDefault="qualified"
+>
+    <xs:annotation>
+        <xs:documentation>
+      This is the XML Schema Modular Framework support module for XHTML
+      $Id: xhtml-framework-1.xsd,v 1.1 2018/03/20 04:13:59 plehegar Exp $
+    </xs:documentation>
+        <xs:documentation source="xhtml-copyright-1.xsd"/>
+    </xs:annotation>
+    <xs:annotation>
+        <xs:documentation>
+      XHTML Modular Framework
+      This required module instantiates the necessary modules
+      needed to support the XHTML modularization framework.
+
+      The Schema modules instantiated are:
+        +  notations
+        +  datatypes
+        +  common attributes
+        +  character entities
+    </xs:documentation>
+        <xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_commonatts"/>
+    </xs:annotation>
+    <!-- xs:include schemaLocation="xhtml-notations-1.xsd">
+        <xs:annotation>
+            <xs:documentation>
+         Notations module
+         Declares XHTML notations for Attribute data types
+      </xs:documentation>
+        </xs:annotation>
+    </xs:include -->
+    <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" schemaLocation="xhtml-datatypes-1.xsd">
+        <xs:annotation>
+            <xs:documentation>
+        This module defines XHTML Attribute DataTypes
+      </xs:documentation>
+            <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstraction.html#s_common_attrtypes"/>
+        </xs:annotation>
+    </xs:import>
+    <xs:include schemaLocation="xhtml-attribs-1.xsd">
+        <xs:annotation>
+            <xs:documentation>
+        This module defines Common attributes for XHTML
+      </xs:documentation>
+            <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_commonatts"/>
+        </xs:annotation>
+    </xs:include>
+    <!-- xs:include schemaLocation="xhtml-charent-1.xsd">
+        <xs:annotation>
+            <xs:documentation>
+        Character entities module
+        Note: Entities are not supported in XML Schema
+        The Schema Module uses DTDs to define Entities
+
+        This module defines
+          + XHTML Latin 1 Character Entities
+          + XHTML Special Characters
+          + XHTML Mathematical, Greek, and Symbolic Characters
+    </xs:documentation>
+        </xs:annotation>
+    </xs:include -->
+</xs:schema>
diff --git a/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-hypertext-1.xsd b/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-hypertext-1.xsd
new file mode 100644
index 0000000..1c46794
--- /dev/null
+++ b/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-hypertext-1.xsd
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+>
+    <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
+               schemaLocation="xhtml-datatypes-1.xsd" />
+
+    <xs:annotation>
+        <xs:documentation>
+      Hypertext Module
+      This is the XML Schema Hypertext module for XHTML
+            
+        * a
+            
+      This module declares the anchor ('a') element type, which
+      defines the source of a hypertext link. The destination
+      (or link 'target') is identified via its 'id' attribute 
+      rather than the 'name' attribute as was used in HTML.
+
+      $Id: xhtml-hypertext-1.xsd,v 1.1 2018/03/20 04:13:59 plehegar Exp $
+    </xs:documentation>
+        <xs:documentation source="xhtml-copyright-1.xsd"/>
+        <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_hypertextmodule"/>
+    </xs:annotation>
+    <xs:attributeGroup name="xhtml.a.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+        <xs:attribute name="href" type="xh11d:URI"/>
+        <xs:attribute name="charset" type="xh11d:Charset"/>
+        <xs:attribute name="type" type="xh11d:ContentType"/>
+        <xs:attribute name="hreflang" type="xh11d:LanguageCode"/>
+        <xs:attribute name="rel" type="xh11d:LinkTypes"/>
+        <xs:attribute name="rev" type="xh11d:LinkTypes"/>
+        <xs:attribute name="accesskey" type="xh11d:Character"/>
+        <xs:attribute name="tabindex" type="xh11d:Number"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.a.content">
+        <xs:sequence>
+            <xs:group ref="xhtml.InlNoAnchor.mix" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:group>
+    <xs:complexType name="xhtml.a.type" mixed="true">
+        <xs:group ref="xhtml.a.content"/>
+        <xs:attributeGroup ref="xhtml.a.attlist"/>
+    </xs:complexType>
+</xs:schema>
diff --git a/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-inlphras-1.xsd b/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-inlphras-1.xsd
new file mode 100644
index 0000000..31fa0ce
--- /dev/null
+++ b/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-inlphras-1.xsd
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+>
+    <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
+               schemaLocation="xhtml-datatypes-1.xsd" />
+
+    <xs:annotation>
+        <xs:documentation>
+         This is the XML Schema Inline Phrasal support module for XHTML
+         $Id: xhtml-inlphras-1.xsd,v 1.1 2018/03/20 04:13:59 plehegar Exp $
+    </xs:documentation>
+        <xs:documentation source="xhtml-copyright-1.xsd"/>
+    </xs:annotation>
+    <xs:annotation>
+        <xs:documentation>
+      Inline Phrasal.
+      This module declares the elements and their attributes used to
+      support inline-level phrasal markup.
+      This is the XML Schema Inline Phrasal module for XHTML
+
+        * abbr, acronym, cite, code, dfn, em, kbd, q, samp, strong, var
+
+      $Id: xhtml-inlphras-1.xsd,v 1.1 2018/03/20 04:13:59 plehegar Exp $
+    </xs:documentation>
+        <xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_textmodule"/>
+    </xs:annotation>
+    <xs:attributeGroup name="xhtml.abbr.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.abbr.content">
+        <xs:sequence>
+            <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:group>
+    <xs:complexType name="xhtml.abbr.type" mixed="true">
+        <xs:group ref="xhtml.abbr.content"/>
+        <xs:attributeGroup ref="xhtml.abbr.attlist"/>
+    </xs:complexType>
+    <xs:attributeGroup name="xhtml.acronym.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.acronym.content">
+        <xs:sequence>
+            <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:group>
+    <xs:complexType name="xhtml.acronym.type" mixed="true">
+        <xs:group ref="xhtml.acronym.content"/>
+        <xs:attributeGroup ref="xhtml.acronym.attlist"/>
+    </xs:complexType>
+    <xs:attributeGroup name="xhtml.cite.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.cite.content">
+        <xs:sequence>
+            <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:group>
+    <xs:complexType name="xhtml.cite.type" mixed="true">
+        <xs:group ref="xhtml.cite.content"/>
+        <xs:attributeGroup ref="xhtml.cite.attlist"/>
+    </xs:complexType>
+    <xs:attributeGroup name="xhtml.code.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.code.content">
+        <xs:sequence>
+            <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:group>
+    <xs:complexType name="xhtml.code.type" mixed="true">
+        <xs:group ref="xhtml.code.content"/>
+        <xs:attributeGroup ref="xhtml.code.attlist"/>
+    </xs:complexType>
+    <xs:attributeGroup name="xhtml.dfn.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.dfn.content">
+        <xs:sequence>
+            <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:group>
+    <xs:complexType name="xhtml.dfn.type" mixed="true">
+        <xs:group ref="xhtml.dfn.content"/>
+        <xs:attributeGroup ref="xhtml.dfn.attlist"/>
+    </xs:complexType>
+    <xs:attributeGroup name="xhtml.em.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.em.content">
+        <xs:sequence>
+            <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:group>
+    <xs:complexType name="xhtml.em.type" mixed="true">
+        <xs:group ref="xhtml.em.content"/>
+        <xs:attributeGroup ref="xhtml.em.attlist"/>
+    </xs:complexType>
+    <xs:attributeGroup name="xhtml.kbd.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.kbd.content">
+        <xs:sequence>
+            <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:group>
+    <xs:complexType name="xhtml.kbd.type" mixed="true">
+        <xs:group ref="xhtml.kbd.content"/>
+        <xs:attributeGroup ref="xhtml.kbd.attlist"/>
+    </xs:complexType>
+    <xs:attributeGroup name="xhtml.samp.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.samp.content">
+        <xs:sequence>
+            <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:group>
+    <xs:complexType name="xhtml.samp.type" mixed="true">
+        <xs:group ref="xhtml.samp.content"/>
+        <xs:attributeGroup ref="xhtml.samp.attlist"/>
+    </xs:complexType>
+    <xs:attributeGroup name="xhtml.strong.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.strong.content">
+        <xs:sequence>
+            <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:group>
+    <xs:complexType name="xhtml.strong.type" mixed="true">
+        <xs:group ref="xhtml.strong.content"/>
+        <xs:attributeGroup ref="xhtml.strong.attlist"/>
+    </xs:complexType>
+    <xs:attributeGroup name="xhtml.var.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.var.content">
+        <xs:sequence>
+            <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:group>
+    <xs:complexType name="xhtml.var.type" mixed="true">
+        <xs:group ref="xhtml.var.content"/>
+        <xs:attributeGroup ref="xhtml.var.attlist"/>
+    </xs:complexType>
+    <xs:attributeGroup name="xhtml.q.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+        <xs:attribute name="cite" type="xh11d:URI"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.q.content">
+        <xs:sequence>
+            <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:group>
+    <xs:complexType name="xhtml.q.type" mixed="true">
+        <xs:group ref="xhtml.q.content"/>
+        <xs:attributeGroup ref="xhtml.q.attlist"/>
+    </xs:complexType>
+</xs:schema>
diff --git a/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-inlpres-1.xsd b/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-inlpres-1.xsd
new file mode 100644
index 0000000..13c97e4
--- /dev/null
+++ b/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-inlpres-1.xsd
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+>
+    <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
+               schemaLocation="xhtml-datatypes-1.xsd" />
+    <xs:annotation>
+        <xs:documentation>
+      This is the XML Schema Inline Presentation element module for XHTML
+      $Id: xhtml-inlpres-1.xsd,v 1.1 2018/03/20 04:13:59 plehegar Exp $
+    </xs:documentation>
+        <xs:documentation source="xhtml-copyright-1.xsd"/>
+    </xs:annotation>
+    <xs:annotation>
+        <xs:documentation>
+      Inline Presentational Elements
+    
+        * b, big, i, small, sub, sup, tt
+    
+      This module declares the elements and their attributes used to
+      support inline-level presentational markup.
+    </xs:documentation>
+        <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_presentationmodule"/>
+    </xs:annotation>
+    <xs:attributeGroup name="xhtml.InlPres.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.InlPres.content">
+        <xs:sequence>
+            <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:group>
+    <xs:complexType name="xhtml.InlPres.type" mixed="true">
+        <xs:group ref="xhtml.InlPres.content"/>
+        <xs:attributeGroup ref="xhtml.InlPres.attlist"/>
+    </xs:complexType>
+</xs:schema>
diff --git a/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-inlstruct-1.xsd b/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-inlstruct-1.xsd
new file mode 100644
index 0000000..d07df06
--- /dev/null
+++ b/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-inlstruct-1.xsd
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+>
+    <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
+               schemaLocation="xhtml-datatypes-1.xsd" />
+    <xs:annotation>
+        <xs:documentation>
+         This is the XML Schema Inline Structural support module for XHTML
+         $Id: xhtml-inlstruct-1.xsd,v 1.1 2018/03/20 04:14:00 plehegar Exp $
+    </xs:documentation>
+        <xs:documentation source="xhtml-copyright-1.xsd"/>
+    </xs:annotation>
+    <xs:annotation>
+        <xs:documentation>
+      Inline Structural.
+      This module declares the elements and their attributes 
+      used to support inline-level structural markup.      
+      This is the XML Schema Inline Structural element module for XHTML
+
+        * br, span
+      
+    </xs:documentation>
+        <xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_textmodule"/>
+    </xs:annotation>
+    <xs:attributeGroup name="xhtml.br.attlist">
+        <xs:attributeGroup ref="xhtml.Core.attrib"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.br.content">
+        <xs:sequence/>
+    </xs:group>
+    <xs:complexType name="xhtml.br.type">
+        <xs:group ref="xhtml.br.content"/>
+        <xs:attributeGroup ref="xhtml.br.attlist"/>
+    </xs:complexType>
+    <xs:attributeGroup name="xhtml.span.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.span.content">
+        <xs:sequence>
+            <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:group>
+    <xs:complexType name="xhtml.span.type" mixed="true">
+        <xs:group ref="xhtml.span.content"/>
+        <xs:attributeGroup ref="xhtml.span.attlist"/>
+    </xs:complexType>
+</xs:schema>
diff --git a/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-inlstyle-1.xsd b/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-inlstyle-1.xsd
new file mode 100644
index 0000000..1f161ba
--- /dev/null
+++ b/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-inlstyle-1.xsd
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+>
+    <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
+               schemaLocation="xhtml-datatypes-1.xsd" />
+    <xs:annotation>
+        <xs:documentation>
+      Inline Style module    
+      This is the XML Schema Inline Style module for XHTML
+      
+         * styloe attribute
+
+      This module declares the 'style' attribute, used to support inline 
+      style markup. 
+
+      $Id: xhtml-inlstyle-1.xsd,v 1.1 2018/03/20 04:14:00 plehegar Exp $
+    </xs:documentation>
+        <xs:documentation source="xhtml-copyright-1.xsd"/>
+        <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_styleattributemodule"/>
+    </xs:annotation>
+    <xs:attributeGroup name="xhtml.style.attrib">
+        <xs:attribute name="style" type="xh11d:CDATA"/>
+    </xs:attributeGroup>
+</xs:schema>
diff --git a/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-list-1.xsd b/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-list-1.xsd
new file mode 100644
index 0000000..1cd8ac6
--- /dev/null
+++ b/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-list-1.xsd
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+>
+    <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
+               schemaLocation="xhtml-datatypes-1.xsd" />
+    <xs:annotation>
+        <xs:documentation>
+      List Module
+      This is the XML Schema Lists module for XHTML
+      List Module Elements
+    
+        * dl, dt, dd, ol, ul, li
+    
+      This module declares the list-oriented element types
+      and their attributes.
+      $Id: xhtml-list-1.xsd,v 1.1 2018/03/20 04:14:00 plehegar Exp $      
+    </xs:documentation>
+        <xs:documentation source="xhtml-copyright-1.xsd"/>
+        <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_listmodule"/>
+    </xs:annotation>
+    <xs:attributeGroup name="xhtml.dt.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.dt.content">
+        <xs:sequence>
+            <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:group>
+    <xs:complexType name="xhtml.dt.type" mixed="true">
+        <xs:group ref="xhtml.dt.content"/>
+        <xs:attributeGroup ref="xhtml.dt.attlist"/>
+    </xs:complexType>
+    <xs:attributeGroup name="xhtml.dd.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.dd.content">
+        <xs:sequence>
+            <xs:group ref="xhtml.Flow.mix" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:group>
+    <xs:complexType name="xhtml.dd.type" mixed="true">
+        <xs:group ref="xhtml.dd.content"/>
+        <xs:attributeGroup ref="xhtml.dd.attlist"/>
+    </xs:complexType>
+    <xs:attributeGroup name="xhtml.dl.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.dl.content">
+        <xs:sequence>
+            <xs:choice maxOccurs="unbounded">
+                <xs:element name="dt" type="xhtml.dt.type"/>
+                <xs:element name="dd" type="xhtml.dd.type"/>
+            </xs:choice>
+        </xs:sequence>
+    </xs:group>
+    <xs:complexType name="xhtml.dl.type">
+        <xs:group ref="xhtml.dl.content"/>
+        <xs:attributeGroup ref="xhtml.dl.attlist"/>
+    </xs:complexType>
+    <xs:attributeGroup name="xhtml.li.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.li.content">
+        <xs:sequence>
+            <xs:group ref="xhtml.Flow.mix" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:group>
+    <xs:complexType name="xhtml.li.type" mixed="true">
+        <xs:group ref="xhtml.li.content"/>
+        <xs:attributeGroup ref="xhtml.li.attlist"/>
+    </xs:complexType>
+    <xs:attributeGroup name="xhtml.ol.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.ol.content">
+        <xs:sequence>
+            <xs:element name="li" type="xhtml.li.type" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:group>
+    <xs:complexType name="xhtml.ol.type">
+        <xs:group ref="xhtml.ol.content"/>
+        <xs:attributeGroup ref="xhtml.ol.attlist"/>
+    </xs:complexType>
+    <xs:attributeGroup name="xhtml.ul.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.ul.content">
+        <xs:sequence>
+            <xs:element name="li" type="xhtml.li.type" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:group>
+    <xs:complexType name="xhtml.ul.type">
+        <xs:group ref="xhtml.ul.content"/>
+        <xs:attributeGroup ref="xhtml.ul.attlist"/>
+    </xs:complexType>
+</xs:schema>
diff --git a/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-object-1.xsd b/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-object-1.xsd
new file mode 100644
index 0000000..4d14e34
--- /dev/null
+++ b/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-object-1.xsd
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+>
+	<xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
+               schemaLocation="xhtml-datatypes-1.xsd" />
+
+	<xs:annotation>
+		<xs:documentation>
+      This is the XML Schema Embedded Object module for XHTML
+      $Id: xhtml-object-1.xsd,v 1.1 2018/03/20 04:14:01 plehegar Exp $
+    </xs:documentation>
+		<xs:documentation source="xhtml-copyright-1.xsd"/>
+	</xs:annotation>
+	<xs:annotation>
+		<xs:documentation>
+      This module declares the object element type and its attributes,
+      used to embed external objects as part of XHTML pages. In the
+      document, place param elements prior to the object elements 
+      that require their content.
+          
+      Note that use of this module requires instantiation of the 
+      Param Element Module prior to this module.
+      
+      Elements defined here: 
+      
+        * object (param)
+    </xs:documentation>
+		<xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_objectmodule"/>
+	</xs:annotation>
+	<xs:include schemaLocation="xhtml-param-1.xsd">
+		<xs:annotation>
+			<xs:documentation>
+        Param module
+        
+        Elements defined here:
+          * param
+      </xs:documentation>
+		</xs:annotation>
+	</xs:include>
+	<xs:attributeGroup name="xhtml.object.attlist">
+		<xs:attributeGroup ref="xhtml.Common.attrib"/>
+		<xs:attribute name="declare">
+			<xs:simpleType>
+				<xs:restriction base="xs:NMTOKEN">
+					<xs:enumeration value="declare"/>
+				</xs:restriction>
+			</xs:simpleType>
+		</xs:attribute>
+		<xs:attribute name="classid" type="xh11d:URI"/>
+		<xs:attribute name="codebase" type="xh11d:URI"/>
+		<xs:attribute name="data" type="xh11d:URI"/>
+		<xs:attribute name="type" type="xh11d:ContentType"/>
+		<xs:attribute name="codetype" type="xh11d:ContentType"/>
+		<xs:attribute name="archive" type="xh11d:URIs"/>
+		<xs:attribute name="standby" type="xh11d:Text"/>
+		<xs:attribute name="height" type="xh11d:Length"/>
+		<xs:attribute name="width" type="xh11d:Length"/>
+		<xs:attribute name="name" type="xh11d:CDATA"/>
+		<xs:attribute name="tabindex" type="xh11d:Number"/>
+	</xs:attributeGroup>
+	<xs:group name="xhtml.object.content">
+		<xs:sequence>
+			<xs:choice minOccurs="0" maxOccurs="unbounded">
+				<xs:element name="param" type="xhtml.param.type"/>
+				<xs:group ref="xhtml.Flow.mix"/>
+			</xs:choice>
+		</xs:sequence>
+	</xs:group>
+	<xs:complexType name="xhtml.object.type" mixed="true">
+		<xs:group ref="xhtml.object.content"/>
+		<xs:attributeGroup ref="xhtml.object.attlist"/>
+	</xs:complexType>
+</xs:schema>
diff --git a/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-param-1.xsd b/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-param-1.xsd
new file mode 100644
index 0000000..7a1faae
--- /dev/null
+++ b/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-param-1.xsd
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+>
+    <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
+               schemaLocation="xhtml-datatypes-1.xsd" />
+    <xs:annotation>
+        <xs:documentation>
+      This is the XML Schema Param Element module for XHTML
+      $Id: xhtml-param-1.xsd,v 1.1 2018/03/20 04:14:01 plehegar Exp $
+      </xs:documentation>
+        <xs:documentation source="xhtml-copyright-1.xsd"/>
+    </xs:annotation>
+    <xs:annotation>
+        <xs:documentation>
+      Parameters for Java Applets and Embedded Objects
+
+        * param
+
+      This module provides declarations for the param element,
+      used to provide named property values for the applet
+      and object elements.
+    </xs:documentation>
+        <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_objectmodule"/>
+        <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_appletmodule"/>
+    </xs:annotation>
+    <xs:attributeGroup name="xhtml.param.attlist">
+        <xs:attributeGroup ref="xhtml.id"/>
+        <xs:attribute name="name" type="xh11d:CDATA" use="required"/>
+        <xs:attribute name="value" type="xh11d:CDATA"/>
+        <xs:attribute name="valuetype" default="data">
+            <xs:simpleType>
+                <xs:restriction base="xs:NMTOKEN">
+                    <xs:enumeration value="data"/>
+                    <xs:enumeration value="ref"/>
+                    <xs:enumeration value="object"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="type" type="xh11d:ContentType"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.param.content">
+        <xs:sequence/>
+    </xs:group>
+    <xs:complexType name="xhtml.param.type">
+        <xs:group ref="xhtml.param.content"/>
+        <xs:attributeGroup ref="xhtml.param.attlist"/>
+    </xs:complexType>
+</xs:schema>
diff --git a/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-pres-1.xsd b/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-pres-1.xsd
new file mode 100644
index 0000000..0110dc4
--- /dev/null
+++ b/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-pres-1.xsd
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+>
+    <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
+               schemaLocation="xhtml-datatypes-1.xsd" />
+    <xs:annotation>
+        <xs:documentation>
+      This is the XML Schema Presentation module for XHTML
+      This is a REQUIRED module.
+      $Id: xhtml-pres-1.xsd,v 1.1 2018/03/20 04:14:01 plehegar Exp $
+    </xs:documentation>
+        <xs:documentation source="xhtml-copyright-1.xsd"/>
+    </xs:annotation>
+    <xs:annotation>
+        <xs:documentation>
+      Presentational Elements
+
+      This module defines elements and their attributes for
+      simple presentation-related markup.
+ 
+      Elements defined here:
+
+        * hr
+        * b, big, i, small, sub, sup, tt
+    </xs:documentation>
+        <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_presentationmodule"/>
+    </xs:annotation>
+    <xs:include schemaLocation="xhtml-blkpres-1.xsd">
+        <xs:annotation>
+            <xs:documentation>
+        Block Presentational module
+        Elements defined here:
+ 
+         * hr
+      </xs:documentation>
+        </xs:annotation>
+    </xs:include>
+    <xs:include schemaLocation="xhtml-inlpres-1.xsd">
+        <xs:annotation>
+            <xs:documentation>
+        Inline Presentational module
+        Elements defined here:
+
+          * b, big, i, small, sub, sup, tt
+    </xs:documentation>
+        </xs:annotation>
+    </xs:include>
+</xs:schema>
diff --git a/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-table-1.xsd b/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-table-1.xsd
new file mode 100644
index 0000000..8cf8aff
--- /dev/null
+++ b/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-table-1.xsd
@@ -0,0 +1,272 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+>
+    <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
+               schemaLocation="xhtml-datatypes-1.xsd" />
+
+    <xs:annotation>
+        <xs:documentation>
+          This is the XML Schema Tables module for XHTML
+          $Id: xhtml-table-1.xsd,v 1.1 2018/03/20 04:14:02 plehegar Exp $
+        </xs:documentation>
+        <xs:documentation source="xhtml-copyright-1.xsd"/>
+    </xs:annotation>
+    <xs:annotation>
+        <xs:documentation>
+          Tables
+      
+           * table, caption, thead, tfoot, tbody, colgroup, col, tr, th, td
+      
+          This module declares element types and attributes used to provide
+          table markup similar to HTML 4.0, including features that enable
+          better accessibility for non-visual user agents.
+        </xs:documentation>
+        <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_tablemodule"/>
+    </xs:annotation>
+    <xs:attributeGroup name="xhtml.frame.attrib">
+        <xs:attribute name="frame">
+            <xs:simpleType>
+                <xs:restriction base="xs:NMTOKEN">
+                    <xs:enumeration value="void"/>
+                    <xs:enumeration value="above"/>
+                    <xs:enumeration value="below"/>
+                    <xs:enumeration value="hsides"/>
+                    <xs:enumeration value="lhs"/>
+                    <xs:enumeration value="rhs"/>
+                    <xs:enumeration value="vsides"/>
+                    <xs:enumeration value="box"/>
+                    <xs:enumeration value="border"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:attributeGroup name="xhtml.rules.attrib">
+        <xs:attribute name="rules">
+            <xs:simpleType>
+                <xs:restriction base="xs:NMTOKEN">
+                    <xs:enumeration value="none"/>
+                    <xs:enumeration value="groups"/>
+                    <xs:enumeration value="rows"/>
+                    <xs:enumeration value="cols"/>
+                    <xs:enumeration value="all"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:attributeGroup name="xhtml.CellVAlign.attrib">
+        <xs:attribute name="valign">
+            <xs:simpleType>
+                <xs:restriction base="xs:NMTOKEN">
+                    <xs:enumeration value="top"/>
+                    <xs:enumeration value="middle"/>
+                    <xs:enumeration value="bottom"/>
+                    <xs:enumeration value="baseline"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:attributeGroup name="xhtml.CellHAlign.attrib">
+        <xs:attribute name="align">
+            <xs:simpleType>
+                <xs:restriction base="xs:NMTOKEN">
+                    <xs:enumeration value="left"/>
+                    <xs:enumeration value="center"/>
+                    <xs:enumeration value="right"/>
+                    <xs:enumeration value="justify"/>
+                    <xs:enumeration value="char"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="char" type="xh11d:Character"/>
+        <xs:attribute name="charoff" type="xh11d:Length"/>
+    </xs:attributeGroup>
+    <xs:attributeGroup name="xhtml.scope.attrib">
+        <xs:attribute name="scope">
+            <xs:simpleType>
+                <xs:restriction base="xs:NMTOKEN">
+                    <xs:enumeration value="row"/>
+                    <xs:enumeration value="col"/>
+                    <xs:enumeration value="rowgroup"/>
+                    <xs:enumeration value="colgroup"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:attributeGroup name="xhtml.td.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+        <xs:attribute name="abbr" type="xh11d:Text"/>
+        <xs:attribute name="axis" type="xh11d:CDATA"/>
+        <xs:attribute name="headers" type="xs:IDREFS"/>
+        <xs:attributeGroup ref="xhtml.scope.attrib"/>
+        <xs:attribute name="rowspan" type="xh11d:Number" default="1"/>
+        <xs:attribute name="colspan" type="xh11d:Number" default="1"/>
+        <xs:attributeGroup ref="xhtml.CellHAlign.attrib"/>
+        <xs:attributeGroup ref="xhtml.CellVAlign.attrib"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.td.content">
+        <xs:sequence>
+            <xs:group ref="xhtml.Flow.mix" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:group>
+    <xs:complexType name="xhtml.td.type" mixed="true">
+        <xs:group ref="xhtml.td.content"/>
+        <xs:attributeGroup ref="xhtml.td.attlist"/>
+    </xs:complexType>
+    <xs:attributeGroup name="xhtml.th.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+        <xs:attribute name="abbr" type="xh11d:Text"/>
+        <xs:attribute name="axis" type="xh11d:CDATA"/>
+        <xs:attribute name="headers" type="xs:IDREFS"/>
+        <xs:attributeGroup ref="xhtml.scope.attrib"/>
+        <xs:attribute name="rowspan" type="xh11d:Number" default="1"/>
+        <xs:attribute name="colspan" type="xh11d:Number" default="1"/>
+        <xs:attributeGroup ref="xhtml.CellHAlign.attrib"/>
+        <xs:attributeGroup ref="xhtml.CellVAlign.attrib"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.th.content">
+        <xs:sequence>
+            <xs:group ref="xhtml.Flow.mix" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:group>
+    <xs:complexType name="xhtml.th.type" mixed="true">
+        <xs:group ref="xhtml.th.content"/>
+        <xs:attributeGroup ref="xhtml.th.attlist"/>
+    </xs:complexType>
+    <xs:attributeGroup name="xhtml.tr.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+        <xs:attributeGroup ref="xhtml.CellHAlign.attrib"/>
+        <xs:attributeGroup ref="xhtml.CellVAlign.attrib"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.tr.content">
+        <xs:sequence>
+            <xs:choice maxOccurs="unbounded">
+                <xs:element name="th" type="xhtml.th.type"/>
+                <xs:element name="td" type="xhtml.td.type"/>
+            </xs:choice>
+        </xs:sequence>
+    </xs:group>
+    <xs:complexType name="xhtml.tr.type">
+        <xs:group ref="xhtml.tr.content"/>
+        <xs:attributeGroup ref="xhtml.tr.attlist"/>
+    </xs:complexType>
+    <xs:attributeGroup name="xhtml.col.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+        <xs:attribute name="span" type="xh11d:Number" default="1"/>
+        <xs:attribute name="width" type="xh11d:MultiLength"/>
+        <xs:attributeGroup ref="xhtml.CellHAlign.attrib"/>
+        <xs:attributeGroup ref="xhtml.CellVAlign.attrib"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.col.content">
+        <xs:sequence/>
+    </xs:group>
+    <xs:complexType name="xhtml.col.type">
+        <xs:group ref="xhtml.col.content"/>
+        <xs:attributeGroup ref="xhtml.col.attlist"/>
+    </xs:complexType>
+    <xs:attributeGroup name="xhtml.colgroup.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+        <xs:attribute name="span" type="xh11d:Number" default="1"/>
+        <xs:attribute name="width" type="xh11d:MultiLength"/>
+        <xs:attributeGroup ref="xhtml.CellHAlign.attrib"/>
+        <xs:attributeGroup ref="xhtml.CellVAlign.attrib"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.colgroup.content">
+        <xs:sequence>
+            <xs:element name="col" type="xhtml.col.type" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:group>
+    <xs:complexType name="xhtml.colgroup.type">
+        <xs:group ref="xhtml.colgroup.content"/>
+        <xs:attributeGroup ref="xhtml.colgroup.attlist"/>
+    </xs:complexType>
+    <xs:attributeGroup name="xhtml.tbody.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+        <xs:attributeGroup ref="xhtml.CellHAlign.attrib"/>
+        <xs:attributeGroup ref="xhtml.CellVAlign.attrib"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.tbody.content">
+        <xs:sequence>
+            <xs:element name="tr" type="xhtml.tr.type" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:group>
+    <xs:complexType name="xhtml.tbody.type">
+        <xs:group ref="xhtml.tbody.content"/>
+        <xs:attributeGroup ref="xhtml.tbody.attlist"/>
+    </xs:complexType>
+    <xs:attributeGroup name="xhtml.tfoot.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+        <xs:attributeGroup ref="xhtml.CellHAlign.attrib"/>
+        <xs:attributeGroup ref="xhtml.CellVAlign.attrib"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.tfoot.content">
+        <xs:sequence>
+            <xs:element name="tr" type="xhtml.tr.type" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:group>
+    <xs:complexType name="xhtml.tfoot.type">
+        <xs:group ref="xhtml.tfoot.content"/>
+        <xs:attributeGroup ref="xhtml.tfoot.attlist"/>
+    </xs:complexType>
+    <xs:attributeGroup name="xhtml.thead.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+        <xs:attributeGroup ref="xhtml.CellHAlign.attrib"/>
+        <xs:attributeGroup ref="xhtml.CellVAlign.attrib"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.thead.content">
+        <xs:sequence>
+            <xs:element name="tr" type="xhtml.tr.type" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:group>
+    <xs:complexType name="xhtml.thead.type">
+        <xs:group ref="xhtml.thead.content"/>
+        <xs:attributeGroup ref="xhtml.thead.attlist"/>
+    </xs:complexType>
+    <xs:attributeGroup name="xhtml.caption.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.caption.content">
+        <xs:sequence>
+            <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:group>
+    <xs:complexType name="xhtml.caption.type" mixed="true">
+        <xs:group ref="xhtml.caption.content"/>
+        <xs:attributeGroup ref="xhtml.caption.attlist"/>
+    </xs:complexType>
+    <xs:attributeGroup name="xhtml.table.attlist">
+        <xs:attributeGroup ref="xhtml.Common.attrib"/>
+        <xs:attribute name="summary" type="xh11d:Text"/>
+        <xs:attribute name="width" type="xh11d:Length"/>
+        <xs:attribute name="border" type="xh11d:Pixels"/>
+        <xs:attributeGroup ref="xhtml.frame.attrib"/>
+        <xs:attributeGroup ref="xhtml.rules.attrib"/>
+        <xs:attribute name="cellspacing" type="xh11d:Length"/>
+        <xs:attribute name="cellpadding" type="xh11d:Length"/>
+    </xs:attributeGroup>
+    <xs:group name="xhtml.table.content">
+        <xs:sequence>
+            <xs:element name="caption" type="xhtml.caption.type" minOccurs="0"/>
+            <xs:choice>
+                <xs:element name="col" type="xhtml.col.type" minOccurs="0" maxOccurs="unbounded"/>
+                <xs:element name="colgroup" type="xhtml.colgroup.type" minOccurs="0" maxOccurs="unbounded"/>
+            </xs:choice>
+            <xs:choice>
+                <xs:sequence>
+                    <xs:element name="thead" type="xhtml.thead.type" minOccurs="0"/>
+                    <xs:element name="tfoot" type="xhtml.tfoot.type" minOccurs="0"/>
+                    <xs:element name="tbody" type="xhtml.tbody.type" maxOccurs="unbounded"/>
+                </xs:sequence>
+                <xs:choice>
+                    <xs:element name="tr" type="xhtml.tr.type" maxOccurs="unbounded"/>
+                </xs:choice>
+            </xs:choice>
+        </xs:sequence>
+    </xs:group>
+    <xs:complexType name="xhtml.table.type">
+        <xs:group ref="xhtml.table.content"/>
+        <xs:attributeGroup ref="xhtml.table.attlist"/>
+    </xs:complexType>
+</xs:schema>
diff --git a/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-text-1.xsd b/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-text-1.xsd
new file mode 100644
index 0000000..1462e8b
--- /dev/null
+++ b/reqif/reqif_schema/www.w3.org/TR/xhtml-modularization/SCHEMA/xhtml-text-1.xsd
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+>
+    <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
+               schemaLocation="xhtml-datatypes-1.xsd" />
+    <xs:annotation>
+        <xs:documentation>
+      Textual Content
+      This is the XML Schema Text module for XHTML
+
+      The Text module includes declarations for all core
+      text container elements and their attributes.
+    
+        +  block phrasal
+        +  block structural
+        +  inline phrasal
+        +  inline structural
+      
+      $Id: xhtml-text-1.xsd,v 1.1 2018/03/20 04:14:02 plehegar Exp $
+    </xs:documentation>
+        <xs:documentation source="xhtml-copyright-1.xsd"/>
+        <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_textmodule"/>
+    </xs:annotation>
+    <xs:include schemaLocation="xhtml-blkphras-1.xsd">
+        <xs:annotation>
+            <xs:documentation>
+        Block Phrasal module
+        Elements defined here:
+
+          * address, blockquote, pre, h1, h2, h3, h4, h5, h6
+    </xs:documentation>
+        </xs:annotation>
+    </xs:include>
+    <xs:include schemaLocation="xhtml-blkstruct-1.xsd">
+        <xs:annotation>
+            <xs:documentation>
+        Block Structural module 
+        Elements defined here:
+
+          * div, p
+    </xs:documentation>
+        </xs:annotation>
+    </xs:include>
+    <xs:include schemaLocation="xhtml-inlphras-1.xsd">
+        <xs:annotation>
+            <xs:documentation>
+        Inline Phrasal module
+        Elements defined here:
+
+          * abbr, acronym, cite, code, dfn, em, kbd, q, samp, strong, var
+    </xs:documentation>
+        </xs:annotation>
+    </xs:include>
+    <xs:include schemaLocation="xhtml-inlstruct-1.xsd">
+        <xs:annotation>
+            <xs:documentation>
+        Inline Structural module 
+        Elements defined here:
+
+          * br,span
+    </xs:documentation>
+        </xs:annotation>
+    </xs:include>
+</xs:schema>


Test patch:
diff --git a/tests/integration/commands/validate/_xsd_schema_validation/01_incorrect_reqif_version/sample.reqif b/tests/integration/commands/validate/_xsd_schema_validation/01_incorrect_reqif_version/sample.reqif
new file mode 100644
index 0000000..f7add55
--- /dev/null
+++ b/tests/integration/commands/validate/_xsd_schema_validation/01_incorrect_reqif_version/sample.reqif
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<REQ-IF xmlns="http://www.omg.org/spec/ReqIF/20110401/reqif.xsd" xmlns:configuration="http://eclipse.org/rmf/pror/toolextensions/1.0" xmlns:xhtml="http://www.w3.org/1999/xhtml">
+  <THE-HEADER>
+    <REQ-IF-HEADER IDENTIFIER="EF5AEFF3-C695-488A-9955-EDAAEACFE359">
+      <COMMENT>Author: Mathilda Musterfrau</COMMENT>
+      <CREATION-TIME>2018-05-08T11:24:18+02:00</CREATION-TIME>
+      <REPOSITORY-ID>A4123EB9-CC82-4B62-95E1-31CB3203E39C</REPOSITORY-ID>
+      <REQ-IF-TOOL-ID>microTOOL in-STEP BLUE</REQ-IF-TOOL-ID>
+      <REQ-IF-VERSION>1.2</REQ-IF-VERSION>
+      <SOURCE-TOOL-ID>microTOOL objectiF RPM</SOURCE-TOOL-ID>
+      <TITLE>Beispiel einer ReqIF-Datei</TITLE>
+    </REQ-IF-HEADER>
+  </THE-HEADER>
+  <CORE-CONTENT>
+    <REQ-IF-CONTENT>
+      <DATATYPES>
+        <DATATYPE-DEFINITION-STRING MAX-LENGTH="1000" IDENTIFIER="Text" LAST-CHANGE="2018-04-13T01:00:00+02:00"/>
+      </DATATYPES>
+      <SPEC-TYPES>
+        <SPEC-OBJECT-TYPE DESC="Eine funktionale Anforderung beschreibt eine Systemfunktion, d.h.   sie beschreibt, was das System tun muss bzw. welche Funktionalit&#228;t das System den   Anwendern bereitstellt." IDENTIFIER="FUNC-REQ" LAST-CHANGE="2018-04-13T11:24:18+02:00" LONG-NAME="Funktionale Anforderung">
+          <SPEC-ATTRIBUTES>
+            <ATTRIBUTE-DEFINITION-STRING DESC="Der Beschreibungstext der Anforderung." IDENTIFIER="FUNC-REQ-TXT" LAST-CHANGE="2018-04-13T11:24:18+02:00">
+              <TYPE>
+                <DATATYPE-DEFINITION-STRING-REF>Text</DATATYPE-DEFINITION-STRING-REF>
+              </TYPE>
+              <IS-EDITABLE>False</IS-EDITABLE>
+            </ATTRIBUTE-DEFINITION-STRING>
+          </SPEC-ATTRIBUTES>
+        </SPEC-OBJECT-TYPE>
+        <SPEC-RELATION-TYPE DESC="Die Ableitungsbeziehung wird genutzt, um zu spezifizieren, dass eine Anforderung von einer   anderen abgeleitet ist." IDENTIFIER="Ableitungsbeziehung" LAST-CHANGE="2018-04-13T11:24:18+02:00" LONG-NAME="Ableitungsbeziehung Anforderung"/>
+        <SPECIFICATION-TYPE DESC="Ein Kundenanforderungsdokument (oder auch: User Requirements Specification (URS) beschreibt die Anforderungen,die Anwender an das zu entwickelnde System stellen. Kundenanforderungen sind die obersten Anforderungen. Sie dokumentieren die Bef&#252;rfnisse der Anwender, Kunden und anderer Anforderungsquellen wie z.B. rechtliche Vorgaben oder Anforderungen, die intern vom Unternehmen kommen." IDENTIFIER="URS" LAST-CHANGE="2018-04-13T01:00:00+02:00" LONG-NAME="User Requirements Specification"/>
+      </SPEC-TYPES>
+      <SPEC-OBJECTS>
+        <SPEC-OBJECT IDENTIFIER="&#252;berwachungBodentemperatur" LAST-CHANGE="2018-04-13T11:24:18+02:00" LONG-NAME="&#220;berwachung der Bodentemperatur">
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>FUNC-REQ</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="Das System soll die Bodentemperatur &#252;berwachen.">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>FUNC-REQ-TXT</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+          </VALUES>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="erkennungFeuer" LAST-CHANGE="2018-04-13T11:24:18+02:00" LONG-NAME="Erkennung von Feuer">
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>FUNC-REQ</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="Das System soll den Ausbruch von Feuer melden.">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>FUNC-REQ-TXT</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+          </VALUES>
+        </SPEC-OBJECT>
+      </SPEC-OBJECTS>
+      <SPECIFICATIONS>
+        <SPECIFICATION DESC="Im Folgenden sind die Kundenanforderungen f&#252;r   das System zur Erkennung von Waldbr&#228;nden von Kunde X zusammengestellt" IDENTIFIER="specification_0" LAST-CHANGE="2018-04-13T11:24:18+02:00" LONG-NAME="System zur Erkennung von Waldbr&#228;nden">
+          <TYPE>
+            <SPECIFICATION-TYPE-REF>URS</SPECIFICATION-TYPE-REF>
+          </TYPE>
+          <CHILDREN>
+            <SPEC-HIERARCHY IDENTIFIER="anforderungshierarchie_0" LAST-CHANGE="2018-04-13T11:24:18+02:00">
+              <IS-TABLE-INTERNAL>False</IS-TABLE-INTERNAL>
+              <OBJECT>
+                <SPEC-OBJECT-REF>&#252;berwachungBodentemperatur</SPEC-OBJECT-REF>
+              </OBJECT>
+              <CHILDREN>
+                <SPEC-HIERARCHY IDENTIFIER="anforderungshierarchie_1" LAST-CHANGE="2018-04-13T11:24:18+02:00">
+                  <IS-TABLE-INTERNAL>False</IS-TABLE-INTERNAL>
+                  <OBJECT>
+                    <SPEC-OBJECT-REF>erkennungFeuer</SPEC-OBJECT-REF>
+                  </OBJECT>
+                  <IS-EDITABLE>False</IS-EDITABLE>
+                </SPEC-HIERARCHY>
+              </CHILDREN>
+              <IS-EDITABLE>False</IS-EDITABLE>
+            </SPEC-HIERARCHY>
+          </CHILDREN>
+        </SPECIFICATION>
+      </SPECIFICATIONS>
+      <SPEC-RELATIONS>
+        <SPEC-RELATION IDENTIFIER="beziehungAnforderungen_0" LAST-CHANGE="2018-04-13T11:24:18+02:00">
+          <TARGET>
+            <SPEC-OBJECT-REF>erkennungFeuer</SPEC-OBJECT-REF>
+          </TARGET>
+          <SOURCE>
+            <SPEC-OBJECT-REF>&#252;berwachungBodentemperatur</SPEC-OBJECT-REF>
+          </SOURCE>
+          <TYPE>
+            <SPEC-RELATION-TYPE-REF>Ableitungsbeziehung</SPEC-RELATION-TYPE-REF>
+          </TYPE>
+        </SPEC-RELATION>
+      </SPEC-RELATIONS>
+    </REQ-IF-CONTENT>
+  </CORE-CONTENT>
+</REQ-IF>
diff --git a/tests/integration/commands/validate/_xsd_schema_validation/01_incorrect_reqif_version/test.itest b/tests/integration/commands/validate/_xsd_schema_validation/01_incorrect_reqif_version/test.itest
new file mode 100644
index 0000000..905c816
--- /dev/null
+++ b/tests/integration/commands/validate/_xsd_schema_validation/01_incorrect_reqif_version/test.itest
@@ -0,0 +1,2 @@
+RUN: %expect_exit 1 %reqif validate --reqif-schema %S/sample.reqif | filecheck %s --dump-input=fail
+CHECK: Reason: must have the fixed value '1.0'
diff --git a/tests/integration/commands/validate/_xsd_schema_validation/02_invalid_is_editable_tag/sample.reqif b/tests/integration/commands/validate/_xsd_schema_validation/02_invalid_is_editable_tag/sample.reqif
new file mode 100644
index 0000000..d73e440
--- /dev/null
+++ b/tests/integration/commands/validate/_xsd_schema_validation/02_invalid_is_editable_tag/sample.reqif
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<REQ-IF xmlns="http://www.omg.org/spec/ReqIF/20110401/reqif.xsd" xmlns:configuration="http://eclipse.org/rmf/pror/toolextensions/1.0" xmlns:xhtml="http://www.w3.org/1999/xhtml">
+  <THE-HEADER>
+    <REQ-IF-HEADER IDENTIFIER="EF5AEFF3-C695-488A-9955-EDAAEACFE359">
+      <COMMENT>Author: Mathilda Musterfrau</COMMENT>
+      <CREATION-TIME>2018-05-08T11:24:18+02:00</CREATION-TIME>
+      <REPOSITORY-ID>A4123EB9-CC82-4B62-95E1-31CB3203E39C</REPOSITORY-ID>
+      <REQ-IF-TOOL-ID>microTOOL in-STEP BLUE</REQ-IF-TOOL-ID>
+      <REQ-IF-VERSION>1.0</REQ-IF-VERSION>
+      <SOURCE-TOOL-ID>microTOOL objectiF RPM</SOURCE-TOOL-ID>
+      <TITLE>Beispiel einer ReqIF-Datei</TITLE>
+    </REQ-IF-HEADER>
+  </THE-HEADER>
+  <CORE-CONTENT>
+    <REQ-IF-CONTENT>
+      <DATATYPES>
+        <DATATYPE-DEFINITION-STRING MAX-LENGTH="1000" IDENTIFIER="Text" LAST-CHANGE="2018-04-13T01:00:00+02:00"/>
+      </DATATYPES>
+      <SPEC-TYPES>
+        <SPEC-OBJECT-TYPE DESC="Eine funktionale Anforderung beschreibt eine Systemfunktion, d.h.   sie beschreibt, was das System tun muss bzw. welche Funktionalit&#228;t das System den   Anwendern bereitstellt." IDENTIFIER="FUNC-REQ" LAST-CHANGE="2018-04-13T11:24:18+02:00" LONG-NAME="Funktionale Anforderung">
+          <SPEC-ATTRIBUTES>
+            <ATTRIBUTE-DEFINITION-STRING DESC="Der Beschreibungstext der Anforderung." IDENTIFIER="FUNC-REQ-TXT" LAST-CHANGE="2018-04-13T11:24:18+02:00">
+              <TYPE>
+                <DATATYPE-DEFINITION-STRING-REF>Text</DATATYPE-DEFINITION-STRING-REF>
+              </TYPE>
+              <IS-EDITABLE>False</IS-EDITABLE>
+            </ATTRIBUTE-DEFINITION-STRING>
+          </SPEC-ATTRIBUTES>
+        </SPEC-OBJECT-TYPE>
+        <SPEC-RELATION-TYPE DESC="Die Ableitungsbeziehung wird genutzt, um zu spezifizieren, dass eine Anforderung von einer   anderen abgeleitet ist." IDENTIFIER="Ableitungsbeziehung" LAST-CHANGE="2018-04-13T11:24:18+02:00" LONG-NAME="Ableitungsbeziehung Anforderung"/>
+        <SPECIFICATION-TYPE DESC="Ein Kundenanforderungsdokument (oder auch: User Requirements Specification (URS) beschreibt die Anforderungen,die Anwender an das zu entwickelnde System stellen. Kundenanforderungen sind die obersten Anforderungen. Sie dokumentieren die Bef&#252;rfnisse der Anwender, Kunden und anderer Anforderungsquellen wie z.B. rechtliche Vorgaben oder Anforderungen, die intern vom Unternehmen kommen." IDENTIFIER="URS" LAST-CHANGE="2018-04-13T01:00:00+02:00" LONG-NAME="User Requirements Specification"/>
+      </SPEC-TYPES>
+      <SPEC-OBJECTS>
+        <SPEC-OBJECT IDENTIFIER="&#252;berwachungBodentemperatur" LAST-CHANGE="2018-04-13T11:24:18+02:00" LONG-NAME="&#220;berwachung der Bodentemperatur">
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>FUNC-REQ</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="Das System soll die Bodentemperatur &#252;berwachen.">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>FUNC-REQ-TXT</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+          </VALUES>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="erkennungFeuer" LAST-CHANGE="2018-04-13T11:24:18+02:00" LONG-NAME="Erkennung von Feuer">
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>FUNC-REQ</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="Das System soll den Ausbruch von Feuer melden.">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>FUNC-REQ-TXT</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+          </VALUES>
+        </SPEC-OBJECT>
+      </SPEC-OBJECTS>
+      <SPECIFICATIONS>
+        <SPECIFICATION DESC="Im Folgenden sind die Kundenanforderungen f&#252;r   das System zur Erkennung von Waldbr&#228;nden von Kunde X zusammengestellt" IDENTIFIER="specification_0" LAST-CHANGE="2018-04-13T11:24:18+02:00" LONG-NAME="System zur Erkennung von Waldbr&#228;nden">
+          <TYPE>
+            <SPECIFICATION-TYPE-REF>URS</SPECIFICATION-TYPE-REF>
+          </TYPE>
+          <CHILDREN>
+            <SPEC-HIERARCHY IDENTIFIER="anforderungshierarchie_0" LAST-CHANGE="2018-04-13T11:24:18+02:00">
+              <IS-TABLE-INTERNAL>False</IS-TABLE-INTERNAL>
+              <OBJECT>
+                <SPEC-OBJECT-REF>&#252;berwachungBodentemperatur</SPEC-OBJECT-REF>
+              </OBJECT>
+              <CHILDREN>
+                <SPEC-HIERARCHY IDENTIFIER="anforderungshierarchie_1" LAST-CHANGE="2018-04-13T11:24:18+02:00">
+                  <IS-TABLE-INTERNAL>False</IS-TABLE-INTERNAL>
+                  <OBJECT>
+                    <SPEC-OBJECT-REF>erkennungFeuer</SPEC-OBJECT-REF>
+                  </OBJECT>
+                  <IS-EDITABLE>False</IS-EDITABLE>
+                </SPEC-HIERARCHY>
+              </CHILDREN>
+              <IS-EDITABLE>False</IS-EDITABLE>
+            </SPEC-HIERARCHY>
+          </CHILDREN>
+        </SPECIFICATION>
+      </SPECIFICATIONS>
+      <SPEC-RELATIONS>
+        <SPEC-RELATION IDENTIFIER="beziehungAnforderungen_0" LAST-CHANGE="2018-04-13T11:24:18+02:00">
+          <TARGET>
+            <SPEC-OBJECT-REF>erkennungFeuer</SPEC-OBJECT-REF>
+          </TARGET>
+          <SOURCE>
+            <SPEC-OBJECT-REF>&#252;berwachungBodentemperatur</SPEC-OBJECT-REF>
+          </SOURCE>
+          <TYPE>
+            <SPEC-RELATION-TYPE-REF>Ableitungsbeziehung</SPEC-RELATION-TYPE-REF>
+          </TYPE>
+        </SPEC-RELATION>
+      </SPEC-RELATIONS>
+    </REQ-IF-CONTENT>
+  </CORE-CONTENT>
+</REQ-IF>
diff --git a/tests/integration/commands/validate/_xsd_schema_validation/02_invalid_is_editable_tag/test.itest b/tests/integration/commands/validate/_xsd_schema_validation/02_invalid_is_editable_tag/test.itest
new file mode 100644
index 0000000..e7dc0ef
--- /dev/null
+++ b/tests/integration/commands/validate/_xsd_schema_validation/02_invalid_is_editable_tag/test.itest
@@ -0,0 +1,2 @@
+RUN: %expect_exit 1 %reqif validate --reqif-schema %S/sample.reqif | filecheck %s --dump-input=fail
+CHECK: Reason: Unexpected child with tag 'REQIF:IS-EDITABLE' at position 2.
diff --git a/tests/integration/commands/validate/_xsd_schema_validation/03_invalid_table_internal/sample.reqif b/tests/integration/commands/validate/_xsd_schema_validation/03_invalid_table_internal/sample.reqif
new file mode 100644
index 0000000..ccb37ef
--- /dev/null
+++ b/tests/integration/commands/validate/_xsd_schema_validation/03_invalid_table_internal/sample.reqif
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<REQ-IF xmlns="http://www.omg.org/spec/ReqIF/20110401/reqif.xsd" xmlns:configuration="http://eclipse.org/rmf/pror/toolextensions/1.0" xmlns:xhtml="http://www.w3.org/1999/xhtml">
+  <THE-HEADER>
+    <REQ-IF-HEADER IDENTIFIER="EF5AEFF3-C695-488A-9955-EDAAEACFE359">
+      <COMMENT>Author: Mathilda Musterfrau</COMMENT>
+      <CREATION-TIME>2018-05-08T11:24:18+02:00</CREATION-TIME>
+      <REPOSITORY-ID>A4123EB9-CC82-4B62-95E1-31CB3203E39C</REPOSITORY-ID>
+      <REQ-IF-TOOL-ID>microTOOL in-STEP BLUE</REQ-IF-TOOL-ID>
+      <REQ-IF-VERSION>1.0</REQ-IF-VERSION>
+      <SOURCE-TOOL-ID>microTOOL objectiF RPM</SOURCE-TOOL-ID>
+      <TITLE>Beispiel einer ReqIF-Datei</TITLE>
+    </REQ-IF-HEADER>
+  </THE-HEADER>
+  <CORE-CONTENT>
+    <REQ-IF-CONTENT>
+      <DATATYPES>
+        <DATATYPE-DEFINITION-STRING MAX-LENGTH="1000" IDENTIFIER="Text" LAST-CHANGE="2018-04-13T01:00:00+02:00"/>
+      </DATATYPES>
+      <SPEC-TYPES>
+        <SPEC-OBJECT-TYPE DESC="Eine funktionale Anforderung beschreibt eine Systemfunktion, d.h.   sie beschreibt, was das System tun muss bzw. welche Funktionalit&#228;t das System den   Anwendern bereitstellt." IDENTIFIER="FUNC-REQ" LAST-CHANGE="2018-04-13T11:24:18+02:00" LONG-NAME="Funktionale Anforderung">
+          <SPEC-ATTRIBUTES>
+            <ATTRIBUTE-DEFINITION-STRING DESC="Der Beschreibungstext der Anforderung." IDENTIFIER="FUNC-REQ-TXT" LAST-CHANGE="2018-04-13T11:24:18+02:00">
+              <TYPE>
+                <DATATYPE-DEFINITION-STRING-REF>Text</DATATYPE-DEFINITION-STRING-REF>
+              </TYPE>
+            </ATTRIBUTE-DEFINITION-STRING>
+          </SPEC-ATTRIBUTES>
+        </SPEC-OBJECT-TYPE>
+        <SPEC-RELATION-TYPE DESC="Die Ableitungsbeziehung wird genutzt, um zu spezifizieren, dass eine Anforderung von einer   anderen abgeleitet ist." IDENTIFIER="Ableitungsbeziehung" LAST-CHANGE="2018-04-13T11:24:18+02:00" LONG-NAME="Ableitungsbeziehung Anforderung"/>
+        <SPECIFICATION-TYPE DESC="Ein Kundenanforderungsdokument (oder auch: User Requirements Specification (URS) beschreibt die Anforderungen,die Anwender an das zu entwickelnde System stellen. Kundenanforderungen sind die obersten Anforderungen. Sie dokumentieren die Bef&#252;rfnisse der Anwender, Kunden und anderer Anforderungsquellen wie z.B. rechtliche Vorgaben oder Anforderungen, die intern vom Unternehmen kommen." IDENTIFIER="URS" LAST-CHANGE="2018-04-13T01:00:00+02:00" LONG-NAME="User Requirements Specification"/>
+      </SPEC-TYPES>
+      <SPEC-OBJECTS>
+        <SPEC-OBJECT IDENTIFIER="&#252;berwachungBodentemperatur" LAST-CHANGE="2018-04-13T11:24:18+02:00" LONG-NAME="&#220;berwachung der Bodentemperatur">
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>FUNC-REQ</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="Das System soll die Bodentemperatur &#252;berwachen.">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>FUNC-REQ-TXT</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+          </VALUES>
+        </SPEC-OBJECT>
+        <SPEC-OBJECT IDENTIFIER="erkennungFeuer" LAST-CHANGE="2018-04-13T11:24:18+02:00" LONG-NAME="Erkennung von Feuer">
+          <TYPE>
+            <SPEC-OBJECT-TYPE-REF>FUNC-REQ</SPEC-OBJECT-TYPE-REF>
+          </TYPE>
+          <VALUES>
+            <ATTRIBUTE-VALUE-STRING THE-VALUE="Das System soll den Ausbruch von Feuer melden.">
+              <DEFINITION>
+                <ATTRIBUTE-DEFINITION-STRING-REF>FUNC-REQ-TXT</ATTRIBUTE-DEFINITION-STRING-REF>
+              </DEFINITION>
+            </ATTRIBUTE-VALUE-STRING>
+          </VALUES>
+        </SPEC-OBJECT>
+      </SPEC-OBJECTS>
+      <SPECIFICATIONS>
+        <SPECIFICATION DESC="Im Folgenden sind die Kundenanforderungen f&#252;r   das System zur Erkennung von Waldbr&#228;nden von Kunde X zusammengestellt" IDENTIFIER="specification_0" LAST-CHANGE="2018-04-13T11:24:18+02:00" LONG-NAME="System zur Erkennung von Waldbr&#228;nden">
+          <TYPE>
+            <SPECIFICATION-TYPE-REF>URS</SPECIFICATION-TYPE-REF>
+          </TYPE>
+          <CHILDREN>
+            <SPEC-HIERARCHY IDENTIFIER="anforderungshierarchie_0" LAST-CHANGE="2018-04-13T11:24:18+02:00">
+              <IS-TABLE-INTERNAL>False</IS-TABLE-INTERNAL>
+              <OBJECT>
+                <SPEC-OBJECT-REF>&#252;berwachungBodentemperatur</SPEC-OBJECT-REF>
+              </OBJECT>
+              <CHILDREN>
+                <SPEC-HIERARCHY IDENTIFIER="anforderungshierarchie_1" LAST-CHANGE="2018-04-13T11:24:18+02:00">
+                  <IS-TABLE-INTERNAL>False</IS-TABLE-INTERNAL>
+                  <OBJECT>
+                    <SPEC-OBJECT-REF>erkennungFeuer</SPEC-OBJECT-REF>
+                  </OBJECT>
+                </SPEC-HIERARCHY>
+              </CHILDREN>
+            </SPEC-HIERARCHY>
+          </CHILDREN>
+        </SPECIFICATION>
+      </SPECIFICATIONS>
+      <SPEC-RELATIONS>
+        <SPEC-RELATION IDENTIFIER="beziehungAnforderungen_0" LAST-CHANGE="2018-04-13T11:24:18+02:00">
+          <TARGET>
+            <SPEC-OBJECT-REF>erkennungFeuer</SPEC-OBJECT-REF>
+          </TARGET>
+          <SOURCE>
+            <SPEC-OBJECT-REF>&#252;berwachungBodentemperatur</SPEC-OBJECT-REF>
+          </SOURCE>
+          <TYPE>
+            <SPEC-RELATION-TYPE-REF>Ableitungsbeziehung</SPEC-RELATION-TYPE-REF>
+          </TYPE>
+        </SPEC-RELATION>
+      </SPEC-RELATIONS>
+    </REQ-IF-CONTENT>
+  </CORE-CONTENT>
+</REQ-IF>
diff --git a/tests/integration/commands/validate/_xsd_schema_validation/03_invalid_table_internal/test.itest b/tests/integration/commands/validate/_xsd_schema_validation/03_invalid_table_internal/test.itest
new file mode 100644
index 0000000..8e35d1b
--- /dev/null
+++ b/tests/integration/commands/validate/_xsd_schema_validation/03_invalid_table_internal/test.itest
@@ -0,0 +1,2 @@
+RUN: %expect_exit 1 %reqif validate --reqif-schema %S/sample.reqif | filecheck %s --dump-input=fail
+CHECK: Reason: Unexpected child with tag 'REQIF:IS-TABLE-INTERNAL' at position 1. Tag 'REQIF:OBJECT' expected.