Используя преобразование XSLT и ввод, сохраните все изменения, внесенные пользователем в исходный XML

#xml #xslt #input #save

#xml #xslt #ввод #Сохранить

Вопрос:

У меня есть XML, и я использую преобразование XSLT для создания выходных данных html. Внутри преобразования я использую ввод

 <input type="{@Type}" class="form-control" value="{@Value}"></input>
  

В моем XML я объявил тип (логическое значение, текст) и значение в качестве атрибутов узла.

 <Setting Caption="example" Value="exampleText" Type="text" ></Setting>
  

Это работает нормально, начальным значением ввода является значение из атрибута узла XML.

Теперь я хочу сохранить все изменения, внесенные пользователем.

Итак, если пользователь изменит значение ‘exampleText’ из поля ввода, как можно обновить мой XML-файл новым значением?

Также у меня есть кнопка «Сохранить», я хочу, чтобы при нажатии на нее сохранялись все изменения.

Ответ №1:

Движки XSLT, встроенные в браузеры, могут генерировать только HTML. Как только HTML сгенерирован, они больше не играют роли в том, как он обрабатывается.

Традиционно пользовательские события (например, ввод данных в форму или нажатие кнопки) обычно обрабатываются кодом Javascript.

Но есть решения получше:

  • вы могли бы рассмотреть возможность использования XForms,
  • или вы могли бы рассмотреть возможность использования Saxon-JS. Saxon-JS — это XSLT-движок, который запускается в браузере и позволяет обрабатывать пользовательские события с использованием XSLT-кода; ваш XSLT-код для обработки определенного события может сгенерировать новый XML-файл, который вы хотите отправить обратно на сервер. В настоящее время Saxon-JS не имеет встроенной поддержки для вызова HTTP post-запроса, поэтому эта часть все равно должна быть на Javascript, но вы можете легко вызвать функцию JS из Saxon-JS.