我想纯文本文件转换为使用XSLT的XML文件。 我开始与CSV文件,因为这是我可以开始谷歌搜索的例子在一个著名的文件格式。
我无意中发现了这一点: http://ajwelch.blogspot.com/2007/02/csv-to-xml-converter-in-xslt-20.html ,这也指着http://andrewjwelch.com/code/xslt /csv/csv-to-xml_v2.html 。
这些链接包含的内容是,据说,一个XSLT(2.0),可以采取一个CSV文件,并将其转换为XML文件。
...除了它实际上并没有正常工作。
我把它架在我的Maven的Eclipse项目,下载最新的撒克逊依赖(9.4 HE),并试图使用它。 我遇到了这个错误:
误差在第1行的csv.csv 1柱:
SXXP0003:错误报告的XML解析器:内容是不是在序言不允许的。
这似乎表明,我认为当它开始解析文件,它击中了第一个字符,发现这不是一个<
字符,嚷着要自己“这不是一个XML文件!双击红豆杉三通EFF,伙计!” 并炸毁了。 哪一种背道而驰的想法,这个XSLT是应该在不属于XML(即CSV文件来代替)文件。 迫使你换你非XML中的XML标签有它工作完全失败的目的。
起初我以为也许问题是,我并没有直接使用Saxon罐子像例子中的命令行上。 所以,我就是这样做的。 其结果是很熟悉的东西:
误差在第1行的csv.csv 1柱:
SXXP0003:错误报告的XML解析器:内容是不是在序言不允许的。
我想,也许是因为我使用的是较新的版本,我需要回去和使用的例子原本下写的版本。 于是我又回到SaxonB 9.1.0.8,并试图它无论是在Eclipse和命令行上。 护理猜发生了什么?
误差在第1行的csv.csv 1柱:
SXXP0003:错误报告的XML解析器:内容是不是在序言不允许的。
我发现,如果我包在一个虚拟的XML标记的CSV文件的全部内容(如<whatever>item1,item2,item3</whatever>
),它开始几乎工作(它至少使得它过去的第一个字符和我开始进一步得到不同的错误一起在这个过程中)。
那么,为什么地狱不会将该XSLT工作? 为什么在其博客上发布(和所有的附加注释部分服务员评论)似乎表明它呢? 我还发现它引用在这里Ubuntu的帮助文档中 ,并作为公认的答案这个问题的StackOverflow 。 这怎么可能? 这是行不通的!
因此,无论在整个互联网上的每个人都在说谎彼此和/或自己在一个巨大的阴谋,旨在激怒我,还是有一些非常简单的,必不可少的一步,我只是缺少所需做出撒克逊使用该XSLT转换一个CSV文件到XML文件。
因此,任何人知道它是什么?
编辑:pgfearo的答案接受。 这种“编辑”部分的原始内容,现在它自己的问题在这里: 撒克逊在Java中:XSLT的CSV到XML
编辑2:如果有人好奇,什么我的XSLT结束了看起来像,在这里一个不同的问题结束了: XSLT remove()函数