XHTML 확장 인 XML 템플릿의 유효성을 검사하려고합니다. 이제 ID 속성에 {
및 |
과 같은 특수 문자가 있습니다. XHTML DTD를 확장하여 ID 속성에 허용 된 문자로 제한을 덮어 쓸 수 있습니까? 아니면 XML 사양에 정의 된 문자입니까?ID 속성에서 특수 문자를 사용하도록 XHTML DTD 확장
답변
'{'및 '|'문자는 사용할 수 없습니다. XML specification에서이
Values of type ID must match the Name production. A name must not appear more than once in an XML document as a value of this type; i.e., ID values must uniquely identify the elements which bear them.
이름 생산 here 말한다 때문에 직접 ID 속성.
불행히도 왼쪽 중괄호와 파이프가 허용되지 않습니다 당신은 문법 규칙을 확장하면 당신은 이름에 사용할 수있는 유일한 문자가이 작품에 의해 제공되는 것을 알 수있다. 해당 문자의 코드 포인트는 각각 # 7B 및 # 7C입니다. 허용 된 문자 범위가 아닙니다.[4] NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]
[4a] NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]
TL : DR : ID 속성의 유효한 문자는 XML 사양에서 소유하며 두 문자는 유효하지 않습니다. 여기
칙은 몇 가지 예입니다. 다음 문서는 W3C 유효성 검사 사이트에서 XHTML에 대한 유효성 검사를 통과 :
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US">
<head>
<title>A title</title>
</head>
<body id="anid">
</body>
</html>
하지만 다음
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US">
<head>
<title>A title</title>
</head>
<body id="ani{d">
</body>
</html>
우리는 오류받지 않습니다 : 이제 Line 8, Column 16: character "{" is not allowed in the value of attribute "id"
을 오히려 흥미로운 경우 그 당신은 진짜로 ID 이름에 왼쪽 둥근 괄호를 원한다면 을 시도하십시오 :
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US">
<head>
<title>A title</title>
</head>
<body id="ani{d">
</body>
</html>
하지만 과 같은 오류가 발생합니다. 이것을 시도해 볼 수도 있습니다. 유효성 검사기는 앰퍼샌드 해시 x 7 b 세미콜론으로 줄을 표시하지만 거기에 왼쪽 괄호가 있다고 생각합니다.
결론은 간단히 은에 XML 사양에서 허용하는 문자 이외의 문자를 사용할 수 없다는 것입니다.
- 1. id 속성에서 마지막 문자 제거
- 2. 특수 문자를 삭제하려면 어떻게해야합니까?
- 3. 특수 문자를 표시하는 방법
- 4. 어떻게 특수 문자를 탈출?
- 5. 특수 문자를 이스케이프 처리합니다.
- 6. DTD 정의 오류
- 7. RFDa 및 XHTML 1.0과 함께 DTD 전환 지원
- 8. 파일에서 특수 문자를 읽으려면 어떻게해야합니까?
- 9. 특수 문자를 DB2 데이터베이스에 삽입하십시오.
- 10. SQL Server는 특수 문자를 허용합니까?
- 11. URL에 "&"특수 문자를 인코딩하는 방법 ..?
- 12. 자바에서 문자열의 특수 문자를 바꿉니다
- 13. J2ME에서 특수 문자를 표시하는 방법
- 14. PHP에서 특수 문자를 지정하는 방법
- 15. PHP : 특수 문자를 사용하여 분해
- 16. 특수 문자를 디코딩하지 않고 HttpUtility.ParseQueryString
- 17. 특수 문자를 포함한 Ajax 응답
- 18. 특수 문자를 제거하는 MySQL 명령
- 19. Sas9 특수 문자를 밑줄로 바꾸기
- 20. Outlook 속성에서 MAPI 스키마 속성 ID
- 21. id와 title의 특수 문자를 제거하는 방법은 무엇입니까?
- 22. 확장 문자를 int로 변환
- 23. XHTML/CSS에서 추가 문자를 표시하는 IE가 발생했습니다.
- 24. 레일이 특수 문자를 HTML 엔티티로 변환하지 못하도록합니다.
- 25. 레일즈가 과도기가 아닌 xhtml strict를 사용하도록 어떻게 말할 수 있습니까?
- 26. WCF DataContract를 GUI 레이어에서 사용하도록 확장 하시겠습니까?
- 27. ajax를 통해 확장 문자를 보내려고합니다.
- 28. ASP.NET의 HyperLink.NavigateUrl에서 특수 문자를 다루는 방법?
- 29. 데이터베이스에 특수 문자를 삽입하는 방법은 무엇입니까?
- 30. jquery에서 특수 문자를 어떻게 이스케이프 처리합니까?
고마워요! 그래서 속성의 이름을 변경해야합니다. – stofl
예, 이름을 변경해야 할 것 같습니다. 내 대답에 몇 가지 샘플 유효성 검사를 추가하여 문자 엔티티를 사용하여 유효성 검사기를 무용 할 수 없음을 보여줍니다. 사양은 사양입니다. :) –
대단히 고마워요. – stofl