Copyright © 2016 W3C® (MIT, ERCIM, Keio, Beihang). W3C liability, trademark and permissive document license rules apply.
이 명세는 웹 애플리케이션이 DOM 노드를 구문 분석하고 직렬화하는 데 사용할 수 있도록 HTML 및 범용 XML 파서에 프로그래밍 방식으로 접근하기 위한 다양한 API를 정의한다.
이 절은 이 문서가 공개된 시점에서의 상태를 설명한다. 다른 문서가 이 문서를 대체할 수 있다. 현재 W3C 공개 문서 목록과 이 기술 보고서의 최신 개정판은 W3C 기술 보고서 색인(http://www.w3.org/TR/)에서 확인할 수 있다.
이 명세는 DOM Parsing and Serialization 살아있는 명세의 원래 작업을 기반으로 하지만, 지원되는 기능, 규범적 요구 사항, 알고리즘 구체성 측면에서는 달라졌다. 적절한 경우, 살아있는 명세의 관련 수정 사항이 이 문서에 통합된다.
이 문서는 Web Platform Working
Group이 작업 초안으로 공개했다.
이 문서는 W3C 권고안이 되는 것을 목표로 한다.
이 문서에 대한 의견을 보내려면
www-dom@w3.org
(구독,
아카이브)로 보내고,
이메일 제목의 시작 부분에 DOM-Parsing을 포함해 달라.
모든 의견을 환영한다.
작업 초안으로 공개되었다고 해서 W3C 회원의 승인을 의미하지는 않는다. 이 문서는 초안 문서이며, 언제든 다른 문서로 업데이트, 대체 또는 폐기될 수 있다. 이 문서를 진행 중인 작업이 아닌 것으로 인용하는 것은 부적절하다.
이 문서는 2004년 2월 5일 W3C 특허 정책에 따라 운영되는 그룹이 작성했다. W3C는 해당 그룹의 산출물과 관련하여 이루어진 모든 특허 공개의 공개 목록을 유지한다. 해당 페이지에는 특허 공개를 위한 지침도 포함되어 있다. 해당 개인이 필수 청구항을 포함한다고 믿는 특허에 대해 실제 지식을 가진 개인은 W3C 특허 정책의 6절에 따라 그 정보를 공개해야 한다.
이 문서는 2015년 9월 1일 W3C 프로세스 문서의 적용을 받는다.
이 명세는 명세의 테스트 스위트가 완료되고 둘 이상의 독립 구현이 각 테스트를 통과하기 전에는 제안 권고안으로 진행하지 않는다. 단일 구현이 모든 테스트를 통과해야 하는 것은 아니다. 이 기준은 2014년 10월 24일보다 이르게 충족되지는 않을 것으로 예상한다. 그룹은 또한 구현 보고서를 작성할 것이다.
비규범적이라고 표시된 절뿐만 아니라, 이 명세의 모든 저작 지침, 도표, 예제, 및 참고 사항은 비규범적이다. 이 명세의 그 밖의 모든 것은 규범적이다.
알고리즘의 일부로 명령형으로 표현된 요구 사항 (예: "선행 공백 문자를 모두 제거한다" 또는 "false를 반환하고 이 단계를 종료한다")은 해당 알고리즘을 도입하는 데 사용된 핵심 단어("must", "should", "may" 등)의 의미로 해석해야 한다.
알고리즘 또는 특정 단계로 표현된 적합성 요구 사항은 최종 결과가 동등하기만 하면 어떤 방식으로든 구현할 수 있다. (특히 이 명세에 정의된 알고리즘은 따라가기 쉽게 의도된 것이며, 성능을 고려해 의도된 것은 아니다.)
사용자 에이전트는 예를 들어 서비스 거부 공격을 방지하거나, 메모리 부족을 막거나, 플랫폼별 제한을 우회하기 위해, 달리 제한되지 않은 입력에 구현별 제한을 부과할 수 있다.
메서드 또는 속성이 다른 메서드 또는 속성을 호출한다고 말하는 경우, 사용자 에이전트는 그 속성 또는 메서드에 대한 내부 API를 호출해야 하며, 예를 들어 작성자가 ECMAScript에서 사용자 지정 속성이나 함수로 속성 또는 메서드를 재정의하여 동작을 변경할 수 없도록 해야 한다.
달리 명시하지 않는 한, 문자열 비교는 대소문자를 구분하는 방식으로 수행된다.
알고리즘이 다른 알고리즘을 호출하는 경우, 후자에서 던져진 모든 예외는(명시적으로 잡히지 않는 한) 전자를 종료시키고, 그 예외가 그 호출자에게 전파되도록 해야 한다.
이 명세의 IDL 조각은 Web IDL 명세에 설명된 적합 IDL 조각에 요구되는 대로 해석해야 한다. [WEBIDL]
이 명세에 대한 벤더별 독점 확장은 강하게 권장되지 않는다. 작성자는 이러한 확장을 사용해서는 안 된다. 그렇게 하면 상호운용성이 저하되고 사용자 기반이 분열되어, 특정 사용자 에이전트의 사용자만 해당 콘텐츠에 접근할 수 있게 되기 때문이다.
벤더별 확장이 필요한 경우, 향후 이 명세의 버전과의 충돌을 방지하기 위해 구성원에는 벤더별 문자열을 접두사로 붙여야 한다. 확장은 확장의 사용이 이 명세에 정의된 기능과 모순되거나 그 기능을 부적합하게 만들지 않도록 정의해야 한다.
이 명세에 대한 벤더 중립적 확장이 필요한 경우, 이 명세를 그에 맞게 업데이트하거나, 이 명세의 요구 사항을 재정의하는 확장 명세를 작성할 수 있다. 어떤 사람이 자신의 활동에 이 명세를 적용할 때 그러한 확장 명세의 요구 사항을 인정하기로 결정하면, 그것은 이 명세의 적합성 요구 사항의 목적상 적용 가능한 명세가 된다.
컨텍스트 객체라는 용어는 논의 중인 메서드 또는 속성이 호출된 객체를 의미한다.
HTML 네임스페이스는
http://www.w3.org/1999/xhtml이다.
XML 네임스페이스는
http://www.w3.org/XML/1998/namespace이다.
XMLNS 네임스페이스는
http://www.w3.org/2000/xmlns/이다.
다음 단계는 조각 구문 분석 알고리즘을 구성하며, 그 인수는 markup 문자열과 context element이다.
context element의 노드 문서가 HTML 문서인 경우: algorithm을 HTML 조각 구문 분석 알고리즘으로 둔다.
context element의 노드 문서가 XML 문서인 경우: algorithm을 XML 조각 구문 분석 알고리즘으로 둔다.
DocumentFragment로
두며,
그
노드 문서는
context element의
노드 문서이다.
다음 단계는
조각 직렬화 알고리즘을 구성하며,
그 인수는
Node
node와 플래그 well-formed 요구이다.
이 문서에 정의된 XML 직렬화는 [HTML5]에 정의된 XML 조각 직렬화 알고리즘의 요구 사항을 따른다.
Node
node의 HTML 직렬화를 생성하려면, 사용자 에이전트는
node에 대해
HTML
조각 직렬화 알고리즘 [HTML5]을
실행하고 생성된 문자열을 반환해야 한다.
Node
node의 XML
직렬화를
플래그 require well-formed가 주어진 상태에서 생성하려면, 다음 단계를 실행한다.
null로 둔다.
컨텍스트 네임스페이스는
node가 부모와 다른 기본 네임스페이스 정의를 직렬화할 때 변경된다. 이
알고리즘은 시작 시 네임스페이스가 없다고 가정한다.
namespaceURI와 네임스페이스 prefix 쌍을 연결하기 위한 새 맵으로 둔다. 여기서
namespaceURI 값은 맵의 키이고, prefix 값은
맵의 키 값이다. 네임스페이스 접두사
맵은
하위 트리에 대해 이전에 나타난 namespaceURI와 그 가장 최근의 접두사 연결로 채워진다.
참고:
네임스페이스 접두사 맵은 주어진 namespaceURI에 대해
하나의 접두사 값만 연결한다. 직렬화 중 같은 namespaceURI에 매핑되는 다른 네임스페이스 접두사가
발견되면, 마지막으로 만난 것이 맵의 기존 키 값을 새 접두사 값으로 바꾸어 "이긴다".
xml"을 키 값으로 하여 초기화한다.
1인 정수로 둔다. 생성된 네임스페이스
접두사 인덱스는 node의 namespaceURI(또는 node의 속성 중 하나의 namespaceURI)를
직렬화하는 데 적절한 기존 네임스페이스 접두사를 사용할 수 없을 때 새 고유 접두사 값을 생성하는 데 사용된다.
접두사 생성 알고리즘을 보라.
InvalidStateError"인
DOMException을
던진다.
XML 직렬화는 다음과 같은 방식에서 HTML 직렬화와 다르다.
EmptyElemTag 생성식에 따른 구문)을 사용하여 직렬화된다.
그 밖의 경우, XML 직렬화를 생성하는 알고리즘은 HTML 파서와 호환되는 직렬화를 생성하도록 설계되어 있다. 예를 들어, 자식 노드를 포함하지 않는 HTML 네임스페이스의 요소는 자체 닫힘 태그 구문을 사용하지 않고 명시적인 시작 태그와 종료 태그로 직렬화된다 [XML10].
[DOM4]에 따르면,
Attr
객체는
Node를
상속하지 않으므로
XML
직렬화 알고리즘으로 직렬화할 수 없다.
Attr
객체를 직렬화하려고 시도하면 TypeError 예외가 발생한다 [WEBIDL].
node에 대해 컨텍스트 네임스페이스 namespace, 네임스페이스 접두사 맵 prefix map, 생성된 네임스페이스 접두사 인덱스 prefix index, 및 플래그 require well-formed가 주어진 상태에서 XML 직렬화 알고리즘을 실행하려면, 사용자 에이전트는 node의 인터페이스에 따라 적절한 단계를 실행해야 한다.
Element
다음 알고리즘을 실행한다.
true), 이 node의
localName
속성이 문자 ":"(U+003A COLON)를 포함하거나 XML Name 생성식
[XML10]과 일치하지 않으면,
예외를
던진다. 이 node의 직렬화는 well-formed 요소가 되지 않는다.
<"(U+003C LESS-THAN SIGN)로 둔다.
false로 둔다.
false로 둔다.
null로 둔다.
위 단계는 발견된 모든 네임스페이스 접두사
정의로 map을 업데이트하고, 발견된 접두사 정의를
element prefixes list에 추가하며, 선택적으로
duplicate prefix definition 값을 설정하고, 기본 네임스페이스
속성이 존재하면 그 속성이 정의한 로컬 기본 네임스페이스 값을 반환한다.
그렇지 않으면 null을 반환한다.
namespaceURI
속성 값으로 둔다.
null이 아니면,
ignore namespace definition attribute를 true로 설정한다.
xml:"와 node의
localName
값의 연결로 둔다.
localName
속성 값으로 둔다.
node의 접두사는 항상 삭제된다.
prefix
속성 값으로 둔다.
null로 둔다.
null이 아니면
(ns에 매핑되는 적절한 네임스페이스 접두사가 정의되어 있으면):
:"(U+003A COLON), 및 node의
localName의
연결로 둔다.
이 node 또는
node의 조상에는 node의
네임스페이스를 정의하는 네임스페이스 접두사 정의가 존재한다.
null이 아니면
(로컬로 정의된 기본 네임스페이스 선언 속성이 존재하면),
inherited ns가
ns의 값을 갖게 한다.
null이 아니고
local default namespace가
null이면:
:"(U+003A COLON), 및 node의
localName의
연결로 둔다.
" (U+0020 SPACE);
xmlns:";
="" (U+003D EQUALS SIGN, U+0022 QUOTATION MARK);
"" (U+0022 QUOTATION MARK).
null이거나,
local default
namespace가 null이 아니고 그 값이
ns와 같지 않으면:
true로 설정한다.
localName
속성 값으로 둔다.
" (U+0020 SPACE);
xmlns";
="" (U+003D EQUALS SIGN, U+0022 QUOTATION MARK);
"" (U+0022 QUOTATION MARK).
localName
값으로 두고,
inherited ns의 값을 ns로 두며, qualified name의 값을
markup에 추가한다.
localName이
다음
void 요소 중 하나와 일치하면:
"area",
"base",
"basefont",
"bgsound",
"br",
"col",
"embed",
"frame",
"hr",
"img",
"input",
"keygen",
"link",
"menuitem",
"meta",
"param",
"source",
"track",
"wbr";
그런 다음 다음을 나열된 순서대로 markup에 추가한다.
" (U+0020 SPACE);
/" (U+002F SOLIDUS).
true로 설정한다.
/"(U+002F SOLIDUS)를 markup에 추가하고
skip end tag 플래그를 true로 설정한다.
>"(U+003E GREATER-THAN SIGN)를 markup에 추가한다.
true이면,
markup의 값을 반환하고 나머지 단계를 건너뛴다.
node는 리프 노드이다.
localName이
문자열 "template"과 일치하면, 이는
template
요소이다.
template 요소의
template 콘텐츠
(
DocumentFragment)에
대해
컨텍스트 네임스페이스에는
inherited ns의 값을 제공하고,
네임스페이스
접두사 맵에는 map을 제공하며,
생성된 네임스페이스 접두사 인덱스에는
prefix index를 제공하고, require well-formed 플래그의 값을 제공하여
XML 직렬화 알고리즘을 실행한 결과를
markup에 추가한다. 이는
XHTML 문서 구문 분석
[HTML5]의 규칙이 주어졌을 때,
template 콘텐츠가
왕복할 수 있도록 한다.
</" (U+003C LESS-THAN SIGN, U+002F SOLIDUS);
>" (U+003E GREATER-THAN SIGN).
Document
require well-formed 플래그가 설정되어 있고(그 값이
true), 이 node에
documentElement가
없으면
(
documentElement
속성의 값이 null이면), 예외를
던진다. 이 node의 직렬화는 well-formed 문서가 되지 않는다.
그렇지 않으면, 다음 단계를 실행한다.
doctype
속성이 null이 아니면, require well-formed 플래그가 제공된
node의
doctype
속성의
DocumentType 직렬화 생성 단계를 실행하여
생성된 문자열을 serialized document에 추가한다.
Comment
require well-formed 플래그가 설정되어 있고(그 값이
true), node의
data가
XML Char 생성식 [XML10]과 일치하지 않는
문자를 포함하거나,
"--"(인접한 두 U+002D HYPHEN-MINUS 문자)를 포함하거나,
"-"(U+002D HYPHEN-MINUS) 문자로 끝나면,
예외를 던진다. 이
node의
data
직렬화는 well-formed가 되지 않는다.
"<!--", node의
data,
및
"-->"의 연결을 반환한다.
Text
DocumentFragment
DocumentType
ProcessingInstruction
true), node의
target이
":"(U+003A COLON) 문자를 포함하거나 문자열 "xml"과
ASCII 대소문자 구분 없는
일치이면, 예외를
던진다. 이 node의
target
직렬화는 well-formed가 되지 않는다.
true), node의
data가
XML Char 생성식 [XML10]과 일치하지
않는 문자를 포함하거나
문자열 "?>"(U+003F QUESTION MARK, U+003E GREATER-THAN SIGN)를 포함하면,
예외를 던진다. 이
node의
data
직렬화는 well-formed가 되지 않는다.
Node
node의 DocumentType 직렬화 생성을,
require well-formed 플래그가 주어진 상태에서 수행하려면,
사용자 에이전트는 다음 알고리즘의 결과를 반환해야 한다.
true이고,
node의
publicId
속성이 XML PubidChar 생성식
[XML10]과 일치하지 않는 문자를 포함하면,
예외를 던진다. 이 node의 직렬화는
well-formed 문서 타입 선언이 되지 않는다.
true이고
node의
systemId
속성이 XML Char 생성식
[XML10]과 일치하지 않는 문자를 포함하거나,
"""(U+0022 QUOTATION MARK)와 "'"
(U+0027 APOSTROPHE)를 모두 포함하면, 예외를
던진다. 이
node의 직렬화는 well-formed 문서 타입 선언이 되지 않는다.
<!DOCTYPE"을 markup에 추가한다.
"(U+0020 SPACE)를 markup에 추가한다.
name
속성 값을 markup에 추가한다.
HTML
문서에 속한 node의 경우,
그 값은 모두 소문자이다.
publicId가
빈 문자열이 아니면, 다음을 나열된 순서대로 markup에 추가한다.
" (U+0020 SPACE);
PUBLIC";
" (U+0020 SPACE);
"" (U+0022 QUOTATION MARK);
publicId
속성 값;
"" (U+0022 QUOTATION MARK).
systemId가
빈 문자열이 아니고 node의
publicId가
빈 문자열로 설정되어 있으면, 다음을 나열된 순서대로 markup에 추가한다.
" (U+0020 SPACE);
SYSTEM".
systemId가
빈 문자열이 아니면, 다음을 나열된 순서대로 markup에 추가한다.
" (U+0020 SPACE);
"" (U+0022 QUOTATION MARK);
systemId
속성 값;
"" (U+0022 QUOTATION MARK).
>"(U+003E GREATER-THAN SIGN)를 markup에 추가한다.
Element
element에 대해
네임스페이스 접두사 맵 map,
element prefixes list(초기에는 비어 있음), 및 duplicate prefix
definition 참조가 주어진 상태에서
네임스페이스 정보 기록을 수행하려면,
사용자 에이전트는 다음 단계를 실행해야 한다.
null로 둔다.
attributes
안의 각
속성
attr에 대해, element의
속성 목록에 지정된 순서대로:
다음 조건부 단계는 네임스페이스 접두사를
element prefixes list에 추가하고 map에 추가하거나 대체한다.
XMLNS
네임스페이스의 속성만
고려된다(예를 들어,
setAttribute("xmlns:pretend-prefix",
"pretend-namespace")를 통해 네임스페이스 선언처럼 보이게 만든 속성은 포함되지 않는다).
namespaceURI
값으로 둔다.
prefix
값으로 둔다.
null이면, attr는
기본 네임스페이스 선언이다. default namespace attr value를
attr의
value로
설정하고 이 단계 실행을 중지한 다음,
다음 속성을 방문하기 위해
Main으로 돌아간다.
null이 아니고
attr는 네임스페이스 접두사 정의이다. 다음 단계를 실행한다.
localName
값으로 둔다.
value
값으로 둔다.
네임스페이스 접두사 맵 map, 문자열 new namespace, 및 생성된 네임스페이스 접두사 인덱스 prefix index에 대한 참조가 주어진 상태에서 접두사를 생성하려면, 사용자 에이전트는 다음 단계를 실행해야 한다.
ns"와
prefix index의 현재 숫자 값의 연결로 둔다.
Element
element의
속성의 XML 직렬화는
네임스페이스 접두사
맵 map, 생성된 접두사 인덱스
prefix index 참조, 플래그 ignore namespace definition attribute,
duplicate prefix definition 값, 및 플래그 require well-formed와 함께
다음 알고리즘의 결과이다.
namespaceURI
및
localName
쌍의 튜플을 포함하며, 각 attr가 처리될 때 채워진다.
이 집합은 요소가 같은
namespaceURI와
localName을
가진 두 속성을 가질 수 없다는 well-formed 제약을 [선택적으로] 강제하는 데 사용된다.
이는 같은 요소 위의 서로 동일한 두 속성이 접두사 값만 다른 경우 발생할 수 있다.
attributes
안의 각
속성
attr에 대해, element의
속성 목록에 지정된 순서대로:
true), localname set가
attr의
namespaceURI
속성과
localName
속성으로 구성된 새 튜플의 값과 일치하는 값을 가진 튜플을 포함하면,
예외를
던진다. 이
attr의 직렬화는 well-formed 요소 직렬화를 생성하지 못한다.
namespaceURI
속성과
localName
속성으로 구성된 새 튜플을 만들고, 이를 localname set에 추가한다.
namespaceURI
값으로 둔다.
null로 둔다.
null이 아니면, 다음 하위 단계를 실행한다.
prefix가
null이고 ignore namespace definition
attribute 플래그가 true이거나,
attr의
prefix가
null이 아니고 attr의
localName이
duplicate prefix definition의 값과 일치하면, 이 단계 실행을 중지하고
다음 속성을 방문하기 위해 Main으로 이동한다.
" (U+0020 SPACE);
xmlns:";
="" (U+003D EQUALS SIGN, U+0022 QUOTATION MARK);
"" (U+0022 QUOTATION MARK).
"(U+0020 SPACE)를 result에 추가한다.
null이 아니면,
candidate prefix와 ":"(U+003A COLON)의 연결을
result에 추가한다.
true), 이 attr의
localName
속성이 문자 ":"(U+003A COLON)를 포함하거나 XML
Name 생성식 [XML10]과
일치하지 않거나, "xmlns"와 같고 attribute
namespace가 null이면,
예외를
던진다. 이 attr의 직렬화는 well-formed 속성이 되지 않는다.
localName
값;
="" (U+003D EQUALS SIGN, U+0022 QUOTATION MARK);
value
속성과 require
well-formed 플래그를 입력으로 주어
속성 값 직렬화를 수행한 결과;
"" (U+0022 QUOTATION MARK).
attribute value와 require well-formed 플래그가 주어진 상태에서 속성 값 직렬화를 하려면, 사용자 에이전트는 다음 단계를 실행해야 한다.
true), attribute value가 XML Char 생성식
[XML10]과 일치하지 않는 문자를 포함하면,
예외를 던진다. 이
attribute value의 직렬화는 well-formed 요소 직렬화를 생성하지 못한다.
null이면, 빈 문자열을 반환한다.
""를 """로
&"를 "&"로
<"를 "<"로
>"를 ">"로
이는 브라우저에 존재하는 동작과 일치하며,
">" 문자도 대체함으로써 XML 명세의 AttValue
생성식 [XML10]의 문법 요구 사항을
넘어서는 동작이다.
DOMParser 인터페이스enum SupportedType {
"text/html",
"text/xml",
"application/xml",
"application/xhtml+xml",
"image/svg+xml"
};
DOMParser()
생성자는
새 DOMParser 객체를 반환해야 한다.
[Constructor]
interface DOMParser {
[NewObject]
Document parseFromString (DOMString str, SupportedType type);
};
parseFromString
parseFromString(str, type)
메서드는 type에 따라 다음 단계를 실행해야 한다.
text/html"
str을
HTML 파서로
구문 분석하고,
새로 생성된
문서를 반환한다.
스크립팅 플래그는 "disabled"로 설정되어야 한다.
meta
요소는 사용되는 인코딩을 결정할 때
고려되지 않는다. Unicode 스트림이
파서에 전달되기 때문이다.
text/xml"
application/xml"
application/xhtml+xml"
image/svg+xml"
XML 파서로
구문 분석한다.
XMLDocument
인터페이스가 아니라
Document
인터페이스를 사용한다.
root를 새
Element로
두고,
그
로컬 이름은
"parsererror"로 설정하며, 그
네임스페이스는
"http://www.mozilla.org/newlayout/xml/parsererror.xml"로
설정한다.
이 시점에서 사용자 에이전트는 예를 들어 오류의 성격을 설명하기 위해 노드를 root에 추가할 수 있다.
어떤 경우든, 반환되는
문서의
콘텐츠 타입은
type 인수여야 한다. 또한,
문서는
URL 값이
활성 문서의
URL과 같아야 하며,
location 값은 null이어야 한다.
| 매개변수 | 타입 | Null 가능 | 선택 사항 | 설명 |
|---|---|---|---|---|
| str | DOMString |
✘ | ✘ | |
| type | SupportedType |
✘ | ✘ |
DocumentXMLSerializer 인터페이스
XMLSerializer()
생성자는 새 XMLSerializer 객체를 반환해야 한다.
[Constructor]
interface XMLSerializer {
DOMString serializeToString (Node root);
};
serializeToStringserializeToString(root)
메서드는 root의 XML 직렬화를 생성해야 하며,
require well-formed 매개변수에는
false 값을 전달하고,
그 결과를 반환해야 한다.| 매개변수 | 타입 | Null 가능 | 선택 사항 | 설명 |
|---|---|---|---|---|
| root | Node |
✘ | ✘ |
DOMStringElement
인터페이스에 대한 확장partial interface Element {
[CEReactions, TreatNullAs=EmptyString]
attribute DOMString innerHTML;
[CEReactions, TreatNullAs=EmptyString]
attribute DOMString outerHTML;
[CEReactions]
void insertAdjacentHTML (DOMString position, DOMString text);
};
innerHTML, 타입 DOMString
innerHTML IDL
속성은
Element의
콘텐츠 마크업을 나타낸다.
innerHTML [ =
value ]
요소의 콘텐츠를 나타내는 HTML 또는 XML 조각을 반환한다.
설정할 수 있으며, 요소의 콘텐츠를 주어진 문자열에서 구문 분석된 노드로 대체한다.
XML 문서의 경우,
Element를
XML로 직렬화할 수 없으면
이름이
"InvalidStateError"인
DOMException을
던지고, 주어진 문자열이 well-formed가 아니면
이름이
"SyntaxError"인
DOMException을
던진다.
가져올 때는
컨텍스트 객체에 대해
require well-formed 플래그에 true를 제공하여
조각 직렬화 알고리즘을
호출한 결과를 반환한다(문자열을 반환하는 대신 예외를 던질 수도 있다).
설정할 때는 다음 단계를 실행해야 한다.
outerHTML, 타입 DOMString
outerHTML IDL
속성은
Element와
그 콘텐츠의 마크업을 나타낸다.
outerHTML [ =
value ]
요소와 그 콘텐츠를 나타내는 HTML 또는 XML 조각을 반환한다.
설정할 수 있으며, 요소를 주어진 문자열에서 구문 분석된 노드로 대체한다.
XML 문서의 경우,
요소를 XML로 직렬화할 수 없으면 이름이
"InvalidStateError"인
DOMException을
던지고, 주어진 문자열이 well-formed가 아니면 이름이
"SyntaxError"인
DOMException을
던진다.
요소의 부모가
Document
노드이면,
이름이
"NoModificationAllowedError"인
DOMException을
던진다.
가져올 때는
컨텍스트 객체만을 자식으로 가진
가상의 노드에 대해
require well-formed
플래그에 true를 제공하여
조각 직렬화 알고리즘을
호출한 결과를 반환한다(문자열을 반환하는 대신 예외를 던질 수도 있다).
설정할 때는 다음 단계를 실행해야 한다.
Document이면,
이름이
"NoModificationAllowedError"인
DOMException
예외를 던진다.
DocumentFragment이면,
parent를 다음을 가진 새
Element로
둔다.
insertAdjacentHTML
insertAdjacentHTML(position,
text)
주어진 문자열 text를 HTML 또는 XML로 구문 분석하고, 그 결과 노드를 position 인수가 지정한 위치의 트리에 다음과 같이 삽입한다.
인수가 잘못된 값을 가지면(예:
XML 문서의 경우, 주어진 문자열이
well-formed가 아니면),
이름이
"SyntaxError"인
DOMException을
던진다.
주어진 위치가 가능하지 않으면(예:
Document의
루트 요소 뒤에 요소를 삽입하는 경우),
이름이
"NoModificationAllowedError"인
DOMException을
던진다.
insertAdjacentHTML(position, text)
메서드는 다음 단계를 실행해야 한다.
context가 null이거나
문서이면,
이름이
"NoModificationAllowedError"인
DOMException을
던진다.
이름이
"SyntaxError"인
DOMException을
던진다.
Element가
아니거나, 다음이 모두 참이면:
html"이며,
context를 다음을 가진 새
Element로
둔다.
| 매개변수 | 타입 | Null 가능 | 선택 사항 | 설명 |
|---|---|---|---|---|
| position | DOMString |
✘ | ✘ | |
| text | DOMString |
✘ | ✘ |
voidRange
인터페이스에 대한 확장partial interface Range {
[CEReactions, NewObject]
DocumentFragment createContextualFragment (DOMString fragment);
};
createContextualFragment
createContextualFragment(markupString)
DocumentFragment를
반환한다.
createContextualFragment(fragment)
메서드는 다음 단계를 실행해야 한다.
element를 node의 인터페이스에 따라 다음과 같이 둔다.
Document
DocumentFragment
Element
Text
Comment
DocumentType
ProcessingInstruction
html"이며,
element를 다음을 가진 새 요소로 둔다.
| 매개변수 | 타입 | Null 가능 | 선택 사항 | 설명 |
|---|---|---|---|---|
| fragment | DOMString |
✘ | ✘ |
DocumentFragment다음은 이 명세의 마지막 공개 이후 변경 사항에 대한 정보성 요약이다. 이 명세의 편집자 초안의 전체 개정 이력은 여기에서 확인할 수 있다.
이 명세의 초기 초안을 유지하고 살아있는 명세에서 지속적으로 개선해 준 Ms2ger [Mozilla]에게 감사한다.
Victor Costan, Aryeh Gregor, Anne van Kesteren, Arkadiusz Michalski, Simon Pieters, Henri Sivonen, Josh Soref 및 Boris Zbarsky에게, 유용한 의견에 대해 감사한다.
[HTML5]에서
innerHTML 및
outerHTML 속성과
insertAdjacentHTML() 메서드를 정의하고
유용한 의견을 준 Ian Hickson에게 특별히 감사한다.