programing

XML에서 '독립 실행형' 지시는 무엇을 의미합니까?

telecom 2023. 11. 1. 22:08
반응형

XML에서 '독립 실행형' 지시는 무엇을 의미합니까?

뭐하는 거지?standalone' XML 문서의 지시 평균?

standalone선언은 파서에게 DTD의 마크업 선언을 무시하라고 말하는 방법입니다.이후 DTD는 유효성 검사에만 사용됩니다.

예를 들어, 겸손한 사람들을 생각해 보세요.<img>tag. 만약 당신이 XHTML 1.0 DTD를 본다면, 당신은 파서에게 다음을 알려주는 마크업 선언을 볼 수 있습니다.<img>태그는 비어 있어야 하며 소유해야 합니다.src그리고.alt특성.브라우저가 XHTML 1.0 문서를 통과하고 있을 때,<img>태그, DTD가 다음을 요구한다는 것을 알아야 합니다.src그리고.alt속성이 없는 경우 추가합니다.또한 자체적으로 폐쇄됩니다.<img>태그는 비어 있어야 하기 때문입니다.XML 명세가 의미하는 "마크업 선언이 문서의 내용에 영향을 미칠 수 있다"는 것입니다.그러면 사용할 수 있습니다.standalone파서에게 이 규칙들을 무시하라고 지시하는 선언.

구문 분석기가 실제로 이 작업을 수행하는지 여부는 또 다른 문제이지만, 브라우저와 같이 표준을 준수하는 유효성 검사 구문 분석기를 사용해야 합니다.

DTD를 지정하지 않으면 독립 실행형 선언은 "의미가 없으므로" DTD도 지정하지 않는 한 사용할 이유가 없습니다.

  • 독립 실행형 지시어는 XML 선언의 선택적 특성입니다.
  • 유효한 값은yes그리고.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(Fifth Edition)"에서 그 목적을 설명합니다.

의 의도는.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이론적으로 valid가 아닌 프로세서의 성능을 향상시킬 수 있습니다(spoiler 경고: 아마도 아무런 차이가 없을 것입니다).


여기에 있는 다른 답변들은 불완전하거나 부정확하며, 주요 오해는

독립 실행형 선언은 파서에게 DTD의 마크업 선언을 무시하도록 지시하는 방법입니다.이후 DTD는 유효성 검사에만 사용됩니다.

standalone="yes"는 XML 프로세서가 유효성 검사에만 DTD를 사용해야 함을 의미합니다.

이와는 정반대로, 문서를 독립 실행형으로 선언하면 실제로 검증되지 않은 프로세서가 일반적으로 무시해야 하는 내부 선언(즉, 무시된 매개 변수 엔티티 참조 후의 선언)을 구문 분석해야 합니다.유효성을 검사하지 않는 프로세서는 내부 DTD의 정보를 사용하여 기본 특성 값을 제공하고 토큰화된 특성을 정규화해야 합니다. 이것은 유효성 검사와는 독립적이기 때문입니다.

마크업 선언은 XML 프로세서에서 응용프로그램으로 전달될 때 문서의 내용에 영향을 미칠 수 있습니다. 예를 들어 속성 기본값과 엔티티 선언이 있습니다.XML 선언의 구성 요소로 나타날 수 있는 독립 실행형 문서 선언은 문서 엔티티 외부에 또는 매개 변수 엔티티에 이러한 선언이 있는지 여부를 나타냅니다.[정의:외부 마크업 선언(external markup declaration)은 외부 서브셋(subset) 또는 파라미터 엔티티(외부 또는 내부)에서 발생하는 마크업 선언(markup declaration)을 의미합니다.

http://www.w3.org/TR/xml/ #sec-rmd

언급URL : https://stackoverflow.com/questions/5578645/what-does-the-standalone-directive-mean-in-xml

반응형