簡體   English   中英

如何將 Schematron 編譯成帶有 Jaxb 注釋的 Java 類?

[英]How can I compile Schematron into Jaxb annotated Java classes?

我一直在使用 xjc 將 XML Schema 編譯成帶注釋的 java 類,這樣我就可以使用 jaxb 生成 xml 文件。

我怎樣才能為 Schematron 做同樣的事情?

更新:更具體地說:java類不需要驗證所有schematron規則,只需要驗證與schema有關的部分,即可以表示為XSD的Schematron部分。

這是我要編譯的特定架構: https ://github.com/OpenPEPPOL/peppol-bis-invoice-3/blob/master/rules/sch/PEPPOL-EN16931-UBL.sch

這樣做的目的是生成 PEPPOL BIS Billing 3.0 發票和信用票據。 也歡迎其他意見。

在使用 XJC 時,Schematron 不是 XSD 的情況下的模式定義。 無法使用 XJC 從 Schematron 生成 Java 類。

XSD 是一種能夠驗證 XML 結構的語法。 Schematron 是幫助(非排他性)驗證數據而非結構的業務規則的規則。

如果我與 JAXB 生成的類進行了比較,XSD 能夠驗證每個 XML 節點是否適合類屬性; Schematron 驗證invoice.vat < invoice.totalAmount 因此 Schematron 規則通常被添加到結構語法(XSD、RelaxNG、DTD)中。 您將能夠在與您的 schematron 規則匹配的 JAXB 類上定義一些 validate() 方法。

我記得一個項目(15 年前)將一些 Schematron 規則包含到 Xsd 語法中,並幫助從中生成驗證方法。 但是生成的代碼不是很精確,而且大部分 XPath 表達式無法轉換成 java。

那是基於https://github.com/NIEM/Schematron-in-XSD-Spec但我找不到它。

如果我必須實現這一點,我將查看https://phax.github.io/ph-schematron/ ,然后我將圍繞 JAXB 類生成一個代理,該代理將根據 Schematron 規則進行驗證。

最好的問候,克里斯托夫

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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