Как разобрать карту json на строку в xslt..
этот мой шаблон xslt: -
<xsl:variable name="inputJosn" select="parse-json($input)"/>
<xsl:variable name="joined-array" as="map(*)*">
<xsl:for-each-group select="$inputJosn?*" group-by="?fileName">
<xsl:map>
<xsl:map-entry key="'fileName'" select="current-grouping-key()"/>
<xsl:map-entry key="'value'" select="map{'Root':array{map{'Lines': array:join(current-group()?value?*?Root?*?Lines)}}}"/>
</xsl:map>
</xsl:for-each-group>
</xsl:variable>
здесь переменная объединенного массива — это тип карты.
поэтому, если передать переменную в функции parse-json($joined-array) и json-to-xml($joined-array), будет выдана ошибка..
An atomic value is required for the first argument of fn:parse-json(), but the supplied type is a map type, which cannot be atomized
так как преобразовать тип карты в тип строки.
<xsl:variable name="json-array" select="parse-json($joined-array)"/>
<xsl:variable name="json-xml" select="json-to-xml($joined-array)"/>
Решение проблемы
Учитывая xsl:variable name="joined-array" as="map(*)*", что тип представляет собой последовательность карт, не совсем ясно, какое преобразование вы хотите, но вы можете сериализовать последовательность карт, например, с помощью $joined-array! serialize(., map { 'method': 'json', 'indent': true() }). Это выражение дает вам последовательность строк.
Комментариев нет:
Отправить комментарий