[英]Validate XML data with XSD without Soap Envelope
我有帶有 SOAP 信封的 XML 數據,但我的 XSD 架構只能驗證信封內的 XML 數據。 我期待着我可以編輯 XSD 和遍歷並且只驗證信封內的 xml 的機制。
例如,在 XSLT 中,我們可以選擇設置根參數<xsl:template match="*:MsgHeader">
而不是<xsl:template match="*:Envelope">
正如您所建議的,在 XSLT (2.0+) 中進行驗證是一種選擇 - 但可能不是一個很好的選擇,因為 XSLT 在第一個驗證錯誤后停止。
如果您使用 Saxon 作為驗證引擎,那么您可以像這樣從 Java 執行所需的驗證:
Processor p = new Processor(true);
SchemaManager sm = p.getSchemaManager();
sm.load(new StreamSource(new File('schema.xsd')));
SchemaValidator sv = sm.newSchemaValidator();
DocumentBuilder db = p.newDocumentBuilder();
XdmNode doc = db.build(new StreamSource(new File('source.xml')));
XdmNode target = (XdmNode)doc.select(descendant("payload")).findFirst().get();
sv.validate(target.asSource());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.