[xml] ‘xmlns’및 ‘version’과 같은 SVG 매개 변수가 필요합니까?

인터넷에서 볼 수있는 svg 예제의 약 절반에서 코드는 간단한 단순 <svg></svg>태그로 싸여 있습니다.

다른 반쪽에서 svg 태그에는 다음과 같은 복잡한 속성이 많이 있습니다.

<svg 
  xmlns="http://www.w3.org/2000/svg" 
  version="1.1" 
  xmlns:xlink="http://www.w3.org/1999/xlink"> 

내 질문은 : 간단한 svg 태그를 사용해도 괜찮습니까? 나는 복잡한 것들을 가지고 놀았고, 그것들을 포함시키지 않으면 모든 것이 잘 끝납니다.



답변

모든 사용자 에이전트 (브라우저)는 버전 속성을 무시하므로 언제든지 삭제할 수 있습니다.

SVG 인라인을 HTML 페이지에 임베드하고 해당 페이지를 그대로 제공 text/html하면 xmlns 속성이 필요하지 않습니다 . HTML 문서에 SVG 인라인을 포함시키는 것은 HTML5의 일부로 등장한 상당히 최근의 혁신입니다.

그러나 페이지를 image / svg + xml 또는 application / xhtml + xml 또는 사용자 에이전트가 XML 파서를 사용하게하는 다른 MIME 유형으로 제공하는 경우 xmlns 속성 필요합니다 . 이것은 최근까지만 할 수있는 유일한 방법이므로 이와 같은 많은 콘텐츠가 제공됩니다.


답변

xmlns="http://www.w3.org/2000/svg"속성은 다음과 같습니다

  • 필요 에 대한 이미지 / SVG + XML의 파일입니다. 1
  • 인라인 옵션 입니다 <svg>. 2

xmlns:xlink="http://www.w3.org/1999/xlink"속성은 다음과 같습니다

  • 필요 에 대한 이미지 / SVG + XML을 가진 파일 인 XLink : 속성. 1
  • 옵션 에 대한 인라인 <svg> 으로 되는 XLink : 속성. 2

version="1.1"속성은 다음과 같습니다

  • 권장 사항 을 준수하는 이미지 / SVG + XML의 파일을 표준.
  • 모든 사용자 에이전트에 의해 무시 됩니다. 4
  • SVG 2에서 제거 되었습니다. 5

1 국제화 된 자원 식별자 (RFC3987)
2 HTML5 이후
3 XML (Extensible Markup Language) 1.0
4 추가 메이저 버전이 출시 될 때까지.
5 SVG 2, W3C 후보 추천, 2018 년 8 월 7 일


답변

두 답변에 모두 추가하고 싶지만 포인트가 없으며 새로운 답변을 추가하고 있습니다. Chrome (버전 63.0.3239.132 (공식 빌드) (64 비트 Windows))에 대한 최근 테스트에서 다음을 발견했습니다.

  1. 텍스트 편집기 나 javascript 및 elm.innerHTML을 통해 HTML 파일에 직접 입력 된 인라인 SVG의 경우 다른 두 가지 답변에서 설명한대로 xmlns 속성이 필요하지 않습니다.
  2. 그러나 자바 스크립트와 AJAX를 통해로드되는 인라인 SVG에는 두 가지 옵션이 있습니다.
    • xhr.responseText및을 사용하십시오 elm.innerHTML. xmlns가 필요하지 않습니다.
    • 사용 xhr.responseXML.documentElementelm.appendChild()elm.insertBefore(). 인라인 SVG를 생성하는이 방법은에서와 같이 기본 SVG 네임 스페이스를 선언하지 않고 반 베이크 결과를 생성합니다 xmlns="http://www.w3.org/2000/svg". <svg>는 HTML로로드되지만 getElementById()<svg> 요소에서 인식되지 않는 등의 문서 수준 함수 입니다. HTML 외부에서 XMLHttpRequest XML 파서를 사용하기 때문이라고 가정합니다.

답변

MDN WebDoc 은 SVG 버전 속성에 대해

SVG 2부터 사용되지 않음
이 기능은 더 이상 권장되지 않습니다. 일부 브라우저는 여전히이를 지원할 수 있지만 관련 웹 표준에서 이미 제거되었거나 삭제 중이거나 호환성 목적으로 만 유지 될 수 있습니다. 사용하지 말고 가능한 경우 기존 코드를 업데이트하십시오. 결정을 안내하려면이 페이지 하단의 호환성 표를 참조하십시오. 이 기능은 언제든지 작동하지 않을 수 있습니다.

version 속성은 SVG 문서가 준수하는 사양을 나타내는 데 사용됩니다. 루트 요소에서만 허용됩니다. 이는 순전히 자문이며 렌더링 또는 처리에 영향을 미치지 않습니다.

추신 : SVG 2는 아직 표준이 아닙니다.


답변