XOM将XML(SVG)转换为XSL样式表

时间:2013-09-02 21:08:12

标签: xml xslt xom

我正在尝试按照本文将SVG文件转换为XSL样式表:http://www.linuxjournal.com/article/9283?page=0,0

我试图在XSL相关元素之间插入svg数据时简单地构造一个新文档,但是当我执行包含此代码的方法时:

        Document input=builder.build(sourcefile);
        Element styletags=new Element("xsl:stylesheet",
                                      "http://www.w3.org/1999/XSL/Transform");
        styletags.appendChild(new Element("xsl:template%20match=\"/\""));
        styletags.appendChild(input);
        Document result=new Document(styletags);

我得到以下异常:

nu.xom.NamespaceConflictException:前缀元素必须具有名称空间URI。

如果我尝试使用以下代码

Element xsl=new Element("template%20match=\"/\""); xsl.addNamespaceDeclaration("xsl","http://www.w3.org/1999/XSL/Transform"); Element styletags=new Element("stylesheet"); styletags.addNamespaceDeclaration("xsl","http://www.w3.org/1999/XSL/Transform"); styletags.appendChild(xsl); styletags.appendChild(input);

我得到了

nu.xom.IllegalNameException:0x25不是合法的NCName字符

我做错了什么?

1 个答案:

答案 0 :(得分:0)

你不能这样做:

new Element("xsl:template%20match=\"/\"")

您必须在创建元素时定义名称(xsl:template),然后添加属性(match="")。像这样:

Element template = new Element("xsl:template", "http://www.w3.org/1999/XSL/Transform");
template.addAttribute(new Attribute("match", ""));