我需要将CSV转换为XML。
我想用xslt一步完成。
我非常感兴趣地阅读了W3C csv-parser package。该文档显示了一个示例,该示例声明了
的命名空间xmlns:csv="http://example.com/csv"
在文档顶部,然后继续说它将使用csv-parser包
<xsl:use-package name="http://example.com/csv-parser"
package-version="*"/>
在Netbeans(8.2)IDE中,当我制作给自己的示例副本以将csv转换为呈现时,在(IE 11.1006)浏览器中生成的输出页面指出:“非静态Java函数的第一个参数' parse'不是有效的对象引用。“
[当我查找上面提供的URL时,我只看到页面标题,没有软件包。我是不是该?浏览器从何处加载软件包?
我认为错误消息是说程序包引用错误。我不了解W3C(w3.org)文档吗?他们只是在建议界面指南吗?他们不提供实施吗?
为了方便起见,这是上面的超链接提供的代码的副本:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:csv="http://example.com/csv"
exclude-result-prefixes="xs csv"
version="3.0">
<xsl:output indent="yes"/>
<xsl:use-package name="http://example.com/csv-parser"
package-version="*"/>
<!-- example input "file" -->
<xsl:variable name="input" as="xs:string">
name,id,postal code
"Abel Braaksma",34291,1210 KA
"Anders Berglund",473892,9843 ZD
</xsl:variable>
<!-- entry point -->
<xsl:template name="xsl:initial-template">
<xsl:copy-of select="csv:parse($input)"/>
</xsl:template>
</xsl:stylesheet>```
如何为XSLT处理器提供软件包位置是特定于处理器的,对于Saxon 9,可以从命令行使用-lib
选项提供要使用的软件包的文件名,也可以使用具有以下名称的配置文件:足够的部分,例如直接从XSLT 3测试套件的GitHub存储库中加载程序包]
<configuration edition="HE" xmlns="http://saxon.sf.net/ns/configuration">
<xsltPackages>
<package name="http://example.com/csv-parser" version="1.0"
sourceLocation="https://github.com/w3c/xslt30-test/raw/master/tests/decl/package/package-100.xsl"
/>
</xsltPackages>
</configuration>
因此,您基本上需要确保将要使用的软件包(即,在规范中找到的源代码)安全存放在本地文件中,然后可以使用[C0从命令行运行Saxon 9.8或更高版本]选项,或者您为配置文件提供-it -xsl:your-xslt-code.xsl -lib:package-file.xsl
。
在-config:config.xml
,您可以以不同的方式查看它的运行情况,Saxon 9在XQuery代码中运行XPath 3.1 https://xqueryfiddle.liberty-development.net/94hwphT函数以运行某些XSLT的代码。 W3C测试套件GitHub存储库中的软件包源代码。