2009-12-04 1 views
1

를 배우는 동안, 내 스레드에서 하나 개의 응답 내가 XHTML 네임 스페이스를 사용할 필요가 말했다 : 나는 그것을 사용하고 있지 않다xml.writer - XHTML 네임 스페이스를 사용해야하는 이유는 무엇입니까? 나는 C#에서 XML 작가와의 XHTML 문서를 작성하는 방법에 대해

const string XHTMLNS = "http://www.w3.org/1999/xhtml"; 
    writer.WriteStartElement("html", XHTMLNS); 
    writer.WriteStartElement("head", XHTMLNS); 

나는 "그냥이 (HTML ") 잘 작동합니다. 나는이 문서 타입을 사용하고 있습니다 : 단지 WriteStartElement ("HTML")를 사용하지 않는 이유

writer.WriteDocType("html","-//W3C//DTD XHTML 1.0 Transitional//EN","http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd",null); 

그래서, 내가 이해하지, 그것을 작동합니다. 또한 WriteStartElement ("html", XHTMLNS)를 사용하면 어떤 이점이 있습니까? 감사!

답변

1

네임 스페이스 버전을 사용하지 않으면 유효한 XHTML이 아닌 XML 스트림이 생성됩니다.

유효한 XHTML을받을 것으로 예상되는 해당 스트림의 소비자에게 출력이 보내지는 경우에만 문제가됩니다. 이는 "application/xhtml + xml"이라는 컨텐트 유형을 통해 XHTML을 기대한다고 말한 브라우저 또는 다른 사용자 에이전트 일 수도 있고 다른 유형의 소비자 일 수도 있습니다. 예를 들어, 귀하와 내가 일부 데이터를 공유하는 데 동의하고 XHTML로 보내 주겠다고 결정한 경우, 합당한 XHTML을 보내고 네임 스페이스 형식을 사용하지 않으면 합리적으로 기대할 수 있습니다 그러면 계약을 지키지 못할 것입니다.

다른 네임 스페이스의 요소를 모두 같은 XML 스트림에서 함께 섞을 수 있다고 생각하면 더욱 중요해진다. 그래서 아마도 XHTML은 다른 네임 스페이스의 많은 요소를 포함하여 더 큰 XML 문서의 하나 이상의 섹션만을 구성 할 수 있습니다. 그런 다음 문서를 제대로 처리하려면 소비자가 XHTML 섹션을 올바르게 인식 할 수 있어야하며 네임 스페이스를 사용하는 것이이를 수행하는 방법입니다.

기본적으로 SOHT의 XHTML 답변에서 생성 된 XHTML은 "text/html"콘텐츠 유형의 브라우저로 전송되므로 브라우저는 유효한 XHTML 또는 잘 구성된 XML을 기대하지 않습니다. , HTML 대신. HTML은 XML 네임 스페이스를 사용하지 않으므로 생성 된 출력의 유일한 소비자 인 경우 "Write"메서드의 네임 스페이스 버전 사용에 가치가 없습니다.

관련 문제