[xml] XML에서 ‘독립형’지시어 란 무엇입니까?

standaloneXML 문서에서 ‘ ‘지시문은 무엇을 의미합니까?



답변

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 선언의 선택적 속성입니다.
  • 유효한 값은 yesand입니다 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의 정보를 사용해야합니다.


답변