2016-06-07 5 views
0

hxtml 파일의 유효성을 검사하려고하는데 캔버스 요소에 문제가 있습니다.캔버스 유효성 검사 XHTML

w3c errors

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 

<canvas id="canvas" width="500" height="250" style="background-color:#303030;" > </canvas> 

는 사람이 그것을 어떻게 극복하기 위해 어떤 생각을 가지고 있습니까?

+1

canvas는 xhtml1의 일부가 아닙니다. html5를 사용하려면 html5 doctype을 사용하십시오. – Kaiido

답변

1

의견에서 말했듯이, HTML5 용 doctype (<!DOCTYPE html>)을 사용하는 것은 정당한 선택입니다.

그러나 어떤 이유로 든 XHTML 1에 문제가있을 수 있습니다. 그러한 이유 중 하나는 XHTML 1이 실제 DTD를 가지고 있기 때문에 &nbsp;&thorn;과 같은 엔티티 참조 사용을 지원한다는 것입니다. (XHTML5는 그런 고급 스러움을 가지고 있지 않다.)

그렇다면 브라우저가 이미 canvas과 같은 최신 요소를 지원한다는 것을 눈치 챘을 것이다. 그렇기 때문에 브라우저가 작동하도록하려면 아무 것도하지 않아도된다. 유효성 검사기를 만족시키는 것만하면됩니다!

트릭이 있습니다. doctype 선언에 DTD의 일부인 것처럼 최신 요소를 추가하기 만하면됩니다. 이 훨씬 조금 생각하면

그런데
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" 
    [ 
    <!ELEMENT canvas EMPTY> 
    <!ATTLIST canvas 
    id   ID    #IMPLIED 
    class  CDATA   #IMPLIED 
    style  CDATA   #IMPLIED 
    title  CDATA   #IMPLIED 
    lang  CDATA   #IMPLIED 
    xml:lang CDATA   #IMPLIED 
    dir   (ltr|rtl)  #IMPLIED 
    onclick  CDATA   #IMPLIED 
    ondblclick CDATA   #IMPLIED 
    onmousedown CDATA   #IMPLIED 
    onmouseup CDATA   #IMPLIED 
    onmouseover CDATA   #IMPLIED 
    onmousemove CDATA   #IMPLIED 
    onmouseout CDATA   #IMPLIED 
    onkeypress CDATA   #IMPLIED 
    onkeydown CDATA   #IMPLIED 
    onkeyup  CDATA   #IMPLIED 
    height  CDATA   #IMPLIED 
    width  CDATA   #IMPLIED 
    > 
    <!ENTITY % InlSpecial.class 
    " | audio | canvas | embed | iframe | img | math | object | svg | video"> 
    ] 
> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-us"> 
<head> 
    <title>Element test</title> 
</head> 
<body> 
    <div> 
    <canvas id="canvas" width="500" height="250" style="background-color:#303030;"></canvas> 
    </div> 
</body> 
</html> 

, 당신은 당신이 실제로 사용하고있는 것을 제외하고는 ATTLIST에서 모든 속성을 제거 할 수 있습니다 만, 유효성 검사기를 충족하기 위해이 작업을 수행 할 필요가 있음을 기억 (귀하의 예에서는 id, width, heightstyle).

+0

은 doctype의 확장자를 sepearate 파일로 이동하는 방법입니까? – Dmitry

+0

@ 드미트리 내가 아는 한은 아닙니다. 물론 기존 DTD를 다운로드하여 새로운 요소를 추가 한 다음 사용할 수는 있지만 더 이상 공식적으로 XHTML 1이 아닙니다! 그래서 나는 이것이 가능한 모든 유일한 방법 인 인라인으로하는 것이 두렵다. –

관련 문제