1

我希望能够将命名空间声明属性添加到 DOM 文档/元素的根标记。

Codewise,我想从这样的事情开始:

<xsl:stylesheet 
    xmlns:xlink="http://www.w3.org/TR/xlink/"
    xmlns="http://www.w3.org/1999/xhtml">

对此:

<xsl:stylesheet 
    xmlns:xlink="http://www.w3.org/TR/xlink/"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:util="http://www.url.to.util"> <-- New namespace declaration

我目前正在尝试做的事情:

xsl.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:util", "http://www.url.to.util")

但很明显,这是行不通的。不过,我该怎么做呢?

在此先感谢您的帮助!

4

1 回答 1

1

在不知道您正在工作的上下文的约束的情况下。这是使用 DOMBuilder 处理它的一种方法:

import groovy.xml.DOMBuilder
import groovy.xml.XmlUtil

def xmlxsl = '''
<xsl:stylesheet 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xlink="http://www.w3.org/TR/xlink/"
    xmlns="http://www.w3.org/1999/xhtml" />
'''
def doc = DOMBuilder.parse(new StringReader(xmlxsl))
def ele = doc.getDocumentElement()
ele.setAttribute("xmlns:util","http://www.url.to.util")

assert XmlUtil.serialize(ele).trim() == 
        '<?xml version="1.0" encoding="UTF-8"?>' +
        '<xsl:stylesheet xmlns="http://www.w3.org/1999/xhtml"' +
        ' xmlns:util="http://www.url.to.util"' +
        ' xmlns:xlink="http://www.w3.org/TR/xlink/"' +
        ' xmlns:xsl="http://www.w3.org/1999/XSL/Transform"/>'

请注意,在断言字符串中,结果ele包含所需的xmlns:util="http://www.url.to.util". 在您的系统上,我不确定命名空间的顺序是否相同。但是,应该添加它。

我在原始示例命名空间中添加的一个细节是xmlns:xsl="http://www.w3.org/1999/XSL/Transform",以便 xsl 命名空间本身验证。

处理编辑命名空间的另一种方法可以在这篇文章中找到(也在 Stack Overflow):在 Groovy MarkupBuilder 中使用命名空间

于 2013-08-11T04:59:20.317 回答