1

DOM ドキュメント/要素のルート タグに名前空間宣言属性を追加できるようにしたいと考えています。

コード的には、次のようなものから行きたいと思います:

<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 を使用してそれを処理する 1 つの方法を次に示します。

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"。あなたのシステムでは、名前空間の順序が同じかどうかわかりません。ただし、追加する必要があります。

元の例の名前空間に追加した詳細の 1 つはxmlns:xsl="http://www.w3.org/1999/XSL/Transform"、xsl 名前空間自体が検証されるようにするためです。

名前空間の編集に対処する別の方法は、この投稿 (スタック オーバーフローでも) で見つけることができます: Groovy MarkupBuilder での名前空間の使用

于 2013-08-11T04:59:20.317 に答える