2017-01-20 8 views
1

можно ли генерировать HTML-форму из Schematron? У меня есть куча схем, описанных в файлах Schematron. Я должен создать HTML-формы, которые позволяют вводить данные, которые будут преобразованы в документы XML, совместимые с Schematrons. Вместо ручной разработки форм я хотел бы их генерировать каким-либо образом. Является ли это возможным? Знаете ли вы инструменты для этого?Сгенерировать HTML-форму из Schematron

Я нашел похожие инструменты для создания HTML-форм из XSD, например https://github.com/davidmoten/xsd-forms.

ответ

1

Очень интересный вопрос. Это можно сделать с помощью 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 документов, которые производят XML документы, действительные против этого Schematron, так что вы может иметь форму для заполнения значения элемента, но Schematron не предоставляет достаточной информации о том, какой должна быть структура документа: где должен размещаться элемент ?, сколько раз должен появляться элемент ?, и т. д.

Источник: в моем финальном проекте я построил многоплатформенное приложение, которое дало XSD (и, возможно, Schematron и, возможно, XSLT), оно сгенерировало форму, чтобы любой пользователь может создать документ XML, действительный против XSD и Schematron, без необходимости знать что-либо о XML/XSD/Schematron/XSLT. Информация Schematron (если присутствует) использовалась для выполнения дополнительных проверок и даже для динамического отключения значений перечисления, которые, если они будут выбраны, вызовут ошибки Schematron. Но учтите, что информации Schematron недостаточно было знать, какая структура должна иметь документ XML (эта информация присутствовала в XSD). В случае, если вы хотите знать, XSLT-документ (если он есть) использовался для необязательного преобразования результирующего документа XML в другой тип документа, более подходящего для пользователя, например, HTML или PDF.

+0

Большое спасибо за ваше объяснение! – Jacek

+0

Добро пожаловать: D – sergioFC