문제

내가 전화 할 때마다 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"/>

오래된 "네임 스페이스 접두사가 미미한 것으로 보이지만 실제 세계에서는 실제로 중요한 문제"문제가 발생합니다. :(

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top