xml.setnamespace ()를 사용할 때 네임 스페이스를 추가하지 않음
-
06-07-2019 - |
문제
내가 전화 할 때마다 xml.setNamespace(ns)
, 요소의 네임 스페이스가 설정됩니다 ns
, 하지만 ns
또한 요소에 자체 접두사가있는 다른 네임 스페이스로 추가됩니다. 후자가 일어나지 않도록하는 방법을 알고 싶습니다 (수정해도 괜찮습니다. XML.prototype.function::setNamespace
) 정의없이 @xmlns
E4X 구문을 사용할 수 없으므로 대안 적으로, an XML.prototype.function::setAttribute
e4x @attribute 구문을 사용하지 않습니다 (물론 하나의 사용을 제외하고는 function::
그것을 정의하는 것이 더 좋을 것입니다.
예시:
var xhtml = new Namespace("http://www.w3.org/1999/xhtml"),
xml = <foo/>;
xml.setNamespace(xhtml);
// what I get:
xml.toXMLString() ===
<foo
xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns="http://www.w3.org/1999/xhtml"
/>.toXMLString();
// what I want:
xml.toXMLString() ===
<foo
xmlns="http://www.w3.org/1999/xhtml"
/>.toXMLString();
해결책 2
나는 그냥 얻는 것에 만족합니다 <xhtml:my-root xmlns:xhtml="...">...</xhtml:my-root>
그래서 나는 단지 이름이 지정된 네임 스페이스를 사용하는 것을 고수 할 것입니다 (new Namespace(name, nsURI)
).
다른 팁
답을 모르지만 Rhino 1.7R2를 통해 코드를 실행했으며 다른 결과를 반환했습니다. 이것은 구현 의존적이거나 E4X 구현 중 하나가 버기입니다. Dunno.
Rhino 1.7R2 :
var xhtml = new Namespace("http://www.w3.org/1999/xhtml"),
xml = <foo/>;
xml.setNamespace(xhtml);
js> xml.toXMLString()
<e4x_0:foo xmlns:e4x_0="http://www.w3.org/1999/xhtml"/>
오래된 "네임 스페이스 접두사가 미미한 것으로 보이지만 실제 세계에서는 실제로 중요한 문제"문제가 발생합니다. :(
제휴하지 않습니다 StackOverflow