是否可以从Schematron生成HTML表单?我有很多Schematron文件中描述的模式。我必须创建允许输入数据的HTML表单,这些数据将转换为与Schematrons兼容的XML文档。我希望以任何方式生成表单,而不是手动开发表单。有可能吗?你知道这个的工具吗?
我发现了从XSD生成HTML表单的类似工具,例如https://github.com/davidmoten/xsd-forms。
最佳答案
很有趣的问题。它可以使用XSD完成,因为XSD描述了有效XML文档的结构(可以显示哪些元素、以什么顺序、多少次等)。因此,应用程序可以改变这个过程,向用户显示一个表单,允许填写输入小部件元素、重新排序元素等,最后将生成一个有效的XML文档。
然而,Schematron并不常用地描述XML文档结构,而是提供了非常强大的语义规则或约束。因此(在一般情况下)不能反转流程以显示生成有效XML文档的表单。不过,这取决于Schematrons的外观,但是考虑一下这个简单的例子(摘自this page):
<schema xmlns="http://www.ascc.net/xml/schematron" >
<pattern name="Test integer">
<rule context="AAA">
<assert test="floor(.) = number(.)">The AAA value is not an integer.</assert>
</rule>
</pattern>
</schema>
有许多不同的XML文档结构生成对此Schematron有效的XML文档,因此您可能有一个表单来填充元素值,但是Schematron没有提供足够的关于文档结构应该是什么的信息:元素应该放在哪里?,元素应该出现多少次?等等。
来源:在我的最终学位项目中,我构建了一个多平台应用程序,它给XSD(可选Schematron,可选XSLT)生成一个表单,这样任何用户都可以创建一个针对XSD和Schematron有效的XML文档,而无需了解XML/XSD/Schematron/XSLT。Schematron的信息(如果存在)用于执行额外的验证,甚至用于动态禁用枚举值,如果选中该值将导致Schematron错误。但是请注意,Schematron的信息不足以知道XML文档应该具有什么结构(该信息存在于XSD中)。如果您想知道,XSLT文档(如果有的话)被用来选择性地将生成的XML文档转换为更适合用户的其他类型的文档,比如HTML或PDF。
关于html - 从Schematron生成HTML表单,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41761837/