Создание XML-документов: встроенный или шаблонный язык - PullRequest
2 голосов
/ 30 мая 2011

Когда я создаю документ XML, я использую Perl, но этот вопрос не зависит от языка.Кажется, что большинство людей выполняют эту задачу с помощью таких инструментов, как XML :: Writer или XML :: LibXML.Это выглядит так:

my $writer = XML::Writer->new();
my $type = "fancy";
$writer->startTag("pants");
$writer->characters($type);
$writer->endTag("pants");

Я ненавижу это.Похоже на первую веб-страницу, которую вы создаете как начинающий веб-разработчик, где вы смешиваете все HTML, CSS и PHP-код вместе в одном файле, потому что вы еще не узнали о MVC.И все согласны с тем, что это ужасно, и мы должны все это разделить и постараться максимально разделить языки.Это улучшает читаемость, если ничего больше.

Так почему же нормально размещать XML в нашем коде Perl?Моя идея состоит в том, чтобы использовать Template :: Toolkit так же, как мы делаем с HTML.Таким образом, это выглядело бы так:

 <pants>
     [% type %]
 <pants>

После этого я могу перетянуть результат в XML :: LibXML и проверить строку.

Но я не думаю, что кто-то так поступает,Почему бы и нет?Я что-то упустил?

1 Ответ

3 голосов
/ 30 мая 2011

Я использовал Template :: Toolkit для XML. Я также использовал более програматический подход XML :: Writer .

Если у вас есть фиксированная структура XML, которую вы просто заполняете данными, и у вас уже есть Template :: Toolkit, то использование шаблона TT для вашего XML имеет большой смысл; использование шаблона в этом случае, вероятно, значительно облегчит правильное соответствие желаемой схеме. Но, конечно, будьте осторожны с правильным экранированием и кодированием всего для XML, а не для HTML.

Если вы программно конвертируете произвольные структурированные данные в XML, то XML :: Writer, вероятно, будет лучшим выбором: если у вас нет фиксированной схемы, то нет ничего для шаблона.

XML часто используется как переносимый формат сериализации данных. Архетипический пример начинается с некоторой вложенной структуры данных HoHoA и преобразует ее в XML через общий интерфейс сериализации. В системе сериализации просто есть структура данных, поэтому нет структуры для шаблона.

Кроме того, люди склонны использовать первую технику, которую они изучают, даже когда есть лучшие способы. Я предполагаю, что большинство людей сначала сталкиваются с XML для сериализации данных (а не для структурированного хранения документов), поэтому они продолжают использовать методы сериализации, даже когда шаблонный подход будет чище.

Все это (даже первый абзац) в равной степени относится и к JSON (и даже к HTML).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...