从Schematron生成HTML表单

时间:2017-01-20 10:50:28

标签: html xml schematron

是否可以从Schematron生成HTML表单?我有Schematron文件中描述的一堆模式。我必须创建HTML表单,允许输入将转换为与Schematrons兼容的XML文档的数据。我希望以任何方式生成它们,而不是手动开发表单。可能吗?你知道这方面的工具吗?

我找到了类似的工具,用于从XSD生成HTML表单,例如https://github.com/davidmoten/xsd-forms

1 个答案:

答案 0 :(得分:2)

非常有趣的问题。它可以使用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。