XML에서 '독립형'지시문의 의미는 무엇입니까?
standalone
XML 문서에서 ' '지시문은 무엇을 의미합니까?
standalone
선언은 어떤 마크 업 선언을 무시하는 파서를 이야기하는 방법이다 DTD를 . 그 후 DTD는 유효성 검사에만 사용됩니다.
예를 들어 겸손한 <img>
태그를 고려하십시오 . 당신이 보면 XHTML 1.0 DTD , 당신은 그 파서를 알려주는 마크 업 선언을 참조 <img>
태그 EMPTY하고 가지고 있어야 src
하고 alt
속성을. 브라우저가 XHTML 1.0 문서를 통과하고 <img>
태그를 찾으면 DTD가 필요 src
하고 alt
속성이 있고 존재하지 않는 경우 추가해야합니다. 또한 <img>
비어 있어야하므로 태그를 자동으로 닫습니다 . 이것이 "마크 업 선언이 문서의 내용에 영향을 줄 수 있습니다"라는 XML 사양의 의미입니다. 그런 다음 standalone
선언을 사용하여 파서에게 이러한 규칙을 무시하도록 지시 할 수 있습니다 .
파서가 실제로이 작업을 수행하는지 여부는 또 다른 질문이지만 브라우저와 같은 표준 호환 유효성 검사 파서는 있어야합니다.
DTD를 지정하지 않으면 독립형 선언은 "의미가 없으므로"DTD도 지정하지 않으면 사용할 이유가 없습니다.
- 독립형 지시문은 XML 선언의 선택적 속성입니다.
- 유효한 값은
yes
and입니다no
. 여기서no
기본값입니다. - 이 속성은 DTD 가 사용될 때만 관련 이 있습니다. DTD 대신 스키마 를 사용하는 경우이 속성은 관련이 없습니다 .
standalone="yes"
XML 프로세서는 유효성 검사를 위해서만 DTD를 사용해야합니다. 이 경우 다음 용도로는 사용 되지 않습니다 .- 속성의 기본값
- 엔터티 선언
- 표준화
- 참고
standalone="yes"
문서가 외부 DTD를 사용하는 경우 타당성의 제약을 추가 할 수 있습니다. 문서가 같은 속성의 기본 값으로 XML의 수정을 요구 것들을 포함하고 할 때standalone="yes"
사용 하고 문서가 잘못되었습니다 . standalone="yes"
문서 처리 성능을 최적화하는 데 도움이 될 수 있습니다.
출처 : 독립형 의사 속성은 DTD를 사용하는 경우에만 관련이 있습니다.
standalone
현재 XML 문서가 외부 마크 업 선언에 의존하는지 여부를 설명합니다.
W3C의 목적은 "XML (Extensible Markup Language) 1.0 (제 5 판)"에 설명되어 있습니다.
마크 업 선언은 XML 프로세서에서 응용 프로그램으로 전달 될 때 문서의 내용에 영향을 줄 수 있습니다. 예는 속성 기본값 및 엔티티 선언입니다. XML 선언의 구성 요소로 나타날 수있는 독립형 문서 선언은 문서 엔티티 외부 또는 매개 변수 엔티티에 나타나는 선언이 있는지 여부를 표시합니다. [정의 : 외부 마크 업 선언은 외부 서브 세트 또는 매개 변수 엔티티에서 발생하는 마크 업 선언으로 정의됩니다 (외부 또는 내부, 검증되지 않은 프로세서는 읽을 필요가 없기 때문에 후자가 포함됨).
http://www.w3.org/TR/xml/#sec-rmd
이 standalone=yes
선언 의 목적은 문서 내부의 정보를 내부 DTD에만 기반하여 충실하게 검색 할 수 있도록하는 것입니다. 즉, 문서는 외부 참조없이 "독립"가능합니다. 독립형 문서의 유효성을 검증하면 유효성을 검사하지 않는 프로세서가 문서를 올바르게 구문 분석하는 데 사용할 수있는 모든 정보를 갖게됩니다.
문서에 외부 DTD가없고 내부 DTD에 매개 변수 엔티티 참조가없는 경우 독립형 선언은 목적을 제공하지 않습니다. 이러한 문서는 이미 암시 적으로 독립형입니다.
다음은의 실제 효과입니다 standalone=yes
.
내부 DTD에 선언되지 않은 엔티티에 대한 참조가 문서에 포함 된 경우 (문서 유효성 검사가 필요하지 않으므로 매개 변수 엔티티의 대체 텍스트 제외) 프로세서가 외부 DTD 또는 매개 변수 엔티티 참조로 문서를 구문 분석 할 때 오류를 발생시킵니다. 이것을 파싱하십시오);
amp
,lt
,gt
,apos
, 그리고quot
유일한 예외는독립형으로 선언되지 않은 문서를 구문 분석 할 때 유효성을 검사하지 않는 프로세서는 매개 변수 엔티티 참조를 만나면 내부 DTD 구문 분석을 자유롭게 중지 할 수 있습니다. 문서를 독립형으로 선언하면 유효성을 검사하지 않는 프로세서가 하나 이상의 매개 변수 엔티티 참조를 무시한 후에도 내부 DTD에서 마크 업 선언을 구문 분석해야합니다.
문서에 다음 중 하나라도 있고 해당 선언이 외부 DTD 또는 매개 변수 엔티티 대체 텍스트에있는 경우 유효성 검증 프로세서가 오류를 발생시킵니다.
- 명시 적으로 제공된 값이없는 경우 기본값이있는 속성
- 엔티티 참조 (이외의
amp
,lt
,gt
,apos
,과quot
) - 정규화 된 값으로 속성 값을 수정하는 경우 토큰 화 된 유형의 속성
- 내용에 공백이 있으면 요소 내용이있는 요소
유효성을 검증하지 않는 프로세서는 외부 DTD를 검색하고 독립형이 아닌 문서에 대한 모든 매개 변수 엔티티 참조를 확장 할 것을 고려할 수 있습니다. 예를 들어 설정하지 않으면 standalone=yes
유효성이 검증되지 않은 프로세서의 성능을 이론적으로 향상시킬 수 있습니다 (스포일러 경고 : 아마 차이가 없을 것입니다).
여기에있는 다른 답변은 불완전하거나 부정확합니다. 주된 오해는
독립형 선언은 파서에게 DTD의 마크 업 선언을 무시하도록 지시하는 방법입니다. 그 후 DTD는 유효성 검사에만 사용됩니다.
standalone = "yes"는 XML 프로세서가 유효성 검사에만 DTD를 사용해야 함을 의미합니다.
반대로 문서를 독립형으로 선언하면 실제로 유효성을 검사하지 않는 프로세서가 일반적으로 무시해야하는 내부 선언을 구문 분석하도록 강제합니다 (예 : 무시 된 매개 변수 엔터티 참조 이후). 유효성을 검사하지 않는 프로세서는 유효성 검사와 독립적이므로 기본 속성 값을 제공하고 토큰 화 된 속성을 정규화하기 위해 여전히 내부 DTD의 정보를 사용해야합니다.
참고 URL : https://stackoverflow.com/questions/5578645/what-does-the-standalone-directive-mean-in-xml
'Programing' 카테고리의 다른 글
Invoke-customs는 Android 0부터 시작하여 지원됩니다. --min-api 26 (0) | 2020.04.04 |
---|---|
거꾸로 작성된이 코드가“Hello World!”를 인쇄하는 이유는 무엇입니까? (0) | 2020.04.04 |
Git의 브랜치에서 변경 사항을 얻는 방법 (0) | 2020.04.04 |
유효한 SSL 인증서는 어디서 구입할 수 있습니까? (0) | 2020.04.04 |
단위 테스트를위한 NUnit 대 Visual Studio 2008의 테스트 프로젝트? (0) | 2020.04.04 |