Получить все данные из тега XML с помощью XSL - PullRequest
0 голосов
/ 21 мая 2018

Привет У меня есть данные XML, такие как

<data>
      <Id>T2351</Id>
      <Name>Sam</Id>
</data>

, и я использую XSL для извлечения данных из каждого тега ID и Name и помещаю их в файл CSV.Мой XSL-код выглядит следующим образом:

<xsl:template match="/"> Id,Name
<xsl:for-each select="//data">
<xsl:value-of select="concat(Id,',',Name,'&#xA;')"/>
</xsl:for-each>
</xsl:template>

Но иногда проблема заключается в данных, имя имеет несколько значений, таких как "Сэм, Тянь", и всякий раз, когда присутствует запятая, данные разбиваются на разные столбцы вCSV, который я должен остановить.Я очень новичок в XSL и, следовательно, не могу понять, каким должно быть решение, чтобы это исправить.Любая помощь приветствуется.

Ответы [ 3 ]

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

Вы можете сделать что-то вроде следующего, Это может помочь вам.

<xsl:template match="text()[contains(., ', ')]">
   <xsl:value-of select="concat('&quot;', ., '&quot;')"/>
</xsl:template>
0 голосов
/ 21 мая 2018

Наконец-то это сработало

<xsl:template match="/">Id,Name
  <xsl:for-each select="//data">
    <xsl:value-of select="concat('&quot;',Id,'&quot;,&quot;',Name,'&quot;&#xA;')"/>
  </xsl:for-each>
</xsl:template>

Только так CSV смог пропустить подарок через запятую в значениях любого поля

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

Общий подход к значениям, содержащим запятые в CSV, заключается в том, чтобы заключить значение в кавычки.

Для вашего случая это может выглядеть следующим образом:

<xsl:template match="/">Id,Name
  <xsl:for-each select="//data">
    <xsl:value-of select="concat(Id, ',&quot;', Name, '&quot;&#xA;')"/>
  </xsl:for-each>
</xsl:template>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...