diff --git a/xml/tests/src/com/intellij/xml/ValidateXmlTest.java b/xml/tests/src/com/intellij/xml/ValidateXmlTest.java
new file mode 100644
index 000000000000..f7983ad56fcd
--- /dev/null
+++ b/xml/tests/src/com/intellij/xml/ValidateXmlTest.java
@@ -0,0 +1,292 @@
+// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
+package com.intellij.xml;
+
+import com.intellij.codeInsight.CodeInsightTestCase;
+import com.intellij.javaee.ExternalResourceManagerEx;
+import com.intellij.javaee.ExternalResourceManagerExImpl;
+import com.intellij.openapi.util.SystemInfo;
+import com.intellij.openapi.vfs.VfsUtil;
+import com.intellij.openapi.vfs.VirtualFile;
+import com.intellij.psi.PsiDocumentManager;
+import com.intellij.psi.PsiManager;
+import com.intellij.psi.xml.XmlFile;
+import com.intellij.testFramework.PlatformTestUtil;
+import com.intellij.testFramework.PsiTestUtil;
+import com.intellij.xml.actions.validate.TestErrorReporter;
+import com.intellij.xml.actions.validate.ValidateXmlActionHandler;
+import com.intellij.xml.util.XmlResourceResolver;
+import org.jetbrains.annotations.NonNls;
+
+import java.io.File;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+
+@SuppressWarnings({"ALL"})
+public class ValidateXmlTest extends CodeInsightTestCase {
+ @NonNls private static final String FILE_NOT_FOUND_MESSAGE = SystemInfo.isWindows ? "The system cannot find the file specified" : "No such file or directory";
+
+ public void testSchemaNoErrors1() throws Throwable {
+ perform("1.xsd", "");
+ }
+
+ public void testSchemaNoErrors2() throws Throwable {
+ perform("library.xsd", "");
+ }
+
+ public void testSchemaNoErrors3() throws Throwable {
+ perform("library.xml", "");
+ }
+
+ public void testSchemaNoErrors4() throws Throwable {
+ perform("library1.xml", "");
+ }
+
+ public void testSchemaErrors1() throws Throwable {
+ // till fixing Xerces
+ //perform("e1.xsd", " :12:62: src-resolve: Cannot resolve the name 'PurchaseOrderType' to a(n) 'type definition' component.");
+ }
+
+ public void testXInclude() throws Throwable {
+ perform("XInclude.xhtml", "xhtml1-transitional.xsd:(1483:51) ct-props-correct.5: Error for type '#AnonType_a'. Two attribute declarations, 'name' and 'id' have types which are derived from ID.\n" +
+ "(8:95) SchemeUnsupported: The XPointer scheme 'xpointer' is not supported.\n" +
+ "(8:95) Include operation failed, reverting to fallback. Resource error reading file as XML (href='x-head.html'). Reason: x-head.html (" + FILE_NOT_FOUND_MESSAGE + ")\n" +
+ "(8:95) An 'include' failed, and no 'fallback' element was found.",
+ null, null, true,
+ "reason: .*x-head.html",
+ "reason: x-head.html"
+ );
+ }
+
+ public void testXInclude2() throws Throwable {
+ perform("XInclude2.xhtml", "xhtml1-transitional.xsd:(1483:51) ct-props-correct.5: error for type '#anontype_a'. two attribute declarations, 'name' and 'id' have types which are derived from id.\n" +
+ "(6:95) schemeunsupported: the xpointer scheme 'xpointer' is not supported.\n" +
+ "(6:95) include operation failed, reverting to fallback. resource error reading file as xml (href='x-head.html'). reason: x-head.html (" + FILE_NOT_FOUND_MESSAGE + ")\n" +
+ "(6:95) an 'include' failed, and no 'fallback' element was found.",
+ null, null, true,
+ "reason: .*x-head.html",
+ "reason: x-head.html"
+ );
+ }
+
+ public void testExtDndNoErrors1() throws Throwable {
+ perform("ejbjar.xml", "");
+ }
+
+ public void testExtDndNoErrors2() throws Throwable {
+ perform("xhtml.xml", "");
+ }
+
+ public void testReferencingDtdIncludeFromExtResource() throws Throwable {
+ String[] urls = {"http://www.w3.org/TR/xhtml1/dtd/xhtml1-strict2.dtd",
+ "http://www.w3.org/TR/xhtml1/dtd/_xhtml-lat1.ent",
+ "http://www.w3.org/TR/xhtml1/dtd/_xhtml-symbol.ent",
+ "http://www.w3.org/TR/xhtml1/dtd/_xhtml-special.ent"
+ };
+ String[] pathes = {"xhtml1-strict2.dtd","xhtml-lat1.ent", "xhtml-symbol.ent", "xhtml-special.ent"};
+
+ perform("xhtml.xhtml", "", urls, pathes, false, null, null);
+ }
+
+ public void testXercesStackOverflow() throws Throwable {
+ perform(getTestName(false) + ".xml", "");
+ }
+
+ public void testSeveralImportsWithOneNamespace() throws Throwable {
+ System.setProperty(XmlResourceResolver.HONOUR_ALL_SCHEMA_LOCATIONS_PROPERTY_KEY, "true");
+ try {
+ String testName = getTestName(false);
+ String[] urls = {"","",""};
+ String[] pathes = {testName + "_product.xsd", testName + "_instrumentclassification.xsd", testName + "_instrumentreference.xsd"};
+ perform(testName + ".xml", "", urls, pathes, false, null, null);
+ }
+ finally {
+ System.setProperty(XmlResourceResolver.HONOUR_ALL_SCHEMA_LOCATIONS_PROPERTY_KEY, "");
+ }
+ }
+
+ public void testReferencingAnotherSchema() throws Throwable {
+ perform(
+ getTestName(false) + ".xml",
+ "ReferencingAnotherSchema2.xsd:(7:62) src-resolve: Cannot resolve the name 'MyComponentType' to a(n) 'type definition' component."
+ );
+ }
+
+ public void testSchemaWithVersion() throws Throwable {
+ perform(
+ getTestName(false) + ".xml",
+ "",
+ null, null, false, null, null
+ );
+ }
+
+ public void testFilteringErrors() throws Throwable {
+ String[] urls = {"urn:myschema"};
+ String[] pathes = {"po.xsd"};
+
+ perform("po.xml",
+ "po.xsd:(2:77) EmptyTargetNamespace: In schema document 'po.xsd', the value of the 'targetNamespace' attribute cannot be an empty string.\n" +
+ "po.xsd:(2:77) TargetNamespace.1: Expecting namespace 'urn:myschema', but the target namespace of the schema document is 'null'.\n" +
+ "(2:60) cvc-elt.1.a: Cannot find the declaration of element 'purchaseOrder'.", urls, pathes, false,
+ "'file[^']*'",
+ "'po.xsd'");
+ }
+
+ public void testIgnoredResource() throws Throwable {
+ String[] urls = {"http://www.w3.org/TR/xhtml1/dtd/xhtml1-strict2.dtd",
+ "http://www.w3.org/TR/xhtml1/dtd/_xhtml-lat1.ent",
+ "http://www.w3.org/TR/xhtml1/dtd/_xhtml-symbol.ent",
+ "http://www.w3.org/TR/xhtml1/dtd/_xhtml-special.ent"
+ };
+
+ ExternalResourceManagerExImpl.getInstanceEx().addIgnoredResources(Arrays.asList(urls), getTestRootDisposable());
+ perform("xhtml.xhtml", "");
+ }
+
+ public void testWebAppSchema() throws Throwable {
+ perform("web.xml", ""); //, new String[]{"http://java.sun.com/xml/ns/j2ee"}, new String[]{"j2ee_1_4.xsd"}, false);
+ }
+
+ public void testNoDtdOrSchema1() throws Throwable {
+ perform("novalidation.xml", "");
+ }
+
+ public void testNoDtdOrSchema2() throws Throwable {
+ perform("novalidationerror.xml", "(4:5) The element type \"c\" must be terminated by the matching end-tag \"\".");
+ }
+
+ public void testExtDndErrors1() throws Throwable {
+ perform("ejbjar1.xml",
+ "(7:21) Element type \"escription\" must be declared.\n" +
+ "(20:17) The content of element type \"session\" must match \"(description?,display-name?,small-icon?,large-icon?,ejb-name,home?,remote?,local-home?,local?,ejb-class,session-type,transaction-type,env-entry*,ejb-ref*,ejb-local-ref*,security-role-ref*,security-identity?,resource-ref*,resource-env-ref*)\".");
+ }
+
+ public void testExtDndErrors2() throws Throwable {
+ perform("xhtml1.xml",
+ "(6:8) Element type \"bodyb\" must be declared.\n" +
+ "(9:8) The content of element type \"html\" must match \"(head,body)\".");
+ }
+
+ public void testExtResources() throws Throwable {
+ perform("xsl.xml", "", new String[] {"http://www.w3.org/1999/XSL/Transform"}, new String[] {"xsl.xsd"}, false);
+ }
+
+ public void testNoRouteToHostException() throws Throwable {
+ perform("NoRouteToHostException.xml", "(0:0) External resource http://aaa.bbb.ccc/x.ent is not registered", new String[] {"NoRouteToHostException.dtd"}, new String[] {"NoRouteToHostException.dtd"}, false);
+ }
+
+ public void testFatalProblem() throws Throwable {
+ // problem in dtd
+ perform(
+ "fatalError.xml",
+ "fatalError.dtd:(10:3) The markup in the document preceding the root element must be well-formed.",
+ new String[] {"http://www.w3.org/1999/XSL/Transform"},
+ new String[] {"fatalError.dtd"},
+ false
+ );
+ }
+
+ public void testRef() throws Throwable {
+ perform("cobb.xml", "(3:57) Attribute \"abstract\" with value \"\" must have a value from the list \"true false \".");
+ }
+
+ public void testJ2eeResources() throws Throwable {
+ perform("web_app.xml", "(32:15) cvc-complex-type.2.4.a: Invalid content was found starting with element '{\"http://java.sun.com/xml/ns/j2ee\":aaa}'. One of '{\"http://java.sun.com/xml/ns/j2ee\":description, \"http://java.sun.com/xml/ns/j2ee\":display-name, \"http://java.sun.com/xml/ns/j2ee\":icon, \"http://java.sun.com/xml/ns/j2ee\":distributable, \"http://java.sun.com/xml/ns/j2ee\":context-param, \"http://java.sun.com/xml/ns/j2ee\":filter, \"http://java.sun.com/xml/ns/j2ee\":filter-mapping, \"http://java.sun.com/xml/ns/j2ee\":listener, \"http://java.sun.com/xml/ns/j2ee\":servlet, \"http://java.sun.com/xml/ns/j2ee\":servlet-mapping, \"http://java.sun.com/xml/ns/j2ee\":session-config, \"http://java.sun.com/xml/ns/j2ee\":mime-mapping, \"http://java.sun.com/xml/ns/j2ee\":welcome-file-list, \"http://java.sun.com/xml/ns/j2ee\":error-page, \"http://java.sun.com/xml/ns/j2ee\":jsp-config, \"http://java.sun.com/xml/ns/j2ee\":security-constraint, \"http://java.sun.com/xml/ns/j2ee\":login-config, \"http://java.sun.com/xml/ns/j2ee\":security-role, \"http://java.sun.com/xml/ns/j2ee\":env-entry, \"http://java.sun.com/xml/ns/j2ee\":ejb-ref, \"http://java.sun.com/xml/ns/j2ee\":ejb-local-ref, \"http://java.sun.com/xml/ns/j2ee\":service-ref, \"http://java.sun.com/xml/ns/j2ee\":resource-ref, \"http://java.sun.com/xml/ns/j2ee\":resource-env-ref, \"http://java.sun.com/xml/ns/j2ee\":message-destination-ref, \"http://java.sun.com/xml/ns/j2ee\":message-destination, \"http://java.sun.com/xml/ns/j2ee\":locale-encoding-mapping-list}' is expected.");
+ }
+
+ //public void testJBossDeploymentStructureDescriptor() throws Throwable {
+ // perform("jboss-deployment-structure.xml", "", new String[] {"urn:jboss:deployment-structure:1.0"}, new String[] { "jboss-deployment-structure-1_0.xsd" }, false);
+ //}
+
+ public void testSchemaAutodetection() throws Throwable {
+ perform("nuancevoicexml-2-0.xml", "(0:0) External resource http://www.w3.org/2001/vxml is not registered\n" +
+ "(-1:-1) Premature end of file.");
+ }
+
+ public void testXsd() throws Throwable {
+ perform("test.xsd", "(11:59) cvc-complex-type.2.4.d: Invalid content was found starting with element 'attribute'. No child element is expected at this point.");
+ }
+
+ public void testXsd11Alternative() throws Throwable {
+ perform("Alternative.xsd", "(41:83) cvc-complex-type.2.4.a: Invalid content was found starting with element '{\"http://www.w3.org/2001/XMLSchema\":alternative}'. One of '{\"http://www.w3.org/2001/XMLSchema\":annotation, \"http://www.w3.org/2001/XMLSchema\":simpleType, \"http://www.w3.org/2001/XMLSchema\":complexType, \"http://www.w3.org/2001/XMLSchema\":unique, \"http://www.w3.org/2001/XMLSchema\":key, \"http://www.w3.org/2001/XMLSchema\":keyref}' is expected.");
+ ExternalResourceManagerEx.getInstanceEx().setXmlSchemaVersion(ExternalResourceManagerEx.XMLSchemaVersion.XMLSchema_1_1, getProject());
+ perform("Alternative.xsd", "XMLSchema.xsd:(936:30) rcase-Recurse.2: There is not a complete functional mapping between the particles.\n" +
+ "XMLSchema.xsd:(936:30) derivation-ok-restriction.5.4.2: Error for type 'all'. The particle of the type is not a valid restriction of the particle of the base.");
+ }
+
+ public void testRelativePath() throws Throwable {
+ perform("instances/enumerations.xml", "");
+ }
+
+ private void perform(String fileName, String message) throws Throwable {
+ perform(fileName,message,null,null, false);
+ }
+
+ private void perform(String fileName, String message, String[] urls, String[] files, boolean caseInsensitive) throws Throwable {
+ perform(fileName, message, urls, files, caseInsensitive, null, null);
+ }
+
+ private void perform(String fileName, String message, String[] urls, String[] files, boolean caseInsensitive, String pattern, String replacement) throws Throwable {
+ VirtualFile root = PsiTestUtil.createTestProjectStructure(
+ myProject, myModule, PlatformTestUtil.getCommunityPath().replace(File.separatorChar, '/') + "/xml/tests/testData/validateXml", myFilesToDelete
+ );
+ VirtualFile virtualFile = VfsUtil.findRelativeFile(root, fileName.split("/"));
+
+ if (urls != null && files != null) {
+ assertEquals(urls.length,files.length);
+ for(int i = 0; i< urls.length; ++i) {
+ final VirtualFile vFile = root.findChild(files[i]);
+ assertNotNull(files[i], vFile);
+ ExternalResourceManagerExImpl.registerResourceTemporarily(urls[i], vFile.getPath(), getTestRootDisposable());
+ }
+ }
+
+ PsiDocumentManager.getInstance(myProject).commitAllDocuments();
+
+ myFile = PsiManager.getInstance(myProject).findFile(virtualFile);
+ assertNotNull(myFile);
+ myEditor = createEditor(virtualFile);
+ assertNotNull(myEditor);
+
+ ValidateXmlActionHandler handler = new ValidateXmlActionHandler(true);
+ TestErrorReporter errorReporter = new TestErrorReporter(handler);
+ handler.setErrorReporter(errorReporter);
+ handler.doValidate((XmlFile)myFile);
+ String actual = "";
+
+
+ List errors = errorReporter.getErrors();
+ for (Iterator i = errors.iterator(); i.hasNext();) {
+ actual += i.next();
+ if (i.hasNext()) {
+ actual += "\n";
+ }
+ }
+
+ if (caseInsensitive) {
+ message = message.toLowerCase();
+ actual = actual.toLowerCase();
+ }
+
+ if (pattern != null && replacement != null) actual = actual.replaceAll(pattern, replacement);
+ assertEquals(message, actual);
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ String BASE_PATH = PlatformTestUtil.getCommunityPath().replace(File.separatorChar, '/') + "/xml/tests/testData/xml/";
+ ExternalResourceManagerExImpl.registerResourceTemporarily("http://java.sun.com/dtd/ejb-jar_2_0.dtd",
+ BASE_PATH + "ejb-jar_2_0.dtd",
+ getTestRootDisposable());
+ ExternalResourceManagerExImpl.registerResourceTemporarily("http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd",
+ BASE_PATH + "web-app_2_4.xsd",
+ getTestRootDisposable());
+ ExternalResourceManagerExImpl.registerResourceTemporarily("http://java.sun.com/xml/ns/j2ee/jsp_2_0.xsd",
+ BASE_PATH + "jsp_2_0.xsd",
+ getTestRootDisposable());
+ ExternalResourceManagerExImpl.registerResourceTemporarily("http://www.ibm.com/webservices/xsd/j2ee_web_services_client_1_1.xsd",
+ BASE_PATH + "j2ee_web_services_client_1_1.xsd",
+ getTestRootDisposable());
+ }
+}
diff --git a/xml/tests/testData/validateXml/1.xsd b/xml/tests/testData/validateXml/1.xsd
new file mode 100644
index 000000000000..086235bb28b8
--- /dev/null
+++ b/xml/tests/testData/validateXml/1.xsd
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+ Purchase order schema for Example.com.
+ Copyright 2000 Example.com. All rights reserved.
+
+
+
+
+
+
+
diff --git a/xml/tests/testData/validateXml/Alternative.xsd b/xml/tests/testData/validateXml/Alternative.xsd
new file mode 100644
index 000000000000..1cc486b4559c
--- /dev/null
+++ b/xml/tests/testData/validateXml/Alternative.xsd
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/xml/tests/testData/validateXml/NoRouteToHostException.dtd b/xml/tests/testData/validateXml/NoRouteToHostException.dtd
new file mode 100644
index 000000000000..fae66884a79d
--- /dev/null
+++ b/xml/tests/testData/validateXml/NoRouteToHostException.dtd
@@ -0,0 +1,3 @@
+
+%zzz;
+
\ No newline at end of file
diff --git a/xml/tests/testData/validateXml/NoRouteToHostException.xml b/xml/tests/testData/validateXml/NoRouteToHostException.xml
new file mode 100644
index 000000000000..c0a4fb2775a2
--- /dev/null
+++ b/xml/tests/testData/validateXml/NoRouteToHostException.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/xml/tests/testData/validateXml/ReferencingAnotherSchema.xml b/xml/tests/testData/validateXml/ReferencingAnotherSchema.xml
new file mode 100644
index 000000000000..ddf781c6eaa5
--- /dev/null
+++ b/xml/tests/testData/validateXml/ReferencingAnotherSchema.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/xml/tests/testData/validateXml/ReferencingAnotherSchema.xsd b/xml/tests/testData/validateXml/ReferencingAnotherSchema.xsd
new file mode 100644
index 000000000000..c50a512c2d7b
--- /dev/null
+++ b/xml/tests/testData/validateXml/ReferencingAnotherSchema.xsd
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/xml/tests/testData/validateXml/ReferencingAnotherSchema2.xsd b/xml/tests/testData/validateXml/ReferencingAnotherSchema2.xsd
new file mode 100644
index 000000000000..eb66f1b293fa
--- /dev/null
+++ b/xml/tests/testData/validateXml/ReferencingAnotherSchema2.xsd
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/xml/tests/testData/validateXml/SchemaWithVersion.xml b/xml/tests/testData/validateXml/SchemaWithVersion.xml
new file mode 100644
index 000000000000..afe7f4fff8d7
--- /dev/null
+++ b/xml/tests/testData/validateXml/SchemaWithVersion.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/xml/tests/testData/validateXml/SeveralImportsWithOneNamespace.xml b/xml/tests/testData/validateXml/SeveralImportsWithOneNamespace.xml
new file mode 100644
index 000000000000..b47605df2c09
--- /dev/null
+++ b/xml/tests/testData/validateXml/SeveralImportsWithOneNamespace.xml
@@ -0,0 +1,6 @@
+
+ e gero
+ CREDIT_DERIVATIVE
+ string
+
\ No newline at end of file
diff --git a/xml/tests/testData/validateXml/SeveralImportsWithOneNamespace_instrumentclassification.xsd b/xml/tests/testData/validateXml/SeveralImportsWithOneNamespace_instrumentclassification.xsd
new file mode 100644
index 000000000000..92b912f9009e
--- /dev/null
+++ b/xml/tests/testData/validateXml/SeveralImportsWithOneNamespace_instrumentclassification.xsd
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/xml/tests/testData/validateXml/SeveralImportsWithOneNamespace_instrumentreference.xsd b/xml/tests/testData/validateXml/SeveralImportsWithOneNamespace_instrumentreference.xsd
new file mode 100644
index 000000000000..e0ecb537347f
--- /dev/null
+++ b/xml/tests/testData/validateXml/SeveralImportsWithOneNamespace_instrumentreference.xsd
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/xml/tests/testData/validateXml/SeveralImportsWithOneNamespace_product.xsd b/xml/tests/testData/validateXml/SeveralImportsWithOneNamespace_product.xsd
new file mode 100644
index 000000000000..30ed8af9b510
--- /dev/null
+++ b/xml/tests/testData/validateXml/SeveralImportsWithOneNamespace_product.xsd
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/xml/tests/testData/validateXml/XInclude.xhtml b/xml/tests/testData/validateXml/XInclude.xhtml
new file mode 100644
index 000000000000..5eb526c67e78
--- /dev/null
+++ b/xml/tests/testData/validateXml/XInclude.xhtml
@@ -0,0 +1,13 @@
+
+
+
+
+ Test
+
+
+
+
+
+
\ No newline at end of file
diff --git a/xml/tests/testData/validateXml/XInclude2.xhtml b/xml/tests/testData/validateXml/XInclude2.xhtml
new file mode 100644
index 000000000000..50f7113ed4db
--- /dev/null
+++ b/xml/tests/testData/validateXml/XInclude2.xhtml
@@ -0,0 +1,11 @@
+
+
+
+ Test
+
+
+
+
+
+
\ No newline at end of file
diff --git a/xml/tests/testData/validateXml/XercesStackOverflow.xml b/xml/tests/testData/validateXml/XercesStackOverflow.xml
new file mode 100644
index 000000000000..be5894bd3efb
--- /dev/null
+++ b/xml/tests/testData/validateXml/XercesStackOverflow.xml
@@ -0,0 +1,4 @@
+
+
+ TCAAACTCCAAATGACTCCACCAAGATGAAAGACACCAAGGCATGCTGGGAACTGAATTTTATAAATTAACTTTATTACAAAAAGCAAAATGTTAGTTTCTCATTGTGAGTGATTCAAGAAAACAACGGTAACAGCCCTGGCAGGAGCTGGGACCAGGATACCAGTATGCAGGCTGAGGGGTCAAAGGCCAGGCTCAGGAGCGGGCTGACAGGCACTGATTCACAACCTCCAAGAGGTGGGTGTTCTCCAGGGCAGCTGCCACCCGCTCCTTATCTGCAAGTTGCTTGTTCACTAGGTGGGAAGAAGGGTGTGGGGAAGGCAGAGTCAAAGCTAGGCTCTGGCCAGAGTGCTAGCCAGCCCTACCTCTGAACCTCTATATAGGATATGTCCCCCGCAGCAACAGAGCCCTCCTGTCACCTCCTTCCCAGGACCCCACATATTGATCAGGCTACTTCAACCACCTGAGCCCACCTAATCTGCCTTCTTAGGATCCCTCCCCCTGGCTGCCTCCTGCGCTGCTGAAGCCTGACACACTCTGGTCCTGTATATTTGGTGAGAGGGGATTTGGGAGAAGAGGACATGGTAAGCAAAGGAGAGTCTTCTCAGGCCAGCTTCGGTCTAGGCTATAACCCATACTGAGGAGTCTCTGGCAATTTCACTCACACAGTTACCCATCTCCAGTCTTGCCCATAGACTCCTGTGCAAGGGGGAAGCCTCAGACTGCTTAGGGGGTGCCCGGGCCAACACCCTCACCACCAGTCCACACTTACCTGCATGCTCTGAGGCATGGGTCCCCGGAGTAATGTGCACGTCCATCTGGGAGGGAGATAACCAGGGCCTGAACACCCACCCACCGACCCACACTTTTCCCTGCAGCCCCCAGACCCTCAGGCACCATCTCCAGCTGATCCTTCCTCCTAATCATGCCTTTGGACTCTGGCCCTTCCGTTACACCCCAAACCCATCCACAGGTATTCCAATTCTTTTTTTTTTTCCAAGACTGAGTCTTGCTCTGTTGCCCAGGCTGGAGTGCAGCAGCGCAATCTCGGCTCACTGCAACCTCTGTCTCCCAGGTTCAATTTGATTCTCCTTCCTCAGCCACCCGTGTAGCTGGGACCACAGGCACACACCACCACGCCCCACTAATTTTTGTATTTTTAGTAGAGATGAGATTTCACCATGTTGGCCAGGCTGGTCTCCAACTCCTAACCTCAGATGATCCACCCGCCTCAGCCTCCCAAAGTGCTGGGATTACAGGCGTGAGCCACCGCGCCCGGCCCTAGCTATTCCAATTCTATCCAAAGAACTGGCCCACTACTGTTGATTTAAAGGCCTGCCTGTGCCCCACCCCTGGTCCAAACCCATCTGCCGCTCCCTACTGCCCTTCCTGCCACACTCTTCAATACTTTTCTCCACTTTCCAGCTCAGATCTTTATTCTTGTCACATCGACTTGGAAAGCTTCCTCCCAGTTTCCTCTCTGCTAATGGGGATCCTTCCAGGCCCCACTCTGATGTCCTATCCATGTTCATGCTCTCCCAGTCCCCATCCTCAGCAGTAGACCCTCAATGCCTGGTCTCACTCCCGGGGCTCAGCTCCAACTGACCTTGAAACGCTGAGGAAGGGAGCGCAGAAGCTTGACCTTGATGGACAGACCAATAAGGGTGGCCATGCTGCAGTGCGGAATGGTTGGTGTGAAAGCCACAGCCACTGTACTCTCGGGGTCGCTAACCTGGTTGTGGAGGAGAGATGTCAAGAGTCAACCACCCTCAGCCCAAGGTCCCTCTTCTTAGTTTGTTGTTTTGGGCAAATCATCCAACTTCTATGGGCCTCAGTTTCAACACCCATAAAATAGGCACAACAATCTCCCTCCCCAAAGATACCCTTCGGTGTTCGTGAGCATAGAGCACGCCAGCTCCTGCTGCACAGAAACCTTTCTGACTCTCTGGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATTTTTCAAACTCCAAATGACTCCACCAAGATGAAAGACACCAAGGCATGCTGGGAACTGAATTTTATAAATTAACTTTATTACAAAAAGCAAAATGTTAGTTTCTCATTGTGAGTGATTCAAGAAAACAACGGTAACAGCCCTGGCAGGAGCTGGGACCAGGATACCAGTATGCAGGCTGAGGGGTCAAAGGCCAGGCTCAGGAGCGGGCTGACAGGCACTGATTCACAACCTCCAAGAGGTGGGTGTTCTCCAGGGCAGCTGCCACCCGCTCCTTATCTGCAAGTTGCTTGTTCACTAGGTGGGAAGAAGGGTGTGGGGAAGGCAGAGTCAAAGCTAGGCTCTGGCCAGAGTGCTAGCCAGCCCTACCTCTGAACCTCTATATAGGATATGTCCCCCGCAGCAACAGAGCCCTCCTGTCACCTCCTTCCCAGGACCCCACATATTGATCAGGCTACTTCAACCACCTGAGCCCACCTAATCTGCCTTCTTAGGATCCCTCCCCCTGGCTGCCTCCTGCGCTGCTGAAGCCTGACACACTCTGGTCCTGTATATTTGGTGAGAGGGGATTTGGGAGAAGAGGACATGGTAAGCAAAGGAGAGTCTTCTCAGGCCAGCTTCGGTCTAGGCTATAACCCATACTGAGGAGTCTCTGGCAATTTCACTCACACAGTTACCCATCTCCAGTCTTGCCCATAGACTCCTGTGCAAGGGGGAAGCCTCAGACTGCTTAGGGGGTGCCCGGGCCAACACCCTCACCACCAGTCCACACTTACCTGCATGCTCTGAGGCATGGGTCCCCGGAGTAATGTGCACGTCCATCTGGGAGGGAGATAACCAGGGCCTGAACACCCACCCACCGACCCACACTTTTCCCTGCAGCCCCCAGACCCTCAGGCACCATCTCCAGCTGATCCTTCCTCCTAATCATGCCTTTGGACTCTGGCCCTTCCGTTACACCCCAAACCCATCCACAGGTATTCCAATTCTTTTTTTTTTTCCAAGACTGAGTCTTGCTCTGTTGCCCAGGCTGGAGTGCAGCAGCGCAATCTCGGCTCACTGCAACCTCTGTCTCCCAGGTTCAATTTGATTCTCCTTCCTCAGCCACCCGTGTAGCTGGGACCACAGGCACACACCACCACGCCCCACTAATTTTTGTATTTTTAGTAGAGATGAGATTTCACCATGTTGGCCAGGCTGGTCTCCAACTCCTAACCTCAGATGATCCACCCGCCTCAGCCTCCCAAAGTGCTGGGATTACAGGCGTGAGCCACCGCGCCCGGCCCTAGCTATTCCAATTCTATCCAAAGAACTGGCCCACTACTGTTGATTTAAAGGCCTGCCTGTGCCCCACCCCTGGTCCAAACCCATCTGCCGCTCCCTACTGCCCTTCCTGCCACACTCTTCAATACTTTTCTCCACTTTCCAGCTCAGATCTTTATTCTTGTCACATCGACTTGGAAAGCTTCCTCCCAGTTTCCTCTCTGCTAATGGGGATCCTTCCAGGCCCCACTCTGATGTCCTATCCATGTTCATGCTCTCCCAGTCCCCATCCTCAGCAGTAGACCCTCAATGCCTGGTCTCACTCCCGGGGCTCAGCTCCAACTGACCTTGAAACGCTGAGGAAGGGAGCGCAGAAGCTTGACCTTGATGGACAGACCAATAAGGGTGGCCATGCTGCAGTGCGGAATGGTTGGTGTGAAAGCCACAGCCACTGTACTCTCGGGGTCGCTAACCTGGTTGTGGAGGAGAGATGTCAAGAGTCAACCACCCTCAGCCCAAGGTCCCTCTTCTTAGTTTGTTGTTTTGGGCAAATCATCCAACTTCTATGGGCCTCAGTTTCAACACCCATAAAATAGGCACAACAATCTCCCTCCCCAAAGATACCCTTCGGTGTTCGTGAGCATAGAGCACGCCAGCTCCTGCTGCACAGAAACCTTTCTGACTCTCTGGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATTTT
+
\ No newline at end of file
diff --git a/xml/tests/testData/validateXml/XercesStackOverflow.xsd b/xml/tests/testData/validateXml/XercesStackOverflow.xsd
new file mode 100644
index 000000000000..d0a5718c30c2
--- /dev/null
+++ b/xml/tests/testData/validateXml/XercesStackOverflow.xsd
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+ A IUPAC DNA sequence. The valid sequence alphabet is A, T, C, G
+ and the IUPAC ambiguity codes. See
+ http://www.ncbi.nlm.nih.gov/SNP/iupac.html for a list of the
+ IUPAC ambiguity codes and their definitions.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This type describes a gene.
+
+
+
+
+
+
+
+
+
+
+ The sequence for this gene.
+
+
+
+
+
+
+
+
+
+
diff --git a/xml/tests/testData/validateXml/cobb.xml b/xml/tests/testData/validateXml/cobb.xml
new file mode 100644
index 000000000000..81ff32a22a52
--- /dev/null
+++ b/xml/tests/testData/validateXml/cobb.xml
@@ -0,0 +1,3 @@
+
+
+
diff --git a/xml/tests/testData/validateXml/e1.xsd b/xml/tests/testData/validateXml/e1.xsd
new file mode 100644
index 000000000000..d9293c828346
--- /dev/null
+++ b/xml/tests/testData/validateXml/e1.xsd
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+ Purchase order schema for Example.com.
+ Copyright 2000 Example.com. All rights reserved.
+
+
+
+
+
+
+
diff --git a/xml/tests/testData/validateXml/ejbjar.xml b/xml/tests/testData/validateXml/ejbjar.xml
new file mode 100644
index 000000000000..1471c9ae1470
--- /dev/null
+++ b/xml/tests/testData/validateXml/ejbjar.xml
@@ -0,0 +1,23 @@
+
+
+ Sample EJB provided by Atinav
+ XASampleJar
+
+
+
+ EnterpriseBean
+ EnterpriseBean
+ SamplePrograms.xa.AvenirHome
+ SamplePrograms.xa.AvenirRemote
+ SamplePrograms.xa.AvenirEJB
+ Stateful
+ Bean
+
+ AvenirSample
+ javax.sql.DataSource
+ Container
+
+
+
+
+
diff --git a/xml/tests/testData/validateXml/ejbjar1.xml b/xml/tests/testData/validateXml/ejbjar1.xml
new file mode 100644
index 000000000000..70394fcac9b9
--- /dev/null
+++ b/xml/tests/testData/validateXml/ejbjar1.xml
@@ -0,0 +1,23 @@
+
+
+ Sample EJB provided by Atinav
+ XASampleJar
+
+
+
+ EnterpriseBean
+ EnterpriseBean
+ SamplePrograms.xa.AvenirHome
+ SamplePrograms.xa.AvenirRemote
+ SamplePrograms.xa.AvenirEJB
+ Stateful
+ Bean
+
+ AvenirSample
+ javax.sql.DataSource
+ Container
+
+
+
+
+
diff --git a/xml/tests/testData/validateXml/enumerations.xsd b/xml/tests/testData/validateXml/enumerations.xsd
new file mode 100644
index 000000000000..fca950a17f69
--- /dev/null
+++ b/xml/tests/testData/validateXml/enumerations.xsd
@@ -0,0 +1,127 @@
+
+
+
+
+
+ Example enumerations:
+
+
+ enumeration:
+ a simple (disallows annotations), closed (is not extensible) enumeration
+
+
+ enumerationWithAttributes:
+ a complex (allows annotations), closed (is not extensible) enumeration
+
+
+ openEnumeration:
+ a simple (disallows annotations), open (is extensible) enumeration
+
+
+ openEnumerationWithAttributes:
+ a complex (allows annotations), open (is extensible) enumeration
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ a simple (disallows annotations), closed (is not extensible) enumeration
+
+
+
+
+
+
+
+
+
+
+ a complex (allows annotations), closed (is not extensible) enumeration
+
+
+
+
+
+
+
+
+
+
+
+ a reusable group of attributes for extending simple enumerations to make complex enumerations
+
+
+
+
+
+
+
+
+ a simple (disallows annotations), open (is extensible) enumeration
+
+
+
+
+
+
+
+ a simple (disallows annotations), open (is extensible) enumeration
+
+
+
+
+
+
+ a simple (disallows annotations), closed (is not extensible) enumeration
+
+
+
+
+
+
+
+
+
+
+ a simple (disallows annotations), closed (is not extensible) enumeration
+
+
+
+
+
+
+
+
+
+
+
+
+ a complex (allows annotations), open (is extensible) enumeration
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/xml/tests/testData/validateXml/fatalError.dtd b/xml/tests/testData/validateXml/fatalError.dtd
new file mode 100644
index 000000000000..adb71d87f7bf
--- /dev/null
+++ b/xml/tests/testData/validateXml/fatalError.dtd
@@ -0,0 +1,12 @@
+
+
+
+
+
+%xhtml-dtd;
diff --git a/xml/tests/testData/validateXml/fatalError.xml b/xml/tests/testData/validateXml/fatalError.xml
new file mode 100644
index 000000000000..85fd23bebfc4
--- /dev/null
+++ b/xml/tests/testData/validateXml/fatalError.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/xml/tests/testData/validateXml/instances/enumerations.xml b/xml/tests/testData/validateXml/instances/enumerations.xml
new file mode 100644
index 000000000000..76a6f6178b5a
--- /dev/null
+++ b/xml/tests/testData/validateXml/instances/enumerations.xml
@@ -0,0 +1,18 @@
+
+
+ A
+ B
+ A
+ B
+ A
+ B
+ 777
+ true
+ A
+ B
+ 42
+ C
+ A
+ 111
+
\ No newline at end of file
diff --git a/xml/tests/testData/validateXml/jboss-deployment-structure-1_0.xsd b/xml/tests/testData/validateXml/jboss-deployment-structure-1_0.xsd
new file mode 100644
index 000000000000..7f0f7ebb4965
--- /dev/null
+++ b/xml/tests/testData/validateXml/jboss-deployment-structure-1_0.xsd
@@ -0,0 +1,581 @@
+
+
+
+
+
+
+
+
+
+
+ Root element for a a jboss-structure file.
+
+
+
+
+
+
+
+ The jboss structure declaration type; contains deployments and additional modules.
+
+
+
+
+
+
+ Flag indicating whether each of the subdeployments within a .ear can access classes belonging to
+ another subdeployment within the same .ear. Setting this to false, allows the subdeployments to
+ see classes belonging to other subdeployments within the .ear.
+ For example:
+ myapp.ear
+ |
+ |--- web.war
+ |
+ |--- ejb1.jar
+ |
+ |--- ejb2.jar
+
+ If the ear-subdeployments-isolated is set to false, then the classes in web.war can access classes
+ belonging to ejb1.jar and ejb2.jar. Similarly, classes from ejb1.jar can access classes from ejb2.jar
+ (and vice-versa).
+
+ *Note that this flag, has no effect on the isolated classloader of the .war file(s). i.e. irrespective
+ of whether this flag is set to true or false, the .war within a .ear will have a isolated classloader
+ and other subdeployments within that .ear will not be able to access classes from that .war. This is
+ as per spec*
+
+
+
+
+
+
+ Element that corresponds to a deployment. This is used to customise
+ class loading for a deployment or a sub deployment.
+
+
+
+
+
+
+ Element that corresponds to a deployment. This is used to customise
+ class loading for a deployment or a sub deployment.
+
+
+
+
+
+
+ Additional module declaration. This can be used to create additional modules
+ from resource roots inside or outside the deployment.
+
+
+
+
+
+
+
+
+
+
+ The declaration type; contains additional dependencies and resources.
+
+
+
+
+
+
+ Lists filter expressions to apply to the export filter of the local resources of this module
+ (optional). By default, everything is exported. If filter expressions are provided, the default
+ action is to accept all paths if no filters match.
+
+
+
+
+
+
+ Lists the dependencies of this module (optional).
+
+
+
+
+
+
+ Lists the excluded module dependencies.
+
+
+
+
+
+
+ Lists the resource roots of this module (optional).
+
+
+
+
+
+
+ Lists the class file transformers that should be applied for classes loaded by this module.
+
+
+
+
+
+
+
+
+
+
+
+
+ The deployment name.
+
+
+
+
+
+
+
+
+
+
+
+ The module declaration type; contains dependencies and resources.
+
+
+
+
+
+
+ Lists filter expressions to apply to the export filter of the local resources of this module
+ (optional). By default, everything is exported. If filter expressions are provided, the default
+ action is to accept all paths if no filters match.
+
+
+
+
+
+
+ Lists the dependencies of this module (optional).
+
+
+
+
+
+
+ Lists the resource roots of this module (optional).
+
+
+
+
+
+
+
+ The name of this module (required).
+
+
+
+
+
+
+ The version slot of this module (optional).
+
+
+
+
+
+
+
+
+ A module name, which consists of one or more dot (.)-separated segments. Each segment must begin and end
+ with an alphanumeric or underscore (_), and may otherwise contain alphanumerics, underscores, and hyphens
+ (-).
+
+
+
+
+
+
+
+
+
+
+ A module version slot. A slot may consist of one or more alphanumerics, hyphens (-), underscores (_),
+ plus signs (+), asterisks (*), or dots (.).
+
+
+
+
+
+
+
+
+
+
+ A list of zero or more module dependencies.
+
+
+
+
+
+
+ A specified module dependency.
+
+
+
+
+
+
+
+
+
+ A single module dependency expression.
+
+
+
+
+
+
+ A filter used to restrict what packages or directories from this dependency are re-exported by
+ this module. See also the "export" and "services" attributes. The default action of this filter
+ list is controlled by the value of the "export" attribute. Regardless of the setting of these
+ attributes, this filter always behaves as if it has a final entry which rejects META-INF and
+ all of its subdirectories.
+
+
+
+
+
+
+ A filter used to restrict what packages or directories from this dependency are visible to this
+ module. See also the "services" attribute. The default action of this filter list is to reject
+ a path if not matched.
+
+
+
+
+
+
+
+ The dependency module name (required).
+
+
+
+
+
+
+ The dependency module version slot (optional).
+
+
+
+
+
+
+ Specifies whether this module dependency is re-exported by default (default is "false"). Setting
+ this attribute to true sets the default action for the export filter list to "accept"; leaving it
+ as false sets the default action to "reject". Thus you can still export dependency resources even
+ if this attribute is false by listing explicit paths for the export list.
+
+
+
+
+
+
+ Specifies whether and how services found in this dependency are used (default is "none"). Specifying
+ a value of "import" for this attribute is equivalent to adding a filter at the end of the import
+ filter list which includes the META-INF/services path from the dependency module. Setting a value
+ of "export" for this attribute is equivalent to the same action on the export filter list.
+
+
+
+
+
+
+ Specifies whether this dependency is optional (defaults to false). An optional dependency will not
+ cause the module to fail to load if not found; however if the module is added later, it will not be
+ retroactively linked into this module's dependency list.
+
+
+
+
+
+
+
+
+ A list of zero or more excluded module dependencies.
+
+
+
+
+
+
+ A specified module exclusion.
+
+
+
+
+
+
+
+
+
+ A single module dependency exclusion.
+
+
+
+
+
+ The excluded module name (required).
+
+
+
+
+
+
+ The excluded module version slot (optional).
+
+
+
+
+
+
+
+
+ The requested behavior for service handling on a dependency.
+
+
+
+
+
+
+ Do not import or export services from this dependency.
+
+
+
+
+
+
+ Import, but do not re-export, services from this dependency.
+
+
+
+
+
+
+ Import and re-export services found in this dependency.
+
+
+
+
+
+
+
+
+
+ A class name.
+
+
+
+
+
+ The class name.
+
+
+
+
+
+
+
+
+ A filesystem path name.
+
+
+
+
+
+ The path name.
+
+
+
+
+
+
+
+
+ A list of zero or more resource roots for this deployment.
+
+
+
+
+
+
+ A resource root within this deployment.
+
+
+
+
+
+
+
+
+
+ A resource root within a deployment.
+
+
+
+
+
+
+ A path filter specification for this resource root (optional). By default all paths are accepted.
+
+
+
+
+
+
+
+ The name of this resource root (optional). If not specified, defaults to the value of the path
+ attribute.
+
+
+
+
+
+
+ The path of this resource root, relative to the path in which the module.xml file is found.
+
+
+
+
+
+
+
+
+ A filter specification, consisting of zero or more filter items.
+
+
+
+
+
+
+ A path to include. The path value can be a path name or a "glob" which may include the special
+ wildcards "*", "**", and "?".
+
+
+
+
+
+
+ A path to exclude. The path value can be a path name or a "glob" which may include the special
+ wildcards "*", "**", and "?".
+
+
+
+
+
+
+ A set of literal path names to include. Wildcards are not supported.
+
+
+
+
+
+
+ A set of literal path names to exclude. Wildcards are not supported.
+
+
+
+
+
+
+
+
+
+ A path specification type, which may include wildcards.
+
+
+
+
+
+ The path name, which can be a literal path name or it may include the special wildcards "*", "**",
+ and "?".
+
+
+
+
+
+
+
+
+ A set of literal path names which can be used for efficient matching against multiple possible values.
+
+
+
+
+
+
+ The path name to include in the set.
+
+
+
+
+
+
+
+
+
+ A list of java.lang.instrument.ClassFileTransformer implementations that will be applied at classloading
+
+
+
+
+
+
+ The transformer class to include in the set.
+
+
+
+
+
+
+
+
+
+ A java.lang.instrument.ClassFileTransformer that will be applied at classloading
+
+
+
+
+
+ The class name of the transformer
+
+
+
+
+
+
+
diff --git a/xml/tests/testData/validateXml/jboss-deployment-structure.xml b/xml/tests/testData/validateXml/jboss-deployment-structure.xml
new file mode 100644
index 000000000000..6705280641b1
--- /dev/null
+++ b/xml/tests/testData/validateXml/jboss-deployment-structure.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/xml/tests/testData/validateXml/library.xml b/xml/tests/testData/validateXml/library.xml
new file mode 100644
index 000000000000..67a34270ab96
--- /dev/null
+++ b/xml/tests/testData/validateXml/library.xml
@@ -0,0 +1,22 @@
+
+
+
+ Being a Dog Is a Full-Time Job
+ Charles M. Schulz
+
+ Snoopy
+ Peppermint Patty
+ 1950-10-04
+
+ extroverted beagle
+
+
+
+ Peppermint Patty
+ 1966-08-22
+ bold, brash and tomboyish
+
+
+
diff --git a/xml/tests/testData/validateXml/library.xsd b/xml/tests/testData/validateXml/library.xsd
new file mode 100644
index 000000000000..30c4efb7e654
--- /dev/null
+++ b/xml/tests/testData/validateXml/library.xsd
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/xml/tests/testData/validateXml/library1.xml b/xml/tests/testData/validateXml/library1.xml
new file mode 100644
index 000000000000..e134c47782ae
--- /dev/null
+++ b/xml/tests/testData/validateXml/library1.xml
@@ -0,0 +1,24 @@
+
+
+
+
+ Being a Dog Is a Full-Time Job
+ Charles M. Schulz
+
+ Snoopy
+ Peppermint Patty
+ 1950-10-04
+
+ extroverted beagle
+
+
+
+ Peppermint Patty
+ 1966-08-22
+ bold, brash and tomboyish
+
+
+
diff --git a/xml/tests/testData/validateXml/library1.xsd b/xml/tests/testData/validateXml/library1.xsd
new file mode 100644
index 000000000000..6824efdb0f0e
--- /dev/null
+++ b/xml/tests/testData/validateXml/library1.xsd
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/xml/tests/testData/validateXml/novalidation.xml b/xml/tests/testData/validateXml/novalidation.xml
new file mode 100644
index 000000000000..deedc650f5dc
--- /dev/null
+++ b/xml/tests/testData/validateXml/novalidation.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/xml/tests/testData/validateXml/novalidationerror.xml b/xml/tests/testData/validateXml/novalidationerror.xml
new file mode 100644
index 000000000000..f24a172e5f58
--- /dev/null
+++ b/xml/tests/testData/validateXml/novalidationerror.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/xml/tests/testData/validateXml/nuancevoicexml-2-0.dtd b/xml/tests/testData/validateXml/nuancevoicexml-2-0.dtd
new file mode 100644
index 000000000000..796e249a3873
--- /dev/null
+++ b/xml/tests/testData/validateXml/nuancevoicexml-2-0.dtd
@@ -0,0 +1,654 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/xml/tests/testData/validateXml/nuancevoicexml-2-0.xml b/xml/tests/testData/validateXml/nuancevoicexml-2-0.xml
new file mode 100644
index 000000000000..8da0474620d2
--- /dev/null
+++ b/xml/tests/testData/validateXml/nuancevoicexml-2-0.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/xml/tests/testData/validateXml/po.xml b/xml/tests/testData/validateXml/po.xml
new file mode 100644
index 000000000000..d75dc24c8846
--- /dev/null
+++ b/xml/tests/testData/validateXml/po.xml
@@ -0,0 +1,32 @@
+
+
+
+ Alice Smith
+ 123 Maple Street
+ Mill Valley
+ CA
+ 90952
+
+
+ Robert Smith
+ 8 Oak Avenue
+ Old Town
+ PA
+ 95819
+
+ Hurry, my lawn is going wild!
+
+
+ Lawnmower
+ 1
+ 148.95
+ Confirm this is electric
+
+
+ Baby Monitor
+ 1
+ 39.98
+ 1999-05-21
+
+
+
diff --git a/xml/tests/testData/validateXml/po.xsd b/xml/tests/testData/validateXml/po.xsd
new file mode 100644
index 000000000000..d76c173a78f7
--- /dev/null
+++ b/xml/tests/testData/validateXml/po.xsd
@@ -0,0 +1,67 @@
+
+
+
+
+
+ Purchase order schema for Example.com.
+ Copyright 2000 Example.com. All rights reserved.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/xml/tests/testData/validateXml/test.xsd b/xml/tests/testData/validateXml/test.xsd
new file mode 100644
index 000000000000..4f9f53ef9201
--- /dev/null
+++ b/xml/tests/testData/validateXml/test.xsd
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/xml/tests/testData/validateXml/tmp/core.dtd b/xml/tests/testData/validateXml/tmp/core.dtd
new file mode 100644
index 000000000000..e99e2431e3ee
--- /dev/null
+++ b/xml/tests/testData/validateXml/tmp/core.dtd
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/xml/tests/testData/validateXml/tmp/test.dtd b/xml/tests/testData/validateXml/tmp/test.dtd
new file mode 100644
index 000000000000..3c59ea82c98c
--- /dev/null
+++ b/xml/tests/testData/validateXml/tmp/test.dtd
@@ -0,0 +1,10 @@
+
+
+
+%defineCoreDTD;
+
+
+
\ No newline at end of file
diff --git a/xml/tests/testData/validateXml/web.xml b/xml/tests/testData/validateXml/web.xml
new file mode 100644
index 000000000000..398a065fbf26
--- /dev/null
+++ b/xml/tests/testData/validateXml/web.xml
@@ -0,0 +1,13 @@
+
+
+ display
+
+
+ http://www.foo.com/taglib
+ /WEB-INF/test.tld
+
+
+
diff --git a/xml/tests/testData/validateXml/web_app.xml b/xml/tests/testData/validateXml/web_app.xml
new file mode 100644
index 000000000000..9265d96bf691
--- /dev/null
+++ b/xml/tests/testData/validateXml/web_app.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+ javax.faces.STATE_SAVING_METHOD
+ client
+
+
+
+ javax.faces.application.CONFIG_FILES
+ /WEB-INF/faces-config.xml
+
+
+
+
+ Faces Servlet
+ javax.faces.webapp.FacesServlet
+ 1
+
+
+
+
+
+ Faces Servlet
+ /faces/*
+
+
+
+
+
diff --git a/xml/tests/testData/validateXml/xhtml-lat1.ent b/xml/tests/testData/validateXml/xhtml-lat1.ent
new file mode 100644
index 000000000000..aaae738cfccd
--- /dev/null
+++ b/xml/tests/testData/validateXml/xhtml-lat1.ent
@@ -0,0 +1,196 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/xml/tests/testData/validateXml/xhtml-special.ent b/xml/tests/testData/validateXml/xhtml-special.ent
new file mode 100644
index 000000000000..cf709d1d46c6
--- /dev/null
+++ b/xml/tests/testData/validateXml/xhtml-special.ent
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/xml/tests/testData/validateXml/xhtml-symbol.ent b/xml/tests/testData/validateXml/xhtml-symbol.ent
new file mode 100644
index 000000000000..16f876b251ce
--- /dev/null
+++ b/xml/tests/testData/validateXml/xhtml-symbol.ent
@@ -0,0 +1,242 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/xml/tests/testData/validateXml/xhtml.xhtml b/xml/tests/testData/validateXml/xhtml.xhtml
new file mode 100644
index 000000000000..9a7b48e7c717
--- /dev/null
+++ b/xml/tests/testData/validateXml/xhtml.xhtml
@@ -0,0 +1,19 @@
+
+
+
+
+
+ HTML Strict Test
+
+
+
+
+
+ Testing...
+
+
+ Testing...
+
+
+
+
\ No newline at end of file
diff --git a/xml/tests/testData/validateXml/xhtml.xml b/xml/tests/testData/validateXml/xhtml.xml
new file mode 100644
index 000000000000..693e5f32de54
--- /dev/null
+++ b/xml/tests/testData/validateXml/xhtml.xml
@@ -0,0 +1,9 @@
+
+
+
+simple document
+
+
+
+
+
\ No newline at end of file
diff --git a/xml/tests/testData/validateXml/xsl.xml b/xml/tests/testData/validateXml/xsl.xml
new file mode 100644
index 000000000000..584631724650
--- /dev/null
+++ b/xml/tests/testData/validateXml/xsl.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/xml/tests/testData/validateXml/xsl.xsd b/xml/tests/testData/validateXml/xsl.xsd
new file mode 100644
index 000000000000..1adcdb9412e5
--- /dev/null
+++ b/xml/tests/testData/validateXml/xsl.xsd
@@ -0,0 +1,915 @@
+
+
+
+
+
+
+
+
+ This is a schema for XSLT 2.0 stylesheets.
+
+ It defines all the elements that appear in the XSLT namespace; it also
+ provides hooks that allow the inclusion of user-defined literal result elements,
+ extension instructions, and top-level data elements.
+
+ The schema is derived (with kind permission) from a schema for XSLT 1.0 stylesheets
+ produced by Asir S Vedamuthu of WebMethods Inc.
+
+ This schema is available for use under the conditions of the W3C Software License
+ published at http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+ The schema is organized as follows:
+
+ PART A: definitions of complex types and model groups used as the basis
+ for element definitions
+ PART B: definitions of individual XSLT elements
+ PART C: definitions for literal result elements
+ PART D: definitions of simple types used in attribute definitions
+
+ This schema does not attempt to define all the constraints that apply to a valid
+ XSLT 2.0 stylesheet. It is the intention that all valid stylesheets should conform
+ to this schema; however, the schema is non-normative and in the event of any
+ conflict, the text of the Recommendation takes precedence.
+
+ This version is dated 2002-07-19
+ Author: Michael H Kay, Software AG
+
+
+
+
+
+
+
+
+ PART A: definitions of complex types and model groups used as the basis
+ for element definitions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PART B: definitions of individual XSLT elements
+ Elements are listed in alphabetical order.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PART C: definition of literal result elements
+
+ There are three ways to define the literal result elements
+ permissible in a stylesheet.
+
+ (a) do nothing. This allows any element to be used as a literal
+ result element, provided it is not in the XSLT namespace
+
+ (b) declare all permitted literal result elements as members
+ of the xsl:literal-result-element substitution group
+
+ (c) redefine the model group xsl:result-elements to accommodate
+ all permitted literal result elements.
+
+ Literal result elements are allowed to take certain attributes
+ in the XSLT namespace. These are defined in the attribute group
+ literal-result-element-attributes, which can be included in the
+ definition of any literal result element.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PART D: definitions of simple types used in stylesheet attributes
+
+
+
+
+
+
+
+ This type is used for all attributes that allow an attribute value template.
+ The general rules for the syntax of attribute value templates, and the specific
+ rules for each such attribute, are described in the XSLT 2.0 Recommendation.
+
+
+
+
+
+
+
+
+ A string containing exactly one character.
+
+
+
+
+
+
+
+
+
+
+ An XPath 2.0 expression.
+
+
+
+
+
+
+
+
+
+
+ The level attribute of xsl:number:
+ one of single, multiple, or any.
+
+
+
+
+
+
+
+
+
+
+
+
+ The mode attribute of xsl:apply-templates:
+ either a QName, or #current, or #default.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The mode attribute of xsl:template:
+ a list, each member being either a QName, or #default.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A list of NameTests, as defined in the XPath 2.0 Recommendation.
+ Each NameTest is either a QName, or "*", or "prefix:*", or "*:localname"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The method attribute of xsl:output:
+ Either one of the recognized names "xml", "xhtml", "html", "text",
+ or a QName that must include a prefix.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A match pattern as defined in the XSLT 2.0 Recommendation.
+ The syntax for patterns is a restricted form of the syntax for
+ XPath 2.0 expressions.
+
+
+
+
+
+
+
+
+ Either a namespace prefix, or #default.
+ Used in the xsl:namespace-alias element.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A list of QNames.
+ Used in the [xsl:]use-attribute-sets attribute of various elements,
+ and in the cdata-section-elements attribute of xsl:output
+
+
+
+
+
+
+
+
+ The description of a data type, conforming to the
+ SequenceType production defined in the XPath 2.0 Recommendation
+
+
+
+
+
+
+
+
+
+
+ Describes different ways of handling type information in a newly constructed tree.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ One of the values "yes" or "no".
+
+
+
+
+
+
+
+
+
diff --git a/xml/tests/testData/xml/j2ee_1_4.xsd b/xml/tests/testData/xml/j2ee_1_4.xsd
new file mode 100644
index 000000000000..3955cef2982a
--- /dev/null
+++ b/xml/tests/testData/xml/j2ee_1_4.xsd
@@ -0,0 +1,1607 @@
+
+
+
+
+ @(#)j2ee_1_4.xsds 1.43 03/09/16
+
+
+
+
+
+
+ Copyright 2003 Sun Microsystems, Inc., 901 San Antonio
+ Road, Palo Alto, California 94303, U.S.A. All rights
+ reserved.
+
+ Sun Microsystems, Inc. has intellectual property rights
+ relating to technology described in this document. In
+ particular, and without limitation, these intellectual
+ property rights may include one or more of the U.S. patents
+ listed at http://www.sun.com/patents and one or more
+ additional patents or pending patent applications in the
+ U.S. and other countries.
+
+ This document and the technology which it describes are
+ distributed under licenses restricting their use, copying,
+ distribution, and decompilation. No part of this document
+ may be reproduced in any form by any means without prior
+ written authorization of Sun and its licensors, if any.
+
+ Third-party software, including font technology, is
+ copyrighted and licensed from Sun suppliers.
+
+ Sun, Sun Microsystems, the Sun logo, Solaris, Java, J2EE,
+ JavaServer Pages, Enterprise JavaBeans and the Java Coffee
+ Cup logo are trademarks or registered trademarks of Sun
+ Microsystems, Inc. in the U.S. and other countries.
+
+ Federal Acquisitions: Commercial Software - Government Users
+ Subject to Standard License Terms and Conditions.
+
+
+
+
+
+
+
+The following definitions that appear in the common
+shareable schema(s) of J2EE deployment descriptors should be
+interpreted with respect to the context they are included:
+
+Deployment Component may indicate one of the following:
+ j2ee application;
+ application client;
+ web application;
+ enterprise bean;
+ resource adapter;
+
+Deployment File may indicate one of the following:
+ ear file;
+ war file;
+ jar file;
+ rar file;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This group keeps the usage of the contained description related
+ elements consistent across J2EE deployment descriptors.
+
+ All elements may occur multiple times with different languages,
+ to support localization of the content.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The description type is used by a description element to
+ provide text describing the parent element. The elements
+ that use this type should include any information that the
+ Deployment Component's Deployment File file producer wants
+ to provide to the consumer of the Deployment Component's
+ Deployment File (i.e., to the Deployer). Typically, the
+ tools used by such a Deployment File consumer will display
+ the description when processing the parent element that
+ contains the description.
+
+ The lang attribute defines the language that the
+ description is provided in. The default value is "en" (English).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This type defines a dewey decimal which is used
+ to describe versions of documents.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Employee Self Service
+
+ The value of the xml:lang attribute is "en" (English) by default.
+
+ ]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ EmployeeRecord
+
+ ../products/product.jar#ProductEJB
+
+ ]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The ejb-local-refType is used by ejb-local-ref elements for
+ the declaration of a reference to an enterprise bean's local
+ home. The declaration consists of:
+
+ - an optional description
+ - the EJB reference name used in the code of the Deployment
+ Component that's referencing the enterprise bean
+ - the expected type of the referenced enterprise bean
+ - the expected local home and local interfaces of the
+ referenced enterprise bean
+ - optional ejb-link information, used to specify the
+ referenced enterprise bean
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ejb/Payroll
+
+ ]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The ejb-ref-typeType contains the expected type of the
+ referenced enterprise bean.
+
+ The ejb-ref-type designates a value
+ that must be one of the following:
+
+ Entity
+ Session
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The ejb-refType is used by ejb-ref elements for the
+ declaration of a reference to an enterprise bean's home. The
+ declaration consists of:
+
+ - an optional description
+ - the EJB reference name used in the code of
+ the Deployment Component that's referencing the enterprise
+ bean
+ - the expected type of the referenced enterprise bean
+ - the expected home and remote interfaces of the referenced
+ enterprise bean
+ - optional ejb-link information, used to specify the
+ referenced enterprise bean
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This type is used to designate an empty
+ element when used.
+
+
+
+
+
+
+
+
+
+
+
+ java.lang.Boolean
+
+ ]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The env-entryType is used to declare an application's
+ environment entry. The declaration consists of an optional
+ description, the name of the environment entry, and an
+ optional value. If a value is not specified, one must be
+ supplied during deployment.
+
+ It is used by env-entry elements.
+
+
+
+
+
+
+
+
+
+ minAmount
+
+ ]]>
+
+
+
+
+
+
+
+
+
+ 100.00
+
+ ]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The elements that use this type designate the name of a
+ Java class or interface. The name is in the form of a
+ "binary name", as defined in the JLS. This is the form
+ of name used in Class.forName(). Tools that need the
+ canonical name (the name used in source code) will need
+ to convert this binary name to the canonical name.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This type defines four different values which can designate
+ boolean values. This includes values yes and no which are
+ not designated by xsd:boolean
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ com.aardvark.payroll.PayrollHome
+
+ ]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The icon type contains small-icon and large-icon elements
+ that specify the file names for small and large GIF or
+ JPEG icon images used to represent the parent element in a
+ GUI tool.
+
+ The xml:lang attribute defines the language that the
+ icon file names are provided in. Its value is "en" (English)
+ by default.
+
+
+
+
+
+
+
+
+ employee-service-icon16x16.jpg
+
+ ]]>
+
+
+
+
+
+
+ employee-service-icon32x32.jpg
+
+ ]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The java-identifierType defines a Java identifier.
+ The users of this type should further verify that
+ the content does not contain Java reserved keywords.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This is a generic type that designates a Java primitive
+ type or a fully qualified name of a Java interface/type,
+ or an array of such types.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The jndi-nameType type designates a JNDI name in the
+ Deployment Component's environment and is relative to the
+ java:comp/env context. A JNDI name must be unique within the
+ Deployment Component.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This group keeps the usage of the contained JNDI environment
+ reference elements consistent across J2EE deployment descriptors.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The listenerType indicates the deployment properties for a web
+ application listener bean.
+
+
+
+
+
+
+
+
+
+
+ The listener-class element declares a class in the
+ application must be registered as a web
+ application listener bean. The value is the fully
+ qualified classname of the listener class.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The local-homeType defines the fully-qualified
+ name of an enterprise bean's local home interface.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The localType defines the fully-qualified name of an
+ enterprise bean's local interface.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The message-destination-linkType is used to link a message
+ destination reference or message-driven bean to a message
+ destination.
+
+ The Assembler sets the value to reflect the flow of messages
+ between producers and consumers in the application.
+
+ The value must be the message-destination-name of a message
+ destination in the same Deployment File or in another
+ Deployment File in the same J2EE application unit.
+
+ Alternatively, the value may be composed of a path name
+ specifying a Deployment File containing the referenced
+ message destination with the message-destination-name of the
+ destination appended and separated from the path name by
+ "#". The path name is relative to the Deployment File
+ containing Deployment Component that is referencing the
+ message destination. This allows multiple message
+ destinations with the same name to be uniquely identified.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ jms/StockQueue
+
+ javax.jms.Queue
+
+ Consumes
+
+ CorporateStocks
+
+
+
+ ]]>
+
+
+
+
+
+
+
+
+ The message-destination-ref-name element specifies
+ the name of a message destination reference; its
+ value is the environment entry name used in
+ Deployment Component code. The name is a JNDI name
+ relative to the java:comp/env context and must be
+ unique within an ejb-jar (for enterprise beans) or a
+ Deployment File (for others).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ javax.jms.Queue
+
+
+ ]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The message-destination-usageType specifies the use of the
+ message destination indicated by the reference. The value
+ indicates whether messages are consumed from the message
+ destination, produced for the destination, or both. The
+ Assembler makes use of this information in linking producers
+ of a destination with its consumers.
+
+ The value of the message-destination-usage element must be
+ one of the following:
+ Consumes
+ Produces
+ ConsumesProduces
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CorporateStocks
+
+
+
+ ]]>
+
+
+
+
+
+
+
+
+ The message-destination-name element specifies a
+ name for a message destination. This name must be
+ unique among the names of message destinations
+ within the Deployment File.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This type is a general type that can be used to declare
+ parameter/value lists.
+
+
+
+
+
+
+
+
+
+
+ The param-name element contains the name of a
+ parameter.
+
+
+
+
+
+
+
+
+
+ The param-value element contains the value of a
+ parameter.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The elements that use this type designate either a relative
+ path or an absolute path starting with a "/".
+
+ In elements that specify a pathname to a file within the
+ same Deployment File, relative filenames (i.e., those not
+ starting with "/") are considered relative to the root of
+ the Deployment File's namespace. Absolute filenames (i.e.,
+ those starting with "/") also specify names in the root of
+ the Deployment File's namespace. In general, relative names
+ are preferred. The exception is .war files where absolute
+ names are preferred for consistency with the Servlet API.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ com.wombat.empl.EmployeeService
+
+ ]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The res-authType specifies whether the Deployment Component
+ code signs on programmatically to the resource manager, or
+ whether the Container will sign on to the resource manager
+ on behalf of the Deployment Component. In the latter case,
+ the Container uses information that is supplied by the
+ Deployer.
+
+ The value must be one of the two following:
+
+ Application
+ Container
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The res-sharing-scope type specifies whether connections
+ obtained through the given resource manager connection
+ factory reference can be shared. The value, if specified,
+ must be one of the two following:
+
+ Shareable
+ Unshareable
+
+ The default value is Shareable.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ jms/StockQueue
+
+ javax.jms.Queue
+
+
+
+ ]]>
+
+
+
+
+
+
+
+
+
+ The resource-env-ref-name element specifies the name
+ of a resource environment reference; its value is
+ the environment entry name used in
+ the Deployment Component code. The name is a JNDI
+ name relative to the java:comp/env context and must
+ be unique within a Deployment Component.
+
+
+
+
+
+
+
+
+
+ The resource-env-ref-type element specifies the type
+ of a resource environment reference. It is the
+ fully qualified name of a Java language class or
+ interface.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ jdbc/EmployeeAppDB
+ javax.sql.DataSource
+ Container
+ Shareable
+
+
+ ]]>
+
+
+
+
+
+
+
+
+
+ The res-ref-name element specifies the name of a
+ resource manager connection factory reference.
+ The name is a JNDI name relative to the
+ java:comp/env context.
+ The name must be unique within a Deployment File.
+
+
+
+
+
+
+
+
+
+ The res-type element specifies the type of the data
+ source. The type is specified by the fully qualified
+ Java language class or interface
+ expected to be implemented by the data source.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The role-nameType designates the name of a security role.
+
+ The name must conform to the lexical rules for a token.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The run-asType specifies the run-as identity to be
+ used for the execution of a component. It contains an
+ optional description, and the name of a security role.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The security-role-refType contains the declaration of a
+ security role reference in a component's or a
+ Deployment Component's code. The declaration consists of an
+ optional description, the security role name used in the
+ code, and an optional link to a security role. If the
+ security role is not specified, the Deployer must choose an
+ appropriate security role.
+
+
+
+
+
+
+
+
+
+
+ The value of the role-name element must be the String used
+ as the parameter to the
+ EJBContext.isCallerInRole(String roleName) method or the
+ HttpServletRequest.isUserInRole(String role) method.
+
+
+
+
+
+
+
+
+
+ The role-link element is a reference to a defined
+ security role. The role-link element must contain
+ the name of one of the security roles defined in the
+ security-role elements.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This role includes all employees who are authorized
+ to access the employee service application.
+
+ employee
+
+
+ ]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This is a special string datatype that is defined by J2EE as
+ a base type for defining collapsed strings. When schemas
+ require trailing/leading space elimination as well as
+ collapsing the existing whitespace, this base type may be
+ used.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This simple type designates a boolean with only two
+ permissible values
+
+ - true
+ - false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The url-patternType contains the url pattern of the mapping.
+ It must follow the rules specified in Section 11.2 of the
+ Servlet API Specification. This pattern is assumed to be in
+ URL-decoded form and must not contain CR(#xD) or LF(#xA).
+ If it contains those characters, the container must inform
+ the developer with a descriptive error message.
+ The container must preserve all characters including whitespaces.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This type adds an "id" attribute to xsd:anyURI.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This type adds an "id" attribute to xsd:boolean.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This type adds an "id" attribute to xsd:integer.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This type adds an "id" attribute to xsd:NMTOKEN.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This type adds an "id" attribute to xsd:nonNegativeInteger.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This type adds an "id" attribute to xsd:positiveInteger.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This type adds an "id" attribute to xsd:QName.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This type adds an "id" attribute to xsd:string.
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/xml/tests/testData/xml/j2ee_web_services_client_1_1.xsd b/xml/tests/testData/xml/j2ee_web_services_client_1_1.xsd
new file mode 100644
index 000000000000..b5fc02275e08
--- /dev/null
+++ b/xml/tests/testData/xml/j2ee_web_services_client_1_1.xsd
@@ -0,0 +1,342 @@
+
+
+
+
+ @(#)j2ee_web_services_client_1_1.xsds 1.10 02/11/03
+
+
+
+
+
+
+ Copyright 2002 Sun Microsystems, Inc., 901 San Antonio
+ Road, Palo Alto, California 94303, U.S.A. All rights
+ reserved.
+
+ Sun Microsystems, Inc. has intellectual property rights
+ relating to technology described in this document. In
+ particular, and without limitation, these intellectual
+ property rights may include one or more of the U.S. patents
+ listed at http://www.sun.com/patents and one or more
+ additional patents or pending patent applications in the
+ U.S. and other countries.
+
+ This document and the technology which it describes are
+ distributed under licenses restricting their use, copying,
+ distribution, and decompilation. No part of this document
+ may be reproduced in any form by any means without prior
+ written authorization of Sun and its licensors, if any.
+
+ Third-party software, including font technology, is
+ copyrighted and licensed from Sun suppliers.
+
+ Sun, Sun Microsystems, the Sun logo, Solaris, Java, J2EE,
+ JavaServer Pages, Enterprise JavaBeans and the Java Coffee
+ Cup logo are trademarks or registered trademarks of Sun
+ Microsystems, Inc. in the U.S. and other countries.
+
+ Federal Acquisitions: Commercial Software - Government Users
+ Subject to Standard License Terms and Conditions.
+
+
+
+
+
+
+ (C) Copyright International Business Machines Corporation 2002
+
+
+
+
+
+
+
+
+
+
+ The port-component-ref element declares a client dependency
+ on the container for resolving a Service Endpoint Interface
+ to a WSDL port. It optionally associates the Service Endpoint
+ Interface with a particular port-component. This is only used
+ by the container for a Service.getPort(Class) method call.
+
+
+
+
+
+
+
+
+
+ The service-endpoint-interface element defines a fully qualified
+ Java class that represents the Service Endpoint Interface of a
+ WSDL port.
+
+
+
+
+
+
+
+
+
+ The port-component-link element links a port-component-ref
+ to a specific port-component required to be made available
+ by a service reference.
+
+ The value of a port-component-link must be the
+ port-component-name of a port-component in the same module
+ or another module in the same application unit. The syntax
+ for specification follows the syntax defined for ejb-link
+ in the EJB 2.0 specification.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Defines the name of the handler. The name must be unique
+ within the module.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The service-ref element declares a reference to a Web
+ service. It contains optional description, display name and
+ icons, a declaration of the required Service interface,
+ an optional WSDL document location, an optional set
+ of JAX-RPC mappings, an optional QName for the service element,
+ an optional set of Service Endpoint Interfaces to be resolved
+ by the container to a WSDL port, and an optional set of handlers.
+
+
+
+
+
+
+
+
+
+
+ The service-ref-name element declares logical name that the
+ components in the module use to look up the Web service. It
+ is recommended that all service reference names start with
+ "service/".
+
+
+
+
+
+
+
+
+
+ The service-interface element declares the fully qualified class
+ name of the JAX-RPC Service interface the client depends on.
+ In most cases the value will be javax.xml.rpc.Service. A JAX-RPC
+ generated Service Interface class may also be specified.
+
+
+
+
+
+
+
+
+
+ The wsdl-file element contains the URI location of a WSDL
+ file. The location is relative to the root of the module.
+
+
+
+
+
+
+
+
+
+ The jaxrpc-mapping-file element contains the name of a file that
+ describes the JAX-RPC mapping between the Java interaces used by
+ the application and the WSDL description in the wsdl-file. The
+ file name is a relative path within the module file.
+
+
+
+
+
+
+
+
+
+ The service-qname element declares the specific WSDL service
+ element that is being refered to. It is not specified if no
+ wsdl-file is declared.
+
+
+
+
+
+
+
+
+
+ The port-component-ref element declares a client dependency
+ on the container for resolving a Service Endpoint Interface
+ to a WSDL port. It optionally associates the Service Endpoint
+ Interface with a particular port-component. This is only used
+ by the container for a Service.getPort(Class) method call.
+
+
+
+
+
+
+
+
+
+ Declares the handler for a port-component. Handlers can
+ access the init-param name/value pairs using the
+ HandlerInfo interface. If port-name is not specified, the
+ handler is assumed to be associated with all ports of the
+ service.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Declares the handler for a port-component. Handlers can access the
+ init-param name/value pairs using the HandlerInfo interface. If
+ port-name is not specified, the handler is assumed to be associated
+ with all ports of the service.
+
+ Used in: service-ref
+
+
+
+
+
+
+
+
+
+ Defines the name of the handler. The name must be unique
+ within the module.
+
+
+
+
+
+
+
+
+ Defines a fully qualified class name for the handler
+ implementation.
+
+
+
+
+
+
+
+
+
+
+ Defines the QName of a SOAP header that will be processed
+ by the handler.
+
+
+
+
+
+
+
+
+
+ The soap-role element contains a SOAP actor definition that
+ the Handler will play as a role.
+
+
+
+
+
+
+
+
+
+ The port-name element defines the WSDL port-name that a
+ handler should be associated with.
+
+
+
+
+
+
+
+
+
+