XML 트리
XML treeXML 문서는 계층 구조를 가지며 개념적으로 XML 트리라고 불리는 트리 구조로 해석될 수 있다.
XML 문서는 루트 요소(다른 모든 요소의 상위 요소)를 포함해야 한다.XML 문서의 모든 요소는 하위 요소, 텍스트 및 속성을 포함할 수 있다.XML 문서로 대표되는 트리는 루트 요소에서 시작하여 가장 낮은 수준의 요소로 분기된다.XML 트리에 사용된 용어에 대한 합의는 없지만, W3C에 의해 적어도 두 개의 표준 용어가 발표되었다.
XPath는 XML 문서의 하나 이상의 내부 구성요소(요소, 속성 등)를 식별하는 XPath 식을 정의한다.XPath는 XML 인코딩 데이터에 액세스하는 데 널리 사용된다.
XML 정보 세트 또는 XML 인포셋은 XML 문서에 대한 추상 데이터 모델을 정보 항목 관점에서 설명한다.그것은 종종 XML 언어의 사양에 사용되는데, 그러한 언어가 허용하는 구조에 대한 제약조건을 기술하는 것이 편리하기 때문이다.
나무로 표현
수학에서 트리는 두 개의 꼭지점이 정확히 하나의 단순한 경로로 연결되어 있는 비방향 그래프다.단순한 사이클이 없는 연결된 모든 그래프는 나무다.트리 데이터 구조는 연결된 노드 집합으로 계층 트리 구조를 시뮬레이션한다.계층 구조는 집합에 정의된 순서로 구성된다.계층 구조라는 용어는 요소들 간의 계층적 관계를 강조하기 위해 사용된다.
XML 규격은 XML 문서가 규격에 정의된 구문 규칙 목록을 만족하는 경우 XML 문서를 올바른 형식의 텍스트로 정의한다.이 규격은 길지만 XML 문서의 트리 구조와 관련된 두 가지 핵심 사항은 다음과 같다.
- 요소를 구분하는 시작 요소 태그, 끝 요소 태그 및 빈 요소 태그가 올바르게 중첩되어 누락되거나 겹치지 않음
- 단일 "루트" 요소는 다른 모든 요소를 포함한다.
이러한 특징은 나무의 그것과 닮았는데, 그것은 하나의 루트 노드가 있고, 원소에 대한 순서가 있다는 것이다.XML은 다른 언어에서 일급 데이터 유형으로 나타났다.자바스크립트(E4X) 확장은 XML 문서 노드와 XML 노드 목록을 고유 개체로 지원하고 상위-하위 관계를 지정하는 도트 알림을 사용하는 두 개의 특정 개체(XML과 XMLList)를 명시적으로 정의한다.[1] 이러한 데이터 구조는 XML 문서를 트리 구조로 나타낸다.
그래픽으로 표현된 XML 트리는 ASCII 차트처럼 단순하거나 더 그래픽적으로 복잡한 계층 구조일 수 있다.예를 들어 XML 문서와 ASCII 트리는 구조가 같다.XML 트리는 인스턴스 문서에 내용을 표시하지 않고 문서의 구조만 표시한다.이 예에서 제품은 트리의 루트 요소이며 제품의 두 하위 노드는 이름과 세부 정보입니다.세부 정보에는 Description과 Price라는 두 개의 하위 노드가 포함되어 있다.윈도우즈 및 *nix의 트리 명령도 유사한 트리 구조와 경로를 생성한다.
상품 ├-이름 ----이름 ----상세 └-설명 └-가격
<상품> <이름>위젯 <상세> <설명> 이 위젯은 최고 품질의 위젯이다. </설명> <가격>5.50</가격> </세부사항> </제품>
XPath 데이터 모델
XML 경로 언어인 XPath는 XML 문서에서 노드를 선택하기 위한 쿼리 언어다.XPath는 하나 이상의 내부 구성요소(요소, 속성 등)에 대해 XML 문서를 쿼리할 수 있는 XPath 식을 정의한다.XPath는 다른 코어-XML 규격과 XML 인코딩 데이터에 액세스하기 위한 프로그래밍 라이브러리에 널리 사용된다.[2]
XPath 데이터 모델 용어
XPath Data Model은 긴 사양이며 XML 트리와 관계없는 많은 특징에 들어간다.아래는 이 규격과 XML 규격의 핵심 용어들이다.[3][4]
- 인스턴스
- 데이터 모델은 시퀀스로 표현된다.
- 인스턴스 문서
- 동일한 시퀀스/XML 트리를 사용하고 준수하는 문서.
- 순서
- 0개 이상의 항목의 주문 모음입니다.시퀀스는 시퀀스의 구성원이 될 수 없다.개별 항목으로 나타나는 단일 항목을 하나의 항목을 포함하는 시퀀스로 모델링.
- 요소
- 다음이 포함될 수 있는 시퀀스 내의 노드
- 노드
- XML 트리/시퀀스에 표시되는 모든 항목.
- 루트 노드
- 트리의 맨 위 요소.다른 모든 요소와 노드는 루트 노드 내에 포함되어야 한다.
- 항목
- 노드 또는 원자 값.
- 가치공간
- 추가 요소가 아닌 데이터가 포함된 항목 부분.
- 원자형
- 원시 단순 유형 또는 다른 원자 유형의 제한에 의해 파생된 유형.
- 원자값
- 원자 유형인 값 공간에 포함된 값.
- 큐나메
- 요소의 정규화된 이름.XML 개체의 이름 지정 규칙을 준수해야 한다.(즉, 문자 또는 밑줄로 시작해야 하며 대소문자를 구분해야 하며, 문자 xml로 시작할 수 없으며(어떤 경우에도), 문자, 숫자, 하이픈, 밑줄 및 마침표는 공백을 포함할 수 없음)
- 확장 QNAMe
- 요소의 정규화된 이름.접두사와 네임스페이스를 포함할 수 있다.요소의 로컬 이름을 포함해야 한다.
지정된 트리 내에서 문서 순서는 다음과 같은 제약조건을 충족한다.[5]
- 루트 노드는 첫 번째 노드.
- 모든 노드는 모든 자식과 자손보다 먼저 일어난다.
- 네임스페이스 노드는 연결된 요소 노드를 즉시 따른다.네임스페이스 노드의 상대적 순서는 안정적이지만 구현에 의존한다.
- 속성 노드는 연결된 요소의 네임스페이스 노드를 즉시 따른다.지정된 요소와 연결된 네임스페이스 노드가 없는 경우 해당 요소와 연결된 속성 노드가 즉시 요소를 따르십시오.계수형 노드의 상대적 순서는 안정적이지만 구현에 의존한다.
- 형제자매의 상대적 순서는 부모 노드의 자식 속성에서 발생하는 순서다.
- 자녀와 자손은 형제자매를 따르기 전에 생긴다.
XML 정보 세트
XML 정보 세트(XML Infosset)는 XML 문서의 추상 데이터 모델을 정보 항목 집합의 관점에서 설명한다.XML 정보 세트 규격의 정의는 제대로 구성된 XML 문서의 정보를 참조할 필요가 있는 다른 규격에 사용되어야 한다.이 인포셋은 다른 XML 언어가 허용하는 XML 구성의 제약조건을 설명하는 것을 편리하게 해준다.XML 문서가 네임스페이스 제약 조건을 충족하고 형식이 올바른 경우, XML 문서는 정보 세트를 가지고 있다.정보 집합은 최대 11가지 유형의 정보 항목을 포함할 수 있다.
- 문서 정보 항목(항상 존재)
- 요소 정보 항목
- 속성 정보 항목
- 명령 정보 항목 처리
- 확장되지 않은 엔티티 참조 정보 항목
- 문자 정보 항목
- 설명 정보 항목
- 문서 유형 선언 정보 항목
- 게시되지 않은 엔티티 정보 항목
- 표기 정보 항목
- 네임스페이스 정보 항목
XML 정보 집합 용어
XML 정보 세트는 긴 사양으로 XML 트리와 무관한 많은 특징에 들어간다.XML 트리 용어와 관련하여 가장 중요한 용어는 다음과 같다.
"정보 세트에는 정확히 하나의 문서 정보 항목이 있고, 다른 모든 정보 항목은 문서 정보 항목의 속성에서 다른 정보 항목의 속성을 통해 직간접적으로 접근할 수 있다.문서 정보 항목에는 다음과 같은 속성이 있다.
- [아이들]
- [오피니언 요소]
- [알림]
- [별도변수 도면요소]
- [베이스 URI]
- [문자 인코딩 방식]
- [standalone]
- [버전].
- [모든 선언 처리됨]
XML 문서에 나타나는 각 요소에 대한 요소 정보 항목이 있다.요소 정보 항목 중 하나는 요소 트리의 루트에 해당하는 문서 정보 항목의 [문서 요소] 속성 값이며, 다른 모든 요소 정보 항목은 그 [자녀] 속성을 반복적으로 따라 접근 가능하다.요소 정보 항목에는 다음과 같은 속성이 있다.
- [이름]
- [로컬 이름]
- [prefix]
- [아이들]
- [attributes]
- [속성]
- [내 이름 공간]
- [베이스 URI]
- [부모님]
네임스페이스 선언을 포함하여 문서에 있는 각 요소의 각 속성(지정 또는 디폴트)에 대한 속성 정보 항목이 있다.그러나 후자는 요소 속성의 [속성] 속성이 아니라 요소의 [네임스페이스 속성] 속성의 구성원으로 나타난다.기본값이 없는 DTD에 선언된 속성과 요소의 시작 태그에 지정되지 않은 속성은 속성 정보 항목으로 표현되지 않는다.속성 정보 항목에는 다음과 같은 속성이 있다.
- [이름]
- [로컬 이름]
- [prefix]
- [유효한 값
- [특정]
- [유형]
- [references]
- [소유자 요소][7]
메모들
- ^ "E4X로 XML 처리".모질라 개발자 센터.모질라 재단.
- ^ XQuery 1.0 및 XPath 2.0 데이터 모델(XDM)(Second Edition), 2010년 12월 14일, http://www.w3.org/TR/xpath-datamodel/
- ^ XQuery 1.0 및 XPath 2.0 데이터 모델(XDM)(Second Edition), 2010년 12월 14일, http://www.w3.org/TR/xpath-datamodel/
- ^ Extensible Markup Language (XML) 1.0 (5번째 에디션), 2008년 11월 26일 검색: 2018년 7월 24일, https://www.w3.org/TR/xml/REC-xml-20081126-review.html#sec-terminology
- ^ XQuery 1.0 및 XPath 2.0 데이터 모델(XDM)(Second Edition), 2010년 12월 14일, http://www.w3.org/TR/xpath-datamodel/
- ^ XML 정보 세트(제2판), 2004년 2월 4일 http://www.w3.org/TR/xml-infoset/
- ^ XML 정보 세트(제2판), 2004년 2월 4일 http://www.w3.org/TR/xml-infoset/