SVG 문서는 사용자 정의 데이터 속성을 지원합니까?


87

HTML5에서 요소 이름이 시작 XML 속성에 저장된 임의의 메타 데이터를 가질 수 data-등을 <p data-myid="123456">. 이 부분도 SVG 사양의 일부입니까?

실제로이 기술은 여러 곳에서 SVG 문서에 대해 잘 작동합니다. 그러나 공식 SVG 사양의 일부인지 여부를 알고 싶습니다. 형식이 충분히 어려서 특히 모바일에서 브라우저간에 여전히 많은 비 호환성이 있기 때문입니다. 따라서 코드를 작성하기 전에 미래의 브라우저가이를 지원하기 위해 수렴 할 것으로 예상 할 수 있는지 알고 싶습니다.

나는 워킹 그룹 메일 링리스트에서 "[그들이] 지원할 것으로 예상한다"는 메시지 를 발견 했습니다. 이것이 공식화 되었습니까?

답변:


121

다른 답변은 기술적으로 정확하지만 SVG가 .NET Framework에 대한 대체 메커니즘을 제공한다는 사실을 생략합니다 data-*. SVG 는 기존 속성과 충돌하지 않는 한 모든 속성 및 태그 를 포함 할 수 있습니다 (즉, 네임 스페이스를 사용해야 함).

이 (동등한) 메커니즘을 사용하려면 :

  • 사용하는 mydata:id대신 data-myid이 같은 :<p mydata:id="123456">
  • 다음과 같이 SVG 여는 태그에 네임 스페이스를 정의해야합니다. <svg xmlns:mydata="http://www.myexample.com/whatever">

편집 : SVG2 , 현재 W3C 후보 권장 사항 (2018 년 10 월 4 일)은 직접 지원 data-합니다 (네임 스페이스없이 HTML과 동일). 하지만 지원이 널리 퍼지기까지는 시간이 좀 걸릴 것입니다. 이것을 지적 해 주신 @cvrebert에게 감사드립니다 .


7
방정식의 세 번째 부분 : el.getAttribute('mydata:id')SVG 요소에 첨부 한 데이터를 가져옵니다. (참고 : D3를 사용하는 경우, 네임 스페이스는 기본적으로 제거하고 당신은거야됩니다 el.getAttribute('id').)
ericsoco

2
이것은 받아 들여진 대답이어야합니다. SVG는 다른 네임 스페이스의 태그를 사용할 수있는 XML의 확장입니다.
Melle

1
네임 스페이스가 사용자 지정되어야하는 이유는 무엇입니까? 문서에서 HTML5 네임 스페이스를 선언하는 것만으로 data-*는 SVG 에서 사용하기 에 충분하지 않은 이유는 무엇 입니까?
Fabien Snauwaert 2017

1
참고로 비공개 네임 스페이스 (예 :)를 사용하든 <svg xmlns="http://www.w3.org/2000/svg" xmlns:mydata="http://www.myexample.com/whatever"><text x="10" y="20" mydata:id="something">SVG</text></svg>xhtml 네임 스페이스를 사용하든 validator.w3.org/check(SVG 1.1 사용)에서 유효성을 검사 하지 않지만 둘 다 브라우저에서 작동합니다. 그런 다음 getAttribute또는 둘 중 하나를 사용 getAttributeNS하여 데이터를 가져올 수 있습니다.
파비앙 Snauwaert


19

9

더 일반적인 메커니즘이 있습니다.

svg는 desc다른 네임 스페이스의 임의 xml을 포함 할 수있는 요소를 지원 합니다. 이 요소 또는 하위 노드의 인스턴스를 종속 ID 또는 참조 속성으로 소유 한 네임 스페이스에서 연결합니다.

이것은 스펙 (5.4)의 관련 부분입니다 .


1
포인터 주셔서 감사합니다. SVG가 공식적으로 data-속성을 지원하지 않는다고 추론해야합니까 ?
Leopd 2013 년

2
아닌가요 desc접근성 사케에 대한 의미?
matanster 2014

@matt 나는 적어도 stabndard를 기반으로 그렇게 생각하지 않습니다.
collapsar

1
@matt 반드시 그런 것은 아닙니다. Afaik 표준은 렌더링과 관계없이 주석의 목적만을 언급합니다. 이것은 목적에 대한 요소의 적합성과 모순되지 않습니다. 특히 속성 및 desc 요소를 액세스 가능한 레이블로 사용하는 방법에 대해 설명 하는 블로그 게시물 이 있습니다 aria-labelledby. MDN 은 유사한 사용을 권장합니다. 수많은 Google 결과를 감안할 때 액세스 가능한 svg에 대한 모범 사례는 그 자체로 질문의 가치가있을 수 있습니다.
collapsar

1
@RockyRoad : 그렇지 않습니다-SVG 사양은 이러한 속성을 명시 적으로 허용합니다 (예를 들어 그렇지 않은 HTML / XHTML과 반대). 또한 desc임의의 데이터에 대해 추출 요소를 (오용 ) 사용할 수 있지만 링크에서 이것이 desc요소 의 의도 된 목적이 아니라는 것이 (IMHO) 매우 분명합니다 . 해서는 안된다는 말이 아니라 더 좋은 방법이있을뿐입니다.
johndodo jul.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.