Преобразование json в xml с помощью функции json-to-xml () приводит к выводу в нежелательном формате - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть файл xsl, который я пытаюсь применить шаблон xsl к образцу json.Вместо создания действительного XML-документа с ключом и значениями JSON, он создает плохо сформированный XML-файл с закодированными строками.Ниже приведена команда, с которой я запускаю.

java -cp /Users/vn04pa5/.m2/repository/net/sf/saxon/Saxon-HE/9.9.1-1/Saxon-HE-9.9.1-1.jar net.sf.saxon.Transform -it:"initial-template" -xsl:"XBorderPOJSON.xsl" input='{
  "purchaseOrderNo": "yvueBluWlI",
  "sourceMarketOrderNo": "ZONWqmCorD",
  "destinationMarketOrderNo": "xFildoWLxd"}'

Вывод

<?xml version="1.0" encoding="UTF-8"?>yvueBluWlIZONWqmCorDxFildoWLxd

XSL-файл:

<xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes"/>
  <xsl:strip-space elements="*"/>
  <xsl:param name="input"/>
 <xsl:template name="initial-template">
      <!--<xsl:value-of select="$input"/>-->
 <!--   <xsl:variable name="json" select="unparsed-text($input)"/>-->
    <xsl:apply-templates select="json-to-xml($input)"/>
    <!--  <xsl:value-of select="$json"/>-->
</xsl:template>
</xsl:stylesheet>

Нужно ли использовать профессиональную версию или версию EE, чтобы это работало?У меня есть Java-приложение, которое выдает тот же результат.

1 Ответ

0 голосов
/ 28 февраля 2019

Функция json-to-xml() создает дерево узлов XML.Вы применяете шаблоны к корню этого дерева, но у вас нет шаблонных правил для обработки этих узлов.Поэтому используются правила шаблона по умолчанию;правила шаблона по умолчанию пропускают узлы элементов и атрибутов и выводят только текстовые узлы.Добавьте <xsl:mode on-no-match="shallow-copy"/> или просто используйте xsl:copy-of (или xsl:sequence) вместо xsl:apply-templates.

...