簡體   English   中英

使用沒有 Soap Envelope 的 XSD 驗證 XML 數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM