下面列出了org.w3c.dom.Document#normalizeDocument ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
public void compare ( final Document sourceDoc, final Document signedDoc ) throws Exception
{
final Document d1 = cloneDoc ( sourceDoc );
final Document d2 = cloneDoc ( signedDoc );
final NodeList nl = d2.getElementsByTagNameNS ( XMLSignature.XMLNS, "Signature" );
while ( nl.getLength () > 0 )
{
final Node item = nl.item ( 0 );
item.getParentNode ().removeChild ( item );
}
d1.normalizeDocument ();
d2.normalizeDocument ();
final Element root1 = d1.getDocumentElement ();
final Element root2 = d2.getDocumentElement ();
compareNode ( root1, root2 );
}
/**
* Check for DOMErrorHandler handling DOMError. Before fix of bug 4896132
* test throws DOM Level 1 node error.
*
* @throws Exception If any errors occur.
*/
@Test
public void testCreateNewItem2SellRetry() throws Exception {
String xmlFile = XML_DIR + "accountInfo.xml";
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
Document document = dbf.newDocumentBuilder().parse(xmlFile);
DOMConfiguration domConfig = document.getDomConfig();
MyDOMErrorHandler errHandler = new MyDOMErrorHandler();
domConfig.setParameter("error-handler", errHandler);
DOMImplementationLS impl =
(DOMImplementationLS) DOMImplementationRegistry.newInstance()
.getDOMImplementation("LS");
LSSerializer writer = impl.createLSSerializer();
MyDOMOutput domoutput = new MyDOMOutput();
domoutput.setByteStream(System.out);
writer.write(document, domoutput);
document.normalizeDocument();
writer.write(document, domoutput);
assertFalse(errHandler.isError());
}
/**
* Compare contents of golden file with test output file by their document
* representation.
* Here we ignore the white space and comments. return true if they're
* lexical identical.
* @param goldfile Golden output file name.
* @param resultFile Test output file name.
* @return true if two file's document representation are identical.
* false if two file's document representation are not identical.
* @throws javax.xml.parsers.ParserConfigurationException if the
* implementation is not available or cannot be instantiated.
* @throws SAXException If any parse errors occur.
* @throws IOException if an I/O error occurs reading from the file or a
* malformed or unmappable byte sequence is read .
*/
public static boolean compareDocumentWithGold(String goldfile, String resultFile)
throws ParserConfigurationException, SAXException, IOException {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
factory.setCoalescing(true);
factory.setIgnoringElementContentWhitespace(true);
factory.setIgnoringComments(true);
DocumentBuilder db = factory.newDocumentBuilder();
Document goldD = db.parse(Paths.get(goldfile).toFile());
goldD.normalizeDocument();
Document resultD = db.parse(Paths.get(resultFile).toFile());
resultD.normalizeDocument();
return goldD.isEqualNode(resultD);
}
@Override
protected boolean compare(File baselineFile, File comparisonFile) {
try {
DocumentBuilder builder = factory.newDocumentBuilder();
Document baselineXml = builder.parse(baselineFile);
Document comparisonXml = builder.parse(comparisonFile);
baselineXml.normalizeDocument();
comparisonXml.normalizeDocument();
return XMLUnit.compareXML(baselineXml, comparisonXml).similar();
} catch (SAXException | IOException | ParserConfigurationException e) {
throw new TransformationUtilityException("An exception happened when comparing the two XML files", e);
}
}
/**
* Equivalence class partitioning with state and input values orientation
* for public void setParameter(String name, Object value) throws
* DOMException, <br>
* <b>pre-conditions</b>: the doc's root element contains superfluous
* namespace declarations, <br>
* <b>name</b>: canonical-form <br>
* <b>value</b>: true. <br>
* <b>Expected results</b>: the superfluous namespace declarations are
* removed
*/
@Test
public void testCanonicalForm003() {
DOMImplementation domImpl = null;
try {
domImpl = DocumentBuilderFactory.newInstance().newDocumentBuilder().getDOMImplementation();
} catch (ParserConfigurationException pce) {
Assert.fail(pce.toString());
} catch (FactoryConfigurationError fce) {
Assert.fail(fce.toString());
}
Document doc = domImpl.createDocument("namespaceURI", "ns:root", null);
DOMConfiguration config = doc.getDomConfig();
Element root = doc.getDocumentElement();
String XMLNS = "http://www.w3.org/2000/xmlns/";
root.setAttributeNS(XMLNS, "xmlns:extra1", "ExtraNS1");
root.setAttributeNS(XMLNS, "xmlns:extra2", "ExtraNS2");
if (!config.canSetParameter("canonical-form", Boolean.TRUE)) {
System.out.println("OK, setting 'canonical-form' to true is not supported");
return;
}
config.setParameter("canonical-form", Boolean.TRUE);
setHandler(doc);
doc.normalizeDocument();
String xmlns2 = root.getAttributeNS(XMLNS, "extra1");
if (xmlns2 == null || xmlns2.length() != 0) {
Assert.fail("superfluous namespace declarations is not removed: xmlns:extra2 = " + xmlns2);
}
return; // Status.passed("OK");
}
/**
* Equivalence class partitioning with state and input values orientation
* for public void setParameter(String name, Object value) throws
* DOMException, <br>
* <b>pre-conditions</b>: the root element has one CDATASection followed by
* one Text node, <br>
* <b>name</b>: cdata-sections <br>
* <b>value</b>: true. <br>
* <b>Expected results</b>: the CDATASection is left intact
*/
@Test
public void testCdataSections001() {
DOMImplementation domImpl = null;
try {
domImpl = DocumentBuilderFactory.newInstance().newDocumentBuilder().getDOMImplementation();
} catch (ParserConfigurationException pce) {
Assert.fail(pce.toString());
} catch (FactoryConfigurationError fce) {
Assert.fail(fce.toString());
}
Document doc = domImpl.createDocument("namespaceURI", "ns:root", null);
String cdataText = "CDATA CDATA CDATA";
String textText = "text text text";
CDATASection cdata = doc.createCDATASection(cdataText);
Text text = doc.createTextNode(textText);
DOMConfiguration config = doc.getDomConfig();
config.setParameter("cdata-sections", Boolean.TRUE);
Element root = doc.getDocumentElement();
root.appendChild(cdata);
root.appendChild(text);
setHandler(doc);
doc.normalizeDocument();
Node returned = root.getFirstChild();
if (returned.getNodeType() != Node.CDATA_SECTION_NODE) {
Assert.fail("reurned: " + returned + ", expected: CDATASection");
}
return; // Status.passed("OK");
}
/**
* Equivalence class partitioning with state and input values orientation
* for public void setParameter(String name, Object value) throws
* DOMException, <br>
* <b>pre-conditions</b>: the root element has two Comment nodes, <br>
* <b>name</b>: comments <br>
* <b>value</b>: true. <br>
* <b>Expected results</b>: the Comment nodes belong to the root element
*/
@Test
public void testComments001() {
DOMImplementation domImpl = null;
try {
domImpl = DocumentBuilderFactory.newInstance().newDocumentBuilder().getDOMImplementation();
} catch (ParserConfigurationException pce) {
Assert.fail(pce.toString());
} catch (FactoryConfigurationError fce) {
Assert.fail(fce.toString());
}
Document doc = domImpl.createDocument("namespaceURI", "ns:root", null);
Comment comment1 = doc.createComment("comment1");
Comment comment2 = doc.createComment("comment2");
DOMConfiguration config = doc.getDomConfig();
config.setParameter("comments", Boolean.TRUE);
Element root = doc.getDocumentElement();
root.appendChild(comment1);
root.appendChild(comment2);
setHandler(doc);
doc.normalizeDocument();
if (comment1.getParentNode() != root) {
Assert.fail("comment1 is attached to " + comment1.getParentNode() + ", but expected to be a child of root");
}
if (comment2.getParentNode() != root) {
Assert.fail("comment1 is attached to " + comment2.getParentNode() + ", but expected to be a child of root");
}
return; // Status.passed("OK");
}
/**
* Equivalence class partitioning with state and input values orientation
* for public void setParameter(String name, Object value) throws
* DOMException, <br>
* <b>pre-conditions</b>: the root element has two Comment nodes, <br>
* <b>name</b>: comments <br>
* <b>value</b>: false. <br>
* <b>Expected results</b>: the root element has no children
*/
@Test
public void testComments002() {
DOMImplementation domImpl = null;
try {
domImpl = DocumentBuilderFactory.newInstance().newDocumentBuilder().getDOMImplementation();
} catch (ParserConfigurationException pce) {
Assert.fail(pce.toString());
} catch (FactoryConfigurationError fce) {
Assert.fail(fce.toString());
}
Document doc = domImpl.createDocument("namespaceURI", "ns:root", null);
Comment comment1 = doc.createComment("comment1");
Comment comment2 = doc.createComment("comment2");
DOMConfiguration config = doc.getDomConfig();
config.setParameter("comments", Boolean.FALSE);
Element root = doc.getDocumentElement();
root.appendChild(comment1);
root.appendChild(comment2);
doc.normalizeDocument();
if (root.getFirstChild() != null) {
Assert.fail("root has a child " + root.getFirstChild() + ", but expected to has none");
}
return; // Status.passed("OK");
}
/**
* Creates a new source that is created by "normalizing" the given
* source.
*
* <p>See the class-level JavaDocs for details.</p>
*
* @param originalSource the original source
*/
public NormalizedSource(Source originalSource) {
if (originalSource != null) {
Document doc = Convert.toDocument(originalSource);
doc.normalizeDocument();
super.setNode(doc);
setSystemId(originalSource.getSystemId());
}
}
/**
* Equivalence class partitioning with state and input values orientation
* for public void setParameter(String name, Object value) throws
* DOMException, <br>
* <b>pre-conditions</b>: The root contains a CDATASection with the
* termination marker ']]>', <br>
* <b>name</b>: split-cdata-sections <br>
* <b>value</b>: true. <br>
* <b>Expected results</b>: A warning is reported when the section is
* splitted
*/
@Test
public void testSplitCDATA001() {
DOMImplementation domImpl = null;
try {
domImpl = DocumentBuilderFactory.newInstance().newDocumentBuilder().getDOMImplementation();
} catch (ParserConfigurationException pce) {
Assert.fail(pce.toString());
} catch (FactoryConfigurationError fce) {
Assert.fail(fce.toString());
}
Document doc = domImpl.createDocument("namespaceURI", "ns:root", null);
DOMConfiguration config = doc.getDomConfig();
CDATASection cdata = doc.createCDATASection("text]" + "]>text");
doc.getDocumentElement().appendChild(cdata);
TestHandler testHandler = new TestHandler();
config.setParameter("error-handler", testHandler);
if (!config.canSetParameter("split-cdata-sections", Boolean.TRUE)) {
Assert.fail("cannot set the parameters 'split-cdata-sections' to true");
}
config.setParameter("split-cdata-sections", Boolean.TRUE);
doc.normalizeDocument();
if (null == testHandler.getWarning()) {
Assert.fail("no warning is reported");
}
return; // Status.passed("OK");
}
@Test
public void testMain() throws Exception {
final boolean[] hadError = new boolean[1];
DocumentBuilderFactory docBF = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docBF.newDocumentBuilder();
Document doc = docBuilder.getDOMImplementation().createDocument("namespaceURI", "ns:root", null);
CDATASection cdata = doc.createCDATASection("text1]]>text2");
doc.getDocumentElement().appendChild(cdata);
DOMConfiguration config = doc.getDomConfig();
DOMErrorHandler erroHandler = new DOMErrorHandler() {
public boolean handleError(DOMError error) {
System.out.println(error.getMessage());
Assert.assertEquals(error.getType(), "cdata-sections-splitted");
Assert.assertFalse(hadError[0], "two errors were reported");
hadError[0] = true;
return false;
}
};
config.setParameter("error-handler", erroHandler);
doc.normalizeDocument();
Assert.assertTrue(hadError[0]);
}
/**
* Equivalence class partitioning with state and input values orientation
* for public void setParameter(String name, Object value) throws
* DOMException, <br>
* <b>pre-conditions</b>: the attribute has EntityReference to '<', <br>
* <b>name</b>: well-formed <br>
* <b>value</b>: false. <br>
* <b>Expected results</b>: No error is reported
*/
@Test
public void testWellFormed002() {
Document doc = null;
try {
doc = loadDocument(null, test2_xml);
} catch (Exception e) {
Assert.fail(e.getMessage());
}
DOMConfiguration config = doc.getDomConfig();
if (!config.canSetParameter("well-formed", Boolean.FALSE)) {
System.out.println("OK, setting 'well-formed' to false is not supported");
return;
}
config.setParameter("well-formed", Boolean.FALSE);
Element root = doc.getDocumentElement();
Attr attr = doc.createAttributeNS(null, "attr");
attr.appendChild(doc.createEntityReference("x"));
root.setAttributeNode(attr);
TestHandler testHandler = new TestHandler();
config.setParameter("error-handler", testHandler);
doc.normalizeDocument();
if (testHandler.getError() != null || null != testHandler.getFatalError()) {
Assert.fail("unexpected error: " + testHandler.getFatalError() + "; " + testHandler.getError());
}
return; // Status.passed("OK");
}
/**
* Equivalence class partitioning with state and input values orientation
* for public void setParameter(String name, Object value) throws
* DOMException, <br>
* <b>pre-conditions</b>: the document root element has a text node with
* four white space characters, <br>
* <b>name</b>: element-content-whitespace <br>
* <b>value</b>: true. <br>
* <b>Expected results</b>: the text node is preserved
*/
@Test
public void testECWhitespace001() {
Document doc = null;
try {
doc = loadDocument(null, test3_xml);
} catch (Exception e) {
Assert.fail(e.getMessage());
}
Element root = doc.getDocumentElement();
Text text = doc.createTextNode("\t\n\r ");
root.appendChild(text);
DOMConfiguration config = doc.getDomConfig();
if (!config.canSetParameter("element-content-whitespace", Boolean.TRUE)) {
Assert.fail("setting 'element-content-whitespace' to true is not supported");
}
config.setParameter("element-content-whitespace", Boolean.TRUE);
if (!config.canSetParameter("validate", Boolean.TRUE)) {
System.out.println("OK, setting 'validate' to true is not supported");
return;
}
config.setParameter("validate", Boolean.TRUE);
setHandler(doc);
doc.normalizeDocument();
Node firstChild = root.getFirstChild();
if (firstChild == null || firstChild.getNodeType() != Node.TEXT_NODE || !((Text) firstChild).isElementContentWhitespace()) {
Assert.fail("the first child is " + firstChild + ", expected a text node with the four whitespace characters");
}
return; // Status.passed("OK");
}
/**
* Equivalence class partitioning with state and input values orientation
* for public void setParameter(String name, Object value) throws
* DOMException, <br>
* <b>pre-conditions</b>: the document root element has a text node with
* four white space characters, <br>
* <b>name</b>: element-content-whitespace <br>
* <b>value</b>: false. <br>
* <b>Expected results</b>: the text node is discarded
*/
@Test
public void testECWhitespace002() {
Document doc = null;
try {
doc = loadDocument(null, test3_xml);
} catch (Exception e) {
Assert.fail(e.getMessage());
}
Element root = doc.getDocumentElement();
Text text = doc.createTextNode("\t\n\r ");
root.appendChild(text);
DOMConfiguration config = doc.getDomConfig();
if (!config.canSetParameter("element-content-whitespace", Boolean.FALSE)) {
System.out.println("OK, setting 'element-content-whitespace' to false is not supported");
return;
}
config.setParameter("element-content-whitespace", Boolean.FALSE);
if (!config.canSetParameter("validate", Boolean.TRUE)) {
System.out.println("OK, setting 'validate' to true is not supported");
return;
}
config.setParameter("validate", Boolean.TRUE);
setHandler(doc);
doc.normalizeDocument();
Node firstChild = root.getFirstChild();
if (firstChild != null) {
Assert.fail("the first child is " + firstChild + ", but no child is expected");
}
return; // Status.passed("OK");
}
/**
* Equivalence class partitioning with state and input values orientation
* for public void setParameter(String name, Object value) throws
* DOMException, <br>
* <b>pre-conditions</b>: the doc contains two subsequent processing
* instrictions, <br>
* <b>name</b>: canonical-form <br>
* <b>value</b>: true. <br>
* <b>Expected results</b>: the subsequent processing instrictions are
* separated with a single line break
*/
@Test
public void testCanonicalForm001() {
DOMImplementation domImpl = null;
try {
domImpl = DocumentBuilderFactory.newInstance().newDocumentBuilder().getDOMImplementation();
} catch (ParserConfigurationException pce) {
Assert.fail(pce.toString());
} catch (FactoryConfigurationError fce) {
Assert.fail(fce.toString());
}
Document doc = domImpl.createDocument("namespaceURI", "ns:root", null);
DOMConfiguration config = doc.getDomConfig();
Element root = doc.getDocumentElement();
ProcessingInstruction pi1 = doc.createProcessingInstruction("target1", "data1");
ProcessingInstruction pi2 = doc.createProcessingInstruction("target2", "data2");
root.appendChild(pi1);
root.appendChild(pi2);
if (!config.canSetParameter("canonical-form", Boolean.TRUE)) {
System.out.println("OK, setting 'canonical-form' to true is not supported");
return;
}
config.setParameter("canonical-form", Boolean.TRUE);
setHandler(doc);
doc.normalizeDocument();
Node child1 = root.getFirstChild();
Node child2 = child1.getNextSibling();
if (child2.getNodeType() == Node.PROCESSING_INSTRUCTION_NODE) {
Assert.fail("the second child is expected to be a" + "single line break, returned: " + child2);
}
// return Status.passed("OK");
}
/**
* Equivalence class partitioning with state and input values orientation
* for public void setParameter(String name, Object value) throws
* DOMException, <br>
* <b>pre-conditions</b>: the root element is declared as int and its value
* has subsequent characters #x9 (tab), #xA (line feed) and #xD (carriage
* return) , #x20 (space), '1', #x20 (space), <br>
* <b>name</b>: datatype-normalization <br>
* <b>value</b>: false. <br>
* <b>Expected results</b>: after Document.normalizeDocument() is called the
* value is left unchanged
*/
@Test
public void testDatatypeNormalization002() {
Document doc = null;
try {
doc = loadDocument(test1_xsd_url, test_xml);
} catch (Exception e) {
Assert.fail(e.getMessage());
}
DOMConfiguration config = doc.getDomConfig();
if (!config.canSetParameter("schema-location", test1_xsd_url) || !config.canSetParameter("schema-type", XMLConstants.W3C_XML_SCHEMA_NS_URI)) {
System.out.println("cannot set the parameters 'schema-location' and 'schema-type'" + " to '" + test1_xsd_url + "' and '"
+ XMLConstants.W3C_XML_SCHEMA_NS_URI + "' respectively");
return;
}
config.setParameter("schema-type", XMLConstants.W3C_XML_SCHEMA_NS_URI);
config.setParameter("schema-location", test1_xsd_url);
if (config.canSetParameter("validate", Boolean.TRUE)) {
config.setParameter("validate", Boolean.TRUE);
}
if (!config.canSetParameter("datatype-normalization", Boolean.FALSE)) {
Assert.fail("datatype-normalization' to false is not supported");
}
config.setParameter("datatype-normalization", Boolean.FALSE);
Element root = doc.getDocumentElement();
while (root.getFirstChild() != null) {
root.removeChild(root.getFirstChild());
}
String value = "\t\r\n 1 ";
root.appendChild(doc.createTextNode(value));
setHandler(doc);
doc.normalizeDocument();
Node child = root.getFirstChild();
if (child == null || child.getNodeType() != Node.TEXT_NODE || !value.equals(child.getNodeValue())) {
Assert.fail("child: " + child + ", expected: '\\t\\r\\n 1 '");
}
return; // Status.passed("OK");
}
/**
* Equivalence class partitioning with state and input values orientation
* for public void setParameter(String name, Object value) throws
* DOMException, <br>
* <b>pre-conditions</b>: the doc contains one entity and one entity
* reference, <br>
* <b>name</b>: entities <br>
* <b>value</b>: true. <br>
* <b>Expected results</b>: the entity and the entity reference are left
* unchanged
*/
@Test
public void testEntities001() {
Document doc = null;
try {
doc = loadDocument(null, test1_xml);
} catch (Exception e) {
Assert.fail(e.getMessage());
}
DOMConfiguration config = doc.getDomConfig();
if (!config.canSetParameter("entities", Boolean.TRUE)) {
Assert.fail("setting 'entities' to true is not supported");
}
Element root = doc.getDocumentElement();
root.appendChild(doc.createEntityReference("x"));
config.setParameter("entities", Boolean.TRUE);
setHandler(doc);
doc.normalizeDocument();
Node child = root.getFirstChild();
if (child == null) {
Assert.fail("root has no child");
}
if (child.getNodeType() != Node.ENTITY_REFERENCE_NODE) {
Assert.fail("root's child is " + child + ", expected entity reference &x;");
}
if (doc.getDoctype() == null) {
Assert.fail("no doctype found");
}
if (doc.getDoctype().getEntities() == null) {
Assert.fail("no entitiy found");
}
if (doc.getDoctype().getEntities().getNamedItem("x") == null) {
Assert.fail("no entitiy with name 'x' found");
}
return; // Status.passed("OK");
}
/**
* Equivalence class partitioning with state and input values orientation
* for public void setParameter(String name, Object value) throws
* DOMException, <br>
* <b>pre-conditions</b>: the doc contains one entity and one entity
* reference, <br>
* <b>name</b>: entities <br>
* <b>value</b>: false. <br>
* <b>Expected results</b>: the entity and the entity reference are removed
*/
@Test
public void testEntities002() {
Document doc = null;
try {
doc = loadDocument(null, test1_xml);
} catch (Exception e) {
Assert.fail(e.getMessage());
}
DOMConfiguration config = doc.getDomConfig();
if (!config.canSetParameter("entities", Boolean.FALSE)) {
Assert.fail("setting 'entities' to false is not supported");
}
Element root = doc.getDocumentElement();
root.appendChild(doc.createEntityReference("x"));
// TODO: remove debug
NamedNodeMap entities = doc.getDoctype().getEntities();
Entity entityX = (Entity) entities.getNamedItem("x");
System.err.println();
System.err.println("Entity x: " + entityX.getTextContent());
System.err.println();
config.setParameter("entities", Boolean.FALSE);
setHandler(doc);
doc.normalizeDocument();
Node child = root.getFirstChild();
// TODO: restore test, exclude for now to allow other tests to run
/*
* if (child == null) { fail("root has no child"); } if
* (child.getNodeType() != Node.TEXT_NODE ||
* !"X".equals(child.getNodeValue())) { fail("root's child is " + child
* + ", expected text node with value 'X'"); }
*
* if (doc.getDoctype() == null) { fail("no doctype found"); }
*
* if (doc.getDoctype().getEntities() != null &&
* doc.getDoctype().getEntities().getNamedItem("x") != null) {
* fail("entity with name 'x' is found, expected to be removed"); }
*/
return; // Status.passed("OK");
}
/**
* Equivalence class partitioning with state and input values orientation
* for public void setParameter(String name, Object value) throws
* DOMException, <br>
* <b>pre-conditions</b>: The root element is not declared in the schema
* specified by setting the 'schema-location' and the 'schema-type'
* parameters., <br>
* <b>name</b>: validate-if-schema <br>
* <b>value</b>: true. <br>
* <b>Expected results</b>: No error is reported
*/
@Test
public void testValidateIfSchema002() {
DOMImplementation domImpl = null;
try {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
dbf.setValidating(true);
domImpl = dbf.newDocumentBuilder().getDOMImplementation();
} catch (ParserConfigurationException pce) {
Assert.fail(pce.toString());
} catch (FactoryConfigurationError fce) {
Assert.fail(fce.toString());
}
Document doc = domImpl.createDocument("test", "ns:undeclared_root", null);
Element root = doc.getDocumentElement();
root.appendChild(doc.createTextNode("xxx"));
DOMConfiguration config = doc.getDomConfig();
if (!config.canSetParameter("schema-location", test1_xsd_url) || !config.canSetParameter("schema-type", XMLConstants.W3C_XML_SCHEMA_NS_URI)) {
System.out.println("cannot set the parameters 'schema-location' and 'schema-type'" + " to 'DOMConfigurationTest.xsd' and '"
+ XMLConstants.W3C_XML_SCHEMA_NS_URI + "' respectively");
return;
}
config.setParameter("schema-type", XMLConstants.W3C_XML_SCHEMA_NS_URI);
config.setParameter("schema-location", test1_xsd_url);
if (!config.canSetParameter("validate-if-schema", Boolean.TRUE)) {
System.out.println("OK, setting the parameter 'validate-if-schema'" + " to true is not supported");
return;
}
config.setParameter("validate-if-schema", Boolean.TRUE);
TestHandler testHandler = new TestHandler();
config.setParameter("error-handler", testHandler);
doc.normalizeDocument();
if (testHandler.getError() != null || null != testHandler.getFatalError()) {
Assert.fail("unexpected error: " + testHandler.getFatalError() + "; " + testHandler.getError());
}
return; // Status.passed("OK");
}
/**
* Creates a new source that is created by "normalizing" the given
* document.
*
* <p>See the class-level JavaDocs for details.</p>
*
* @param doc the original source
* @param systemId the system id to use for the new source
*/
public NormalizedSource(Document doc, String systemId) {
if (doc != null) {
doc.normalizeDocument();
}
super.setNode(doc);
setSystemId(systemId);
}