>  기사  >  백엔드 개발  >  XML의 공백에 대한 전체 설명에 대한 자세한 소개

XML의 공백에 대한 전체 설명에 대한 자세한 소개

黄舟
黄舟원래의
2017-03-04 17:06:321492검색

팁: 모두가 토론에 적극적으로 참여하는 출발점으로 활용하기 위해 "XSLT 초보에서 마스터까지"에서 공간 설명의 핵심 부분을 추출했습니다. 공간에 대한 이해에 대해 이야기해 주세요.

xml 파일 구조에 대해 어느 정도 이해하고 있는 학자에게만 적합하며 초보자에게는 적합하지 않습니다. 위에서 아래로 읽어주세요.


html 파일의 경우 공백은 중요하지 않지만 xml의 경우 기본 위치는 공백 노드를 유지하는 것입니다(공간 노드에 대한 설명은 아래 참조).


XML 사양에 따르면 소위 공백은 4개의 문자로 구성된 시퀀스입니다.
--------- --
공백 문자(space), 해당 문자 값은 #x20
반환 문자(Carriage Return), 해당 문자 값은 #xD
뉴라인 문자(Newline), 해당 문자 값은 # xA
탭 문자(Tab), 해당 문자 값은 #x9입니다.

xml 파일의 공백도 공간 노드인 노드를 형성합니다. 공간 노드는 텍스트 노드 유형에 속합니다.

xml 및 xslt의 경우 공간 노드에는 두 가지 문제가 있습니다.
------------
1. xml 입력 파일에서 중요한 공간을 결정하려면 xslt 프로세서가 이러한 공간 노드를 확인해야 합니다. 결정의 핵심은 xml:space 속성입니다.
2. xslt 프로세서가 결과 트리에 복사해야 하는 xsl 템플릿 파일에서 어떤 공간이 중요한지 결정하고 결정의 핵심은 xsl:strip-space
및 xsl:PReserve-space 두 명령입니다.


"중요하고 중요하지 않은 우주 노드"
------------
누군가가 구성 요소의 콘텐츠는 구성 요소만 포함할 수 있으므로 구성 요소의 공간 노드는 중요하지 않습니다.
구성 요소의 콘텐츠가 #PCDATA 유형인 경우 해당 구성 요소 내의 공간 노드는 중요한 것으로 간주되어야 합니다.
컴포넌트 콘텐츠가 텍스트 콘텐츠와 컴포넌트가 혼합된 상황은 컴포넌트와 그 콘텐츠의 의미론적 의미에 따라 판단이 불가능합니다.


xslt 프로세서가 xml 입력 파일과 접촉하기 전에 xml 파서가 이를 분석합니다.
————————————————— ————————————— ---
(1) xml:space 속성은 후속 XML 애플리케이션에 의해 공간 노드 처리 모드를 변경할 수 있습니다. 예를 들어 xslt 프로세서는 다음의 영향을 받습니다. xml:space 속성.
(2) xml 파일의 열 표시나 내용 끝에 있는 종료 기호는 단일 줄 바꿈 문자(#xA)로 대체됩니다.
(3) 속성 값이 XML 애플리케이션으로 전달되기 전에 XML 파서는 속성 값에 대해 표준화된 작업도 수행해야 합니다. 이는 운영 체제에 따라 각 텍스트 줄의 끝 문자 조합이 다르기 때문입니다. 예를 들어 Windows 시스템은 반환 문자와 새 줄 문자로 끝나지만 Unix 시스템은 새 줄 문자 그룹으로만 끝나기 때문입니다.
기호. XML 파서는 XML 파일을 읽은 후 먼저 모든 종료 기호를 단일 줄 바꿈 문자로 바꿉니다. 이는 서로 다른 시스템 간의 서로 다른 종료 기호 디자인의 차이점을 통합할 뿐만 아니라 후속 XML 애플리케이션의 작업 어려움을 단순화합니다. . 이러한 프로세스를 "정규화"라고 합니다.
a, 각 텍스트 열의 끝 기호는 단일 개행 문자(#xA)로 정규화되어야 합니다.
b, 공백 문자(#x20, #xD, #xA, #x9)는 공백 문자(#x20)로 대체되어야 합니다.
c. 속성 값에 단어 매개변수 코드가 포함된 경우 이 참조 문자로 대체되어야 합니다. 예를 들어 는 새 줄 문자(#xA)로 대체됩니다.
d. 속성 값에 엔터티 참조가 포함된 경우 대체 텍스트로 바꿔야 합니다.
e, 그 이외의 모든 문자는 정규화된 속성 값에 직접 입력되어야 합니다.
f. 마지막으로 속성 유형이 CDATA가 아닌 경우 xml 파서는 속성 값 앞뒤의 공백 문자 시퀀스를 추가로 삭제해야 하며, 속성 값 중간에 일련의 공백이 있는 경우 또한 단일 공백 ​​문자로 바꿔야 합니다.


xslt 프로세서는 xml 입력 파일과 xsl 템플릿 파일의 구조 트리를 구축한 후 구성 요소의 인접한 텍스트 노드를 단일 텍스트 노드로 병합한 다음 일부 제거 텍스트 노드를 병합합니다. . 그러나 텍스트 노드가 다음 조건 중 하나를 충족하면 유지됩니다.
------
(1) 텍스트의 상위 구성 요소 노드는 공백 보존 요소 이름 집합의 구성원입니다.
(2) 텍스트 노드에 공백이 아닌 문자가 하나 이상 있습니다.
(3) 텍스트 노드의 상위 컴포넌트에 xml:space 속성이 있고, 해당 값이 유지되며, 최근 상위 컴포넌트에는 기본값인 다른 xml:space 속성 값이 없습니다. 다른 텍스트 노드는 제거됩니다.


xsl 템플릿의 경우 소위 공간 보존 구성 요소 이름 집합에 하나의 xsl:text 구성 요소만 사용할 수 있습니다. xsl 템플릿 파일의 공간 노드는 삭제되지만 xsl:text 구성 요소에 공간 노드가 나타나면 유지됩니다.

위 내용은 xml의 공백에 대한 전체 설명에 대한 자세한 소개입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.