試圖瞭解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);
爲什麼結果不增強?我錯過了什麼?