включить запятую в качестве данных в преобразовании xml в csv с использованием xslt - PullRequest
0 голосов
/ 26 мая 2018

Я пытаюсь конвертировать XML-данные в CSV.Как добавить COMMA в качестве данных / текста в CSV?
Я не мог использовать COMMA в качестве разделителя, поскольку CSV - это файл с разделителями-запятыми.Пожалуйста, помогите мне сгенерировать данные, как показано ниже:

rowId   data
1   [xValue,yValue,zValue]
2   [xValue,yValue,zValue]

Некоторые примеры данных:

<parent>
<c1>
<c2 x=1 y=2 z=3>
</c2>
</c1>
</parent>

Мой настоящий xsl, извлекающий данные xml: Добавление COMMA в качестве разделителя или текста разделяетданные в файле.Пожалуйста, предложите правильный путь.

            <xsl:for-each select="childlevel1/childlevel2">
                <xsl:value-of select="concat('','[')"/>
                <xsl:value-of select="@x"/>
                <xsl:value-of select="@y"/>
                <xsl:value-of select="@z"/>
                <xsl:value-of select="concat(']','')"/>
            </xsl:for-each>

1 Ответ

0 голосов
/ 26 мая 2018

Если ваши фактические данные содержат запятую, которую вы не хотите рассматривать как разделитель, вам нужно поставить кавычки вокруг этого поля.

Попробуйте это XSLT:

<xsl:template match="parent">
    <xsl:text>rowId,data&#10;</xsl:text>
    <xsl:for-each select="childlevel1/childlevel2">
        <xsl:number />
        <xsl:text>,</xsl:text>
        <xsl:value-of select="concat('&quot;[',@x,',',@y,',',@z,']&quot;')"/>
        <xsl:text>&#10;</xsl:text>
    </xsl:for-each>
</xsl:template>

Когда вы применяете его к этому XML

<parent>
    <childlevel1>
        <childlevel2 x="1" y="2" z="3" />
        <childlevel2 x="11" y="12" z="13" />
    </childlevel1>
</parent>

Следующий CSV выводится

rowId,data
1,"[1,2,3]"
2,"[11,12,13]"

Когда вы открываете это вВаша любимая электронная таблица (например, Microsoft Excel или OpenOffice) должна содержать только два столбца.

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