다음을 통해 공유


공백

W3C(World Wide Web 컨소시엄) XML 사양에서 여러 줄 끝 규칙을 단일 규칙으로 표준화하고 특성 값의 경우를 제외한 다른 모든 공백을 유지합니다. 또한 XML은 문서에서 공백을 유지해야 할 경우 응용 프로그램에 신호를 보내는 데 사용할 수 있는 도구 집합을 제공합니다.

공백 및 XML 선언

현재 XML 1.0 표준에 따라 XML 선언 앞에 공백을 사용할 수 없습니다.

XML 선언 앞에 공백이 나타난 경우 처리 명령으로 간주됩니다. 파서가 이 정보 특히, 인코딩을 사용할 수 없습니다.

XML 선언에 대한 자세한 내용은 XML 선언을 참조하십시오.

요소 내용의 공백

XML 파서는 문서의 요소 내용에 나타나는 모든 공백을 보고해야 합니다. 이러한 이유로 다음 세 문서의 XML 파서가 다릅니다.

<document>
<data>1</data>
<data>2</data>
<data>3</data>
</document>

<document><data>1</data><data>2</data><data>3</data></document>

<document><data>1</data> <data>2</data> <data>3</data></document>

일부 응용 프로그램의 경우 세 데이터 요소의 값이 제대로 인쇄하는 것보다 더 중요합니다. 문서 기반 XML 응용 프로그램의 경우 공백을 유지하는 것이 중요합니다.

문서 작성자는 xml:space 특성을 사용하여 공백이 중요하게 간주되는 문서 부분을 식별할 수 있습니다. 또한 스타일시트에서 xml:space 특성을 후크로 사용하여 프레젠테이션의 공백을 유지할 수 있습니다. 그러나 대부분의 XML 응용 프로그램은 xml:space 특성을 인식할 수 없기 때문에 이 특성은 참고용으로 사용됩니다.

xml:space 특성은 두 개의 값을 허용합니다.

  • default
    이 값을 사용하면 응용 프로그램에서 필요에 따라 공백을 처리할 수 있습니다. xml:space 특성을 포함하지 않으면 default 값을 사용하는 것과 같은 결과가 나타납니다.
  • preserve
    이 값은 공백이 어떤 의미를 지닌 것으로 가정하고 응용 프로그램에서 공백을 그대로 유지하도록 지정합니다.

xml:space 특성 값은 자식 요소 중 하나에서 재정의하지 않으면 이 특성이 포함된 요소의 모든 하위 요소에 적용됩니다.

예를 들어, 다음 문서는 동일한 공백 동작을 지정합니다.

두 예제에서는 응용 프로그램에서 시의 행에 있는 모든 공백을 유지해야 하지만 문서의 다른 부분에 있는 공백은 필요에 따라 처리할 수 있음을 알려 줍니다.

언어에서 지정하는 해당 xml:lang과 같이 xml:space 특성이 유효성 검사 환경에서 사용될 경우 DTD(문서 종류 정의)에서 선언해야 합니다. xml 네임스페이스가 XML 사양에 예약되어 있으므로 선언할 필요가 없습니다.

기본적으로 MSXML(Microsoft XML Core Services)에서는 xml:space 특성을 고려하지 않습니다. 응용 프로그램에서 xml:space 특성을 고려해야 할 경우 구문 분석하기 전에 DOMDocument 개체의 preserveWhiteSpace 속성을 True로 설정해야 합니다.

xmldoc= new ActiveXObject("Msxml2.DOMDocument.5.0");

xmldoc.preserveWhiteSpace = true;

xmldoc.load(url);

또한 MSXML은 응용 프로그램 공백 처리를 파서에 위임할 수 있는 설정을 제공합니다. 자세한 내용은 MSXML SDK 설명서의 "공백 및 DOM" 항목을 참조하십시오.

ms256097.note(ko-kr,VS.100).gif참고:
공백 정보를 유지하면 요소 간의 공백 노드를 유지하는 데 필요한 오버헤드로 인해 DOM(문서 개체 모델) 트리의 크기가 크게 증가합니다.

특성의 공백

XML 프로세서에서 요소 내용에 있는 모든 공백을 유지하지만 특성 값에서 이를 표준화하는 경우가 자주 있습니다. 탭, 캐리지 리턴 및 공백은 단일 공백으로 보고됩니다. 특정 형식의 특성은 값의 본문 앞이나 뒤에 오는 공백을 지우고 값 안에 있는 공백을 단일 공백으로 줄입니다. DTD를 사용할 수 있는 경우 CDATA 형식이 아닌 모든 특성에서 공백을 지웁니다.

예를 들어, XML 문서에 다음을 포함할 수 있습니다.

<whiteSpaceLoss note1="this is a note." note2="this
is
a
note.">

XML 파서는 두 특성 값을 "this is a note."로 보고하고 줄 바꿈을 단일 공백으로 변환합니다.

참고: MSXML3의 DOM과 SAX는 모두 공백을 표준화하지 않습니다. MSXML6의 DOM은 공백을 표준화하지 않지만 SAX는 공백을 표준화합니다.

문서에 대한 DTD가 있을 경우 CDATA 이외의 형식으로 선언된 특성은 특성 값 시작과 끝에서 공백이 제거됩니다. 값 안에 있는 모든 공백 클러스터가 단일 공백으로 바뀝니다. DTD가 없을 경우 파서는 모든 특성을 CDATA 형식으로 가정합니다.

줄의 끝 처리

XML 프로세서는 문자 시퀀스 CRLF(캐리지 리턴-줄 바꿈)를 단일 CR 또는 LF 문자와 같이 처리합니다. 모두 단일 LF 문자로 보고됩니다. 응용 프로그램은 적절한 줄 끝 규칙을 사용하여 문서를 저장합니다.