Использование Scala в качестве замены для XSLT? - PullRequest
6 голосов
/ 24 июня 2011

В моем проекте Scala у нас много унаследованного XSLT, и мне было интересно, следует ли нам преобразовать XSLT в код Scala.

Мне нравится XSLT-подход к применению шаблонов к узлам, и я прекрасно использую его для чисто DOM-преобразований, но не думаю, что он хорошо подходит для обработки данных в XML-документе (трудно читать и тестировать) - я бы предпочел для этого используйте Scala.

Учитывая встроенную поддержку Scala XML и сопоставление с образцом, я подумал, что это может быть хорошей заменой. Кто-нибудь успешно конвертировал XSLT-скрипты в Scala? Существуют ли какие-либо модели или лучшие практики?

Мне известен старый проект по преобразованию XSLT в исходный код Scala с именем XSLT2src , но он долгое время не работал и не поддерживает XSLT2.

Спасибо

Ответы [ 2 ]

6 голосов
/ 24 июня 2011

Трудно сказать наверняка, не зная точно, какой XML вы хотите преобразовать и как, но в нынешнем виде шаблон / соответствие XSLT являются одновременно более мощными и более читаемыми, чем сопоставление с шаблоном XML Scala, которое имеет ряд проблем.

В частности:

  • любое нетривиальное сопоставление либо невозможно, либо очень сложно сделать
  • пространства имен не поддерживаются

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

Тем не менее, вы, возможно, захотите взглянуть на главу по XML из Programming Scala.

Наконец, в наши дни распространено мнение, что встроенная поддержка XML в Scala во многих отношениях отсутствует. Смотрите, например Anti-XML для проекта, направленного на создание чего-то лучшего.

1 голос
/ 05 ноября 2011

Scales Xml обеспечивает сопоставление для пространств имен и атрибутов напрямую, но также предоставляет более гибкий внутренний dsl для обработки XPath (а также для оценки на основе строк).

Возможно, наиболее интересным для преобразований являетсяего способность сворачивать пути, выбирать то, что вы хотите в XPath и преобразовывать результаты " вместо ".Эти правила преобразования можно комбинировать.

Вы по-прежнему можете копировать большую часть подхода xslt с прямым использованием XPath в Scales и преобразованием / построением деревьев, как в xslt.

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