2009-02-26 3 views
2

, 난 복합 유형xml 네임 스페이스를 중첩하는 방법은 무엇입니까? 프로그래밍 언어에서

개념적으로
<xsd:schema targetNamespace="http://www.stackoverflow.com/foo"> 
<xsd:complexType name="bar1"> 
    ... 
</xsd:complexType> 
<xsd:complexType name="bar2"> 
</xsd:complexType> 
    ... 
<xsd:complexType name="foo1" type = "bar1"> 
    ... 
</xsd:complexType> 
</xsd:schema> 

내가 BAR1과 바 2 싶습니다을 정의 할 때 비슷한 일을하고 싶은 스키마 (XSD)에서

namespace foo 
{ 
    namespace bar 
    { 
     void DoIt() 
     { 
     } 
    } 
} 

int main() 
{ 
    foo::bar::DoIt() 
} 

사용 해요 http://www.stackoverflow.com/foo::bar 네임 스페이스 (:: C++에서 빌려왔다.)에 중첩 될 수 있습니다. 바 재료에 대해 정의 된 두 번째 네임 스페이스 인 것처럼 보이는 예제를 보았습니다. 이 예제에서 막대 예제는 아래 예제와 같이 두 번째 네임 스페이스 "http://www.stackoverflow.com/foo/bar"에 정의됩니다. 이것은 "중첩 된"네임 스페이스에서 가장 가까운 것입니다.

그래서 한 가지 나는 가지 할 난 그냥 네임 스페이스 ++ XML에서 다른 대 C를 말하는 방법 grok 수려고한다는 것입니다 다른 스키마에서이의

<xsd:schema targetNamespace="http://www.stackoverflow.com/foo" 
    xmlns:bar = "http://www.stackoverflow.com/foo/bar"> 
<xsd:schema namespace="http://www.stackoverflow.com/foo/bar" 
<xsd:complexType name="foo1"> 
    <xsd:element name="bar1Instance" type="bar:bar1"/> 
    ... 
</xsd:complexType> 
</xsd:schema> 

파트 바 물건을 가져올 것입니다 수 있습니다. 중첩 된 네임 스페이스 개념이 XML에 있습니까? 아니면 각 네임 스페이스가 독립적입니까? 중첩 네임 스페이스의 개념은 구현되었거나 일반적으로 어떻게 수행됩니까? 위의 예처럼 완료 되었습니까? 네임 스페이스는 완전히 독립적입니까, 아니면 중첩 관계를 만들 수 있습니까?

답변

6

XML에서 각 네임 스페이스는 완전히 독립적입니다. 네임 스페이스의 실제 문자열은 의미있는 방식으로 파싱되지 않습니다. 그냥 그렇습니다. XML 네임 스페이스 문자열은 일반적으로 URL입니다. 사람들이 관련없는 스키마에 대해 동일한 네임 스페이스를 실수로 선택하지 않을 가능성이 높기 때문입니다.

Google의 경우 "중첩 된 XML 네임 스페이스"의 예를 찾을 수 있습니다. 이 예제들은 C++ (또는 Java 또는 C# ...) 네임 스페이스의 의미가 아니라, 여러분이 묻는 것에 대해 이야기하는 것이 아닙니다. 이 예제는 사용중인 여러 네임 스페이스가있는 XML 문서를 보여줍니다.

XML 네임 스페이스 문자열은 단순히 스키마를 나타내는 불투명하고 고유 한 문자열입니다. 두 개의 네임 스페이스 문자열이 매우 유사한 경우에는 아무 의미도 없습니다.

+4

URL의 상위 집합 인 URI의 상위 집합 인 합법적 인 IRI (Internationalized Resource Identifier)가 XML 네임 스페이스가되어야합니다. 당신의 진짜 요점은 절대적으로 맞습니다. 파서는 네임 스페이스를 완전히 불투명 한 문자열로 취급합니다. Ref : http://www.w3.org/TR/REC-xml-names/ – Peeja

+0

@Peeja : 명확한 설명. 감사. – Eddie

관련 문제