从 Schematron 生成 HTML 表单
Generate HTML form from Schematron
是否可以从 Schematron 生成 HTML 表单?我有一堆在 Schematron 文件中描述的模式。我必须创建 HTML 表单,允许输入数据,这些数据将被转换为与 Schematron 兼容的 XML 文档。我不想手动开发表单,而是想以任何方式生成它们。可能吗?你知道这方面的工具吗?
我找到了用于从 XSD 生成 HTML 表单的类似工具,例如 https://github.com/davidmoten/xsd-forms 。
非常有趣的问题。它可以用 XSD 来完成,因为 XSD 描述了有效 XML 文档的结构(哪些元素可以出现,以什么顺序出现,出现多少次,等等)。因此,一个应用程序可以扭转这个过程并向用户显示一个允许填写输入小部件元素、重新排序元素等的表单,最后将生成一个有效的 XML 文档。
然而,Schematron 通常不描述 XML 文档结构,而是提供极其强大的语义规则或约束。因此(在一般情况下)无法逆转该过程以显示生成有效 XML 文档的表单。然而,它可以根据您的 Schematron 的外观来完成,但请考虑这个简单的示例(取自 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 文档结构可以生成 XML 对这个 Schematron 有效的文档,所以你可能有一个表单来填充元素值,但是 Schematron 没有提供足够的信息文档的结构应该是什么:元素应该放在哪里?元素应该出现多少次?等等
来源:在我的最终学位项目中,我构建了一个多平台应用程序,给定一个 XSD(以及可选的 Schematron,以及可选的 XSLT)它生成一个表单,以便任何用户都可以创建一个 XML 文档对 XSD 和 Schematron 有效,他们不需要知道任何关于 XML/XSD/Schematron/XSLT 的信息。 Schematron 的信息(如果存在)用于执行额外的验证,甚至动态禁用枚举值,如果选择这些值将导致 Schematron 错误。但是请注意,Schematron 的信息不足以知道 XML 文档应该具有什么结构(该信息存在于 XSD 中)。如果您想知道,XSLT 文档(如果存在)用于选择性地将生成的 XML 文档转换为更适合用户的其他类型的文档,例如 HTML 或 PDF。
是否可以从 Schematron 生成 HTML 表单?我有一堆在 Schematron 文件中描述的模式。我必须创建 HTML 表单,允许输入数据,这些数据将被转换为与 Schematron 兼容的 XML 文档。我不想手动开发表单,而是想以任何方式生成它们。可能吗?你知道这方面的工具吗?
我找到了用于从 XSD 生成 HTML 表单的类似工具,例如 https://github.com/davidmoten/xsd-forms 。
非常有趣的问题。它可以用 XSD 来完成,因为 XSD 描述了有效 XML 文档的结构(哪些元素可以出现,以什么顺序出现,出现多少次,等等)。因此,一个应用程序可以扭转这个过程并向用户显示一个允许填写输入小部件元素、重新排序元素等的表单,最后将生成一个有效的 XML 文档。
然而,Schematron 通常不描述 XML 文档结构,而是提供极其强大的语义规则或约束。因此(在一般情况下)无法逆转该过程以显示生成有效 XML 文档的表单。然而,它可以根据您的 Schematron 的外观来完成,但请考虑这个简单的示例(取自 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 文档结构可以生成 XML 对这个 Schematron 有效的文档,所以你可能有一个表单来填充元素值,但是 Schematron 没有提供足够的信息文档的结构应该是什么:元素应该放在哪里?元素应该出现多少次?等等
来源:在我的最终学位项目中,我构建了一个多平台应用程序,给定一个 XSD(以及可选的 Schematron,以及可选的 XSLT)它生成一个表单,以便任何用户都可以创建一个 XML 文档对 XSD 和 Schematron 有效,他们不需要知道任何关于 XML/XSD/Schematron/XSLT 的信息。 Schematron 的信息(如果存在)用于执行额外的验证,甚至动态禁用枚举值,如果选择这些值将导致 Schematron 错误。但是请注意,Schematron 的信息不足以知道 XML 文档应该具有什么结构(该信息存在于 XSD 中)。如果您想知道,XSLT 文档(如果存在)用于选择性地将生成的 XML 文档转换为更适合用户的其他类型的文档,例如 HTML 或 PDF。