2013-06-19 2 views
1

그래서 w3schools에서 네임 스페이스에 대해 읽었습니다. 요소를 고유하게 식별해야한다는 것을 알고 있습니다. 하지만 네임 스페이스가있는쪽에 접두사가 있어야만하는 경우 네임 스페이스가 필요합니다. 네임 스페이스가있는 접두사가 항상 필요합니까? 그렇지 않은 경우 항상 접두사가있는 네임 스페이스가 있어야합니다. 그렇다면 왜? 예를 들어XML 네임 스페이스, 왜 접두사에 필요한가?

:

<root xmlns:h="http://www.w3.org/TR/html4/" xmlns:f="http://www.w3schools.com/furniture"> 

<h:table> 
    <h:tr> 
    <h:td>Apples</h:td> 
    <h:td>Bananas</h:td> 
</h:tr> 

<f:name>African Coffee Table</f:name> 
    <f:width>80</f:width> 
    <f:length>120</f:length> 
    </f:table> 
</root> 

고유하게 다른 요소 유형을 식별하지 F와 H 있습니까?

도움 주셔서 감사합니다. 네임 스페이스가 존재하는 이유를 이해하는 데 정말로 손해를보고 있습니다.

답변

1

왜?

다른 언어와 마찬가지로 네임 스페이스를 사용하면 전역 네임 스페이스를 혼란스럽게 할 수 있습니다. 동일한 네임 스페이스에있는 한, 동일한 이름을 가진 둘 이상의 요소 나 속성을 허용합니다.

요소의 네임 스페이스를 항상 한정해야합니까?

당신이 (예를 들어) 대부분의 요소를 포함하는 '지배적 인'네임 스페이스가있는 경우에, 당신은과 같이,이 지배적 네임 스페이스에 기본을 네임 스페이스를 변경할 수 있습니다 : 우리가 필요로하는

<z:root xmlns="http://www.w3.org/TR/html4/" xmlns:f="http://www.w3schools.com/furniture" xmlns:z=""> 
<table> 
    <tr> 
    <td>Apples</td> 
    <td>Bananas</td> 
</tr> 

<f:name>African Coffee Table</f:name> 
    <f:width>80</f:width> 
    <f:length>120</f:length> 
    </f:table> 
</z:root> 

주 원본 문서와 동일하게 유지하기 위해 루트를 전역 네임 스페이스로 다시 이동합니다.

+0

그러나 f 또는 h가 같은 이름의 요소를 두 개 이상 허용하지 않습니까? f와 h가 이미 요소를 구별하는 경우 이름을 정의하는 요점은 무엇입니까? –

+0

나는 당신을 이해하는지 모르겠습니다. 'f'와'h'는 네임 스페이스의 앨리어스 일뿐입니다. 그렇지 않으면 각 요소를 명시 적으로 한정해야합니다. '

'다루기 힘들 것입니다. – StuartLC

+0

바로 네임 스페이스 네임 스페이스와의 충돌을 피하기 위해 _ ** URI ** _에서 만든 완전히 고유 한 네임 스페이스가 있어야합니다. 네임 스페이스를 가리키는 접두사가 고유하지 않아 어쨌든 문제가 생길 수 있습니다. 첫 번째 장소에서 네임 스페이스를 가리키는 접두사가 충돌 할 수있는 경우 네임 스페이스를 URI로 지정해야만 네임 스페이스를 고유하게 만들어야한다는 w3 이론적 근거를 이해하려고합니다. 당신은 어쨌든 문제를 겪을 것입니다. –