2009-10-19 6 views
21

"비어 있음"은 XML 네임 스페이스에 유효한 값입니까? 그렇다면 무엇을 의미합니까?xmlns = ""유효한 xml 네임 스페이스입니까?

다음 XML 코드가 있지만 Field1Field2 요소가 속한 네임 스페이스가 확실하지 않습니다.

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soapenv:Header /> 
    <soap:Body> 
    <Root xmlns="uri"> 
     <Field1 xmlns="">147079737</Field1> 
     <Field2 xmlns="">POL</Field2> 
    </Root> 
    </soap:Body> 
</soapenv:Envelope> 
+0

흥미로운 질문입니다. 그것이 합법적이지 않다면, 네임 스페이스에서 부모 *가 * 인 요소에 대해 "네임 스페이스 없음"을 어떻게 지정합니까? – skaffman

+9

@skaffman : 이것은 합법적 인 요소이며 전역 네임 스페이스에 요소를 가져 오는 방법입니다. –

+3

@Frerich Raabe와 동의합니다 : 그것 없이는 자손 노드에서 상속 된 네임 스페이스를 제거 할 방법이 없습니다. – Tomalak

답변

23

예, 유효합니다. Namespaces in XML 1.0 Recommendation에서 Section 6.2 구체적으로 말한다 : 기본 네임 스페이스 선언

속성 값이 비어있을 수 있습니다. 이것은 선언의 범위 내에서 기본 네임 스페이스가없는 것과 동일한 효과가 있습니다. 주석에서 인용

:

그것은 합법적이며,이 글로벌 네임 스페이스에 요소를 가져 오는 방법입니다.

+0

위의 a * default * 네임 스페이스 선언은 무엇입니까? –

+0

@ 브라이언 : 예; 내 대답에 링크 된 'XML 1.0 권장 사항의 네임 스페이스'섹션 3의 정의 3을 참조하십시오. 그것은 다음과 같이 말합니다 : [정의 : 속성 이름이 DefaultAttName과 일치하면 속성 값의 네임 스페이스 이름은 선언이 붙어있는 요소의 범위에있는 기본 네임 스페이스의 네임 스페이스 이름입니다.] '. DefaultAttName은 'xmlns'로 정의됩니다. –

+0

내 경우에는 네임 스페이스가없는 것과 동일한 경우 네임 스페이스는 무엇입니까? XML에는 미리 정의 된 기본 네임 스페이스가 있습니다. 사용되는 기본 네임 스페이스는 내 경우처럼 사용자가 제공 한 기본 네임 스페이스가 없습니다. –

3

유효한 XML NS가 아닙니다. 유효한 XML NS 선언이 아닙니다. 그것은 법적 URI 참조입니다 불구하고,

빈 문자열을 네임 스페이스 이름으로 사용할 수 없습니다 : XML 1.0 네임 스페이스의 section 2.2을 확인하시기 바랍니다.

그것은 그러나이 효과 하나, 또는 아무 효과가없는 경우 기본 NS 선언을 undeclare 수있는 유일한 방법입니다. 만나다. XML 1.0 및 1.1의 네임 스페이스, section 6.2 그러나 1.1 NS rec는 접두어가있는 NS 선언을 선언 취소하는 방법을 추가했습니다.

따라서 유효하지만 OP가 작성한 것처럼 "유효한 XML 네임 스페이스"가 아닙니다.

+0

네임 스페이스 접두사를 실제 네임 스페이스 (네임 스페이스 URI)와 혼동스럽게 생각하는 것 같습니다. 빈 문자열은 유효한 네임 스페이스 접두사가 아니지만 유효한 네임 스페이스 URI입니다. – vog

+0

나는 아무것도 혼란스럽게 생각하지 않는다. 나는 그 차이를 안다. BTW 난 내 대답을 제안 할지도 모르겠다. – lkuty

+0

대답이 잘못되었습니다. – lkuty

관련 문제