xslt 3.0 xml до JSON числовой формат - PullRequest
0 голосов
/ 23 апреля 2020

Я хотел бы преобразовать следующие xml в JSON:

<?xml version='1.0' encoding='utf-8'?>
<map xmlns="http://www.w3.org/2005/xpath-functions">
    <array key="ids">
        <number>3218087</number>
    </array>
</map>

, используя

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="3.0">

    <xsl:output method="text" />

    <xsl:template match="/">
        <xsl:value-of select="xml-to-json(.)" />
    </xsl:template>

</xsl:stylesheet>

Это дает мне:

{"ids":[3.218087E6]}

Что мне нужно, это

{"ids":[3218087]}

Любая помощь будет высоко ценится.

Приветствия Przemek

1 Ответ

0 голосов
/ 23 апреля 2020

Спецификация c https://www.w3.org/TR/xpath-functions/#func - xml -to- json для элемента number предполагает:

Элемент $ E с именованным номером приводит к выводу строки. Результат xs: string (xs: double (fn: string ($ E)))

, а приведение к xs:string требует записи E для значений, превышающих 1000000 Я думаю (https://www.w3.org/TR/xpath-functions/#casting-к-строке ).

Так что я не думаю, что результат xml-to-json можно изменить, если процессор не позволяет некоторым опциям выбрать другой правило форматирования чисел.

...