XSLT-эквивалент для JSON - PullRequest
       96

XSLT-эквивалент для JSON

370 голосов
/ 24 октября 2009

Существует ли XSLT эквивалент для JSON? Что-то, что позволяет мне делать преобразования в JSON, как XSLT в XML.

Ответы [ 24 ]

0 голосов
/ 16 ноября 2017

Возможно использование XSLT с JSON. Версон 3 из XPath (3.1) XSLT (3.0) и XQuery (3.1) поддерживает JSON в некотором роде. Похоже, это доступно в коммерческой версии Saxon и может в какой-то момент быть включено в версию HE. https://www.saxonica.com/html/documentation/functions/fn/parse-json.html

-

Что бы я ожидал от альтернативного решения:

Я бы хотел иметь возможность вводить JSON для получения соответствующего набора данных и выводить JSON или TEXT.

Доступ к произвольным свойствам и оценка значений

Поддержка условной логики

Я бы хотел, чтобы сценарии преобразования были внешними по отношению к инструменту, основаны на тексте и, предпочтительно, обычно используемом языке.

Потенциальная альтернатива?

Интересно, может ли SQL быть подходящей альтернативой? https://docs.microsoft.com/en-us/sql/relational-databases/json/json-data-sql-server

Было бы неплохо, если бы альтернативный инструмент мог обрабатывать JSON и XML https://docs.microsoft.com/en-us/sql/relational-databases/xml/openxml-sql-server

Я еще не пытался преобразовать скрипты XSLT, которые я использую, в SQL, или еще не полностью оценил эту опцию, но я надеюсь рассмотреть ее в ближайшее время. Пока только некоторые мысли.

0 голосов
/ 07 июля 2017

Один из подходов, который еще не дан, заключается в использовании генератора синтаксических анализаторов для создания синтаксического анализатора в XSLT, который анализирует JSON и создает вывод XML.

Одной из опций, которая часто упоминается на конференциях XML, является генератор синтаксических анализаторов ReX (http://www.bottlecaps.de/rex/) - хотя на сайте он полностью недокументирован, рецепты доступны при поиске.

0 голосов
/ 29 сентября 2010

Не слишком уверен, что в этом есть необходимость, и мне не хватает инструментов, что говорит об отсутствии необходимости. JSON лучше всего обрабатывать как объекты (как это делается в любом случае в JS), и вы обычно используете язык самих объектов для выполнения преобразований (Java для объектов Java, созданных из JSON, то же самое для Perl, Python, Perl, c #, PHP и т. Д. на). Просто с обычными заданиями (или set, get), зацикливанием и т. Д.

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

0 голосов
/ 16 декабря 2016

Я давно написал адаптер dom для моей платформы обработки json. Он использует библиотеку nu.xom. Результирующее дерево dom работает с java xpath и xslt. Я сделал несколько вариантов реализации, которые довольно просты. Например, корневой узел всегда называется «корнем», массивы переходят в узел ol с подэлементами li (как в html), а все остальное - просто подузел с примитивным значением или другой объектный узел.

JsonXmlConverter.java

Использование: JsonObject sampleJson = sampleJson(); org.w3c.dom.Document domNode = JsonXmlConverter.getW3cDocument(sampleJson, "root");

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