首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Schematron编译成Jaxb注释的Java类?

如何将Schematron编译成Jaxb注释的Java类?
EN

Stack Overflow用户
提问于 2022-06-17 07:29:00
回答 2查看 66关注 0票数 0

我一直在使用xjc将XML编译成带注释的java类,以便使用jaxb生成xml文件。

我如何对Schematron进行同样的操作?

更新:更确切地说: java类不需要验证所有模式规则,只有与模式相关的部分,即可以表示为XSD的schematron的部分。

这是我想编译的特定模式:https://github.com/OpenPEPPOL/peppol-bis-invoice-3/blob/master/rules/sch/PEPPOL-EN16931-UBL.sch

其目的是生成PEPPOL、BIS账单、3.0发票和信用卡。其他意见也欢迎。

EN

回答 2

Stack Overflow用户

发布于 2022-06-20 12:26:55

Schematron不是模式定义,就像使用XJC时的XSD一样。不可能使用XJC从Schematron生成Java类。

票数 0
EN

Stack Overflow用户

发布于 2022-06-20 20:26:06

XSD是一种能够验证XML结构的语法。Schematron是帮助(而不是排他的)在数据上而不是在结构上验证业务规则的规则。

如果我与JAXB生成的类并行,XSD能够验证每个invoice.vat < invoice.totalAmount节点是否适合一个类属性;Schematron验证该类属性。因此Schematron规则通常添加到结构语法中(XSD、RelaxNG、DTD)。您可以在JAXB类上定义一些与您的模式规则相匹配的rules ()方法。

我还记得一个项目(15年前),该项目将一些Schematron规则包含到Xsd语法中,并帮助由此生成验证方法。但是生成的代码并不十分精确,而且大多数XPath表达式都不能转换为java。

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

如果必须实现这一点,我将查看https://phax.github.io/ph-schematron/,并将围绕JAXB类生成一个代理,该代理将根据Schematron规则进行验证。

向克利斯朵夫问好

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72655759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档