【问题标题】:Convert csv into xml using XLST transformation?使用 XSLT 转换将 csv 转换为 xml?
【发布时间】:2019-02-02 21:19:23
【问题描述】:

这是我的输入 csv 文件

JobID
123
345
234
121
2390

我想要使用 XLST 转换的以下格式的输出 xml 文件

<jobs>
    <job>
        <jobid>123</<jobid>
    </job>
    <job>
        <jobid>345</<jobid>
    </job>
    <job>
        <jobid>234</<jobid>
    </job>
    <job>
        <jobid>121</<jobid>
    </job>
    <job>
        <jobid>2390</<jobid>
    </job>
</jobs>

谁能帮我用一些代码sn-p解决sbove问题?

提前致谢

【问题讨论】:

  • CSV 不是“逗号分隔值”吗?我在该文本数据中看不到任何逗号。所以只需处理tail(unparsed-text-lines('input.txt')) 并为每个项目创建&lt;job&gt;&lt;jobid&gt;&lt;xsl:value-of select="."/&gt;&lt;/jobid&gt;&lt;/job&gt;
  • 感谢您的更新。如何使用 XSLT 2.0 进行更新
  • 您为什么将问题标记为xslt-3.0 然后回来请求 2.0 解决方案?如果您查看w3.org/TR/xpath-functions/#func-unparsed-text-lines 的文档,您可以看到如何使用tokenizeunparsed-text(在XSLT/XPath 2 中提供)和tail 调用只是使用subsequence(exp, 2)@ 的另一种方式987654323@

标签: xml xslt xslt-2.0 xslt-grouping


【解决方案1】:

在带有 expand-text="yes" 的 XSLT 3.0 中,这很简单:

<jobs>
  <xsl:for-each select="tail(unparsed-text-lines('input.txt'))">
    <job><jobid>{.}</jobid></job>
  </xsl:for-each>
</jobs>

【讨论】:

  • Hai Michael 感谢您的更新。我如何在 XLST 2.0 中做到这一点
  • tail(x)替换为remove(x, 1),将{.}替换为&lt;xsl:value-of select="."/&gt;,将unparsed-text-lines(x)替换为tokenize(unparsed-text(x), '\r?\n'))
  • 非常感谢迈克尔
猜你喜欢
  • 2017-05-23
  • 2011-10-28
  • 2013-05-22
相关资源
最近更新 更多