html 파일의 경우 공백은 중요하지 않습니다. 그러나 xml의 경우 기본 위치는 공백 노드를 유지하는 것입니다(공간 노드에 대한 설명은 아래 참조).
XML 사양에 따르면 소위 공백은 4개 문자의 조합 시퀀스입니다.
---------------- --- ─────
공백 문자(space), 해당 문자 값은 #x20
반환 문자(Carriage Return), 해당 문자 값은 #xD
개행 문자(Newline), 해당 문자 값은 #xA
탭 문자(Tab), 해당 문자 값은 #x9입니다.
xml 파일의 공백도 공간 노드인 노드를 형성합니다. 공간 노드는 텍스트 노드 유형에 속합니다.
xml 및 xslt의 경우 공간 노드에는 두 가지 문제가 있습니다.
------------
1. xml 입력 파일에서 중요한 공간을 결정하려면 xslt 프로세서가 이러한 공간 노드를 확인해야 합니다. 결정의 핵심은 xml:space 속성입니다.
2. xsl 템플릿 파일에서 어떤 공간이 중요한지 결정하고 xslt 프로세서는 이를 결과 트리에 복사해야 하며 결정의 핵심은 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 속성이 있고 그 값이 유지되며, 최근 상위 컴포넌트에는 default인 다른 xml:space 속성 값이 없습니다. 다른 텍스트 노드는 제거됩니다.
xsl 템플릿의 경우 소위 공간 보존 구성 요소 이름 집합에 하나의 xsl:text 구성 요소만 사용할 수 있습니다. xsl 템플릿 파일의 공간 노드는 삭제되지만 xsl:text 구성 요소에 공간 노드가 나타나면 유지됩니다.
위 내용은 XML의 공백 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!