试图了解XML架构扩充如何工作。从这个链接XML架构扩充
引用: https://www.w3.org/TR/2001/REC-xmlschema-1-20010502/
2.1 XML模式 的概述一个XML模式包括组件,诸如类型定义和元素声明的。这些可用于评估格式良好的元素和属性信息项(如[XML-Infoset]中定义的)的有效性,并且可以指定这些项及其后代的增量。 这种增强使明确的信息可能已经隐含在原始文档中,例如属性和元素的标准化和/或默认值以及元素和属性信息项的类型。
从这个链接: https://www.ibm.com/developerworks/library/x-javaxmlvalidapi/#validation
一些模式做的比验证了。除了为文档是否有效这个问题提供真实的错误答案之外,他们还会通过附加信息来扩充文档。例如,他们可以提供默认的属性值。 它们也可能将类型如int或gYear分配给元素或属性。验证器可以创建这样的类型增加的文档并将它们写入到javax.xml.transform.Result对象中。
所以我会假设,如果我验证对一个模式的XML文档,会产生一种增强的XML文档:
<thisIsAstring>Abc</thisIsAstring>
成为
<thisIsAstring type="String">Abc</thisIsAstring>
以上的假设,因为我还没有得到它的工作。
当我执行下面的代码时,结果包含或多或少与源相同。
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
DocumentBuilder parser = dbf.newDocumentBuilder();
Document document = parser.parse(new InputSource(new StringReader(inputMessage)));
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Source schemaSource = new SAXSource(new InputSource(new StringReader(inputSchema)));
Schema schema = factory.newSchema(schemaSource);
Validator validator = schema.newValidator();
DOMResult result = new DOMResult();
DOMSource source = new DOMSource(document);
validator.validate(source,result);
为什么结果不增强?我错过了什么?