XPath 개념과 사용 XLink 개념과 사용 XPointer 개념과 사용
description
Transcript of XPath 개념과 사용 XLink 개념과 사용 XPointer 개념과 사용
77 장장 ㅎㅎ
• XPath 개념과 사용• XLink 개념과 사용• XPointer 개념과 사용
Xpath, Xlink, XPointXpath, Xlink, XPoint
2
학습목표 XPath 개념과 활용 방법 학습 XPath 함수 사용법 학습 XLink 개념과 활용 방법 학습 XPointer 개념과 활용 방법 학습
7 장 . Xpath, Xlink, XPoint
3
XPath 개념XML 문서의 특정 부분의 위치를 찾을 때 사용하는 언어문서를 노드로 표현한 결과는 트리 형태임
트리최상위에 한 개의 루트 노드가 있음나머지 노드는 모두 루트 노드에 연결관계는 여러 개의 트리로 나눠 표현 가능
Section 01 XPath 개념과 사용
4
XML 계층 구조를 갖는 트리 구조
Section 01 XPath 개념과 사용
루트 노드(root node)
하위 노드(terminal node)
하위 노드(terminal node)
노드(node)
노드(node)
노드(node)
노드(node)
노드(node)
하위 노드(terminal node)
하위 노드(terminal node)
하위 노드(terminal node)
루 트 노드(root node)
노드(node)
하위 노드(terminal node)
하위 노드(terminal node)
최상위 노드 레벨
최하위 노드 레벨
분기
5
XPath 모델의 노드 유형루트 노드요소 노드텍스트 노드속성 노드네임스페이스 노드수행 명령 노드주석 노드
Section 01 XPath 개념과 사용
6
루트 노드최상위 노드 . 모든 노드는 루트 노드의 자손 노드
요소 노드트리는 XML 문서의 모든 요소를 요소 노드로 갖는다 .
요소 노드 이름 = 문서의 요소 이름요소 노드의 자식 노드는 요소의 컨텐츠 안에 있는 것으로 요소 노드 , 수행 명령 노드 , 주석 노드 , 텍스트 노드가 될 수 있다 .
요소 노드는 고유한 식별자를 가질 수 있다 .
DTD 를 사용하면 ID 타입의 속성이 요소에 정의될 수 있다 .
요소가 id 속성을 가질 경우 XPath 에서 노드를 선택하는데 사용 가능
Section 01 XPath 개념과 사용
7
속성 노드요소의 속성이 속성 노드로 표현속성 노드와 요소 노드는 동등한 레벨표현할 때는 자식 노드와 동일한 레벨
텍스트 노드XML 문서의 문자 데이터는 텍스트 노드로 표현문자 데이터는 요소의 텍스트 컨텐츠 , CDATA 섹션 포함속성값 , 주석 , 수행 명령 내의 텍스트는 텍스트 노드가 될 수 없음항상 텍스트 노드는 하나 이상의 문자를 가지며 , 원하는 만큼 텍스트를 포함할 수 있다 .
Section 01 XPath 개념과 사용
8
Section 01 XPath 개념과 사용
네임스페이스 노드각 요소는 요소가 속한 범위의 모든 네임스페이스에 대해 네임스페이스를 가진다 .
네임스페이스 노드와 요소 노드와의 관계는 속성 노드와 요소 노드와의 관계와 유사하다 .
요소 노드는 네임스페이스 노드의 부모 노드지만 네임스페이스 노드는 요소 노드의 자식 노드가 아니다 . 따라서 네임스페이스 노드를 포함한 트리를 표현하면 네임스페이스와 속성은 대개 요소와 같은 레벨에서 표현된다 .
9
수행 명령 노드트리는 문서의 모든 수행 명령을 수행 명령 노드로 표현단 , DTD 내의 수행 명령은 해당하지 않음
주석 노드문서의 모든 주석이 주석 노드로 표현단 , DTD 에 있는 주석은 표현하지 않음
Section 01 XPath 개념과 사용
10
XPath 모델의 지역 경로지역 경로는 문서의 구조로부터 경로를 어떤 식으로 사용할 것인지 나타내는 개념지역 경로 예
Section 01 XPath 개념과 사용
[ 그림 7-2] XML 문서의 노드 유형과 경로
<students> <student> <sno> s100</sno> <name> 고소영 </name> <address> 서울 </address> </student> </students>
11
Section 01 XPath 개념과 사용
지역 경로 구분문서 루트• 최상위 노드 역할을 하는 가상 노드 (virtual node)
• 보통은 XML 문서 자체를 의미• 문서 루트를 나타내려면 ‘ /’( 슬래시 ) 로 표현
절대 경로• 문서 루트로부터 시작되는 경로를 표현
상대 경로• 문서 루트부터 시작되는 경로가 아니라 현재 문맥 노드를 기준으로
경로를 표현한 것
12
XPath 사용XPath 의 기본 구성은 표현식표현식 값을 구한 결과를 객체 혹은 인스턴스로 부름XPath 객체 종류
Section 01 XPath 개념과 사용
객체 종류 설명
노드 집합 중복이 없고 순서에 상관 없는 노드 목록
부울린형 결과로 참 (true) 또는 거짓 (false) 값으로 반환
숫자 실수 숫자 ( 양의 정수 또는 음의 정수 또는 10 진수 ) 로 반환
문자열 문자 데이터로 반환
13
Section 01 XPath 개념과 사용
XPath 표현식문맥 (context) : XPath 표현식의 값을 구하는 곳XPath 정보 종류
정보 종류 설명
문맥 노드 표현식을 사용하여 애플리케이션이 값을 구한 현재 노드
문맥 노드의 길이와 위치 문서 노드의 개수나 위치를 0 이 아닌 양의 정수로 나타냄
변수 변수 이름 값에 매핑
XPath 함수 라이브러리 함수를 사용하여 문서의 노드나 속성 정보 등
네임스페이스 선언 표현식에 적용하는 이름공간 선언의 집합
14
Section 01 XPath 개념과 사용
XPath 표현식에 쓰는 위치 경로
① 축• 위치 단계와 문맥 노드에 의해 선택된 노드간 관계• 문서 일부분이 존재하는 방향
② 노드 테스트• 위치 단계에서 선택된 노드들의 타입과 이름을 표현• 찾을 내용에 해당되는 노드 이름
③ 서술• 조건을 표현한다• 위치단계에서 선택된 노드 집합에서 조건에 맞는 노드만 반환하기
위해사용
axes :: nodetest [predicate]①축 ②노드 테스트 ③서술
15
XPath 조건표현과 트리
Section 01 XPath 개념과 사용
[ 표 7-3] XPath 조건 표현
XPath 조건 표현 의미
student[name] 자식요소로 <name> 을 가지고 있는 모든 <student> 요소
student[@sno] 속성이 sno 인 모든 <student> 요소
name[.=' 고소영‘ ] 요소 내용이 “고소영”인 모든 <name> 요소
student[@sno='s100'] sno 속성값이 s100 인 모든 <student> 요소
[ 그림 7-3] XPath 조건 표현식
16
축XML 문서 트리에서 현재 노드와 노드 간 관계나 방향 표현XPath 에는 13 가지 축이 정의되어 있음
Section 01 XPath 개념과 사용
[ 그림 7-4] 축 정의
17
노드 테스트노드 타입과 이름을 기술하기 위해 사용노드 테스트 함수
Section 01 XPath 개념과 사용
함수 이름 설명
name() 노드 이름을 반환하는 함수
text() 텍스트 노드에 대해서 참 (true) 값을 반환
comment()주석 노드에 대해서 참 (true) 값을 반환하는 함수 ( 주석을 반환하는 함수 )
processing-instruction()
처리 명령어에 대해서 참 (ture) 을 반환하는 함수매개 변수를 가질 수 없다 . 이 경우에는 처리 명령어가 동일한 이름을 사용하는 경우에만 참이 된다 .
node() 임의의 노드에 대해서 참을 반환하는 함수 ( 노드 자신을 반환하는 함수 )
18
서술자축을 기준으로 노드 집합을 필터링해서 새로운 노드 집합을 생성위치 경로에 의해 선택된 노드 집합을 거르는 역할 수행노드 테스트의 오른쪽 부분에서 대괄호로 묶어 사용
• child::name 요소에 의해 추출되는 노드 집합은 문맥 노드의 모든 <name> 요소를 포함
• 서술자인 [position()=3] 이 추가된 새로운 위치 경로는 이들 중 세 번째 name 자식 요소만 선택
Section 01 XPath 개념과 사용
child::name[position()=3]
19
축약형 위치 경로 표현XPath 표현식이 길어지는 것을 막기 위해 개발축약형 문법은 표준 XPath 보다 직관적이고 직접적임
Section 01 XPath 개념과 사용
위치 경로 표현 축약형 표현
child::name name
/child::address/child::city /address/city
attribute::sno @sno
/descendant-or-self::node()/ //
/descendant-or-self::node()/child::name //name
self::node() .
parent::node() ..
[position()=3] [3]/descendant::name[position()=2]/ancestor::*[position()=3]
/descendant::name[2]/ancestor::*[3]
self::node()/descendant-or-self//node()/child::name .//name
child::student[attribute::sno and attribute::cno] student[@sno and @cno]
[ 표 7-5] 축약형 표현
20
Section 01 XPath 개념과 사용
XPath 함수모든 XPath 프로세스는 코어 함수 라이브러리라 불리는 표준 함수의 집합을 지원함수는 이름과 반환 타입 , 파라미터를 가질 수 있는데 , 매개 변수에 물음표 (?) 가 붙은 경우에는 매개 변수를 생략할 수 있음XPath 함수 종류• 노드 집합 관련 함수• 부울린 관련 함수• 숫자 관련 함수• 문자열 관련 함수
21
노드 집합 관련 함수 : 노드 집합을 반환하기 위해 사용
Section 01 XPath 개념과 사용
반환형 함수명 설명
number count(node-set) 선택된 요소의 수를 반환
node-set id(object) ID 를 이용해서 원하는 노드를 찾는다 .
number last()현재 노드에서 문맥 크기 값을 반환즉 마지막 자식 요소를 반환한다 .
string name(node-set?) 노드 이름을 반환
string namespace-uri(node-set?) 네임스페이스의 URI 를 반환
string local-name(node-set?)노드의 지역 이름을 반환노드 셋인 경우 , 첫 번째 노드의 지역 이름을 반환한다 .
number position() 현재 노드의 문맥 위치 값을 반환
22
Section 01 XPath 개념과 사용
부울린 관련 함수 : 조건의 참 또는 거짓을 알아보기 위해 사용
반환형 함수명 설명
boolean boolean(object)
매개 변수를 부울린 값으로 변환object 가 숫자일 때는 0 만 아니면 참이고 , object 가 노드 셋일 때는 공집합만 아니면 참이며 , object 가 문자열일 때는 문자열 길이가 0 만 아니면 참이다 .
boolean not(boolean) 부울린 값을 역으로 변환해서 반환
boolean true() 참을 반환
boolean false() 거짓을 반환
boolean lang(string)문맥 노드에 설정된 xml:lang 속성이 string 값으로 주어진 값과 같은 경우에 참을 반환
23
숫자 관련 함수 : 숫자를 편하게 사용할 수 있게 하는 함수
Section 01 XPath 개념과 사용
number number(object?)
매개 변수를 숫자로 변환object 가 문자열인 경우에는 문자를 숫자로 변환하며 , object 가 부 울 린 인 경 우 에 는 참 인 경 우 에 는 1 거짓인경우에는 0 을 반환한다 . 만약 object 가 노드 셋인 경우에는 string() 함수를 통해서 문자열로 변환해서 숫자가 계산된다 .
반환형 함수명 설명
numbner sum(node-set) 노드의 문자열 값을 숫자로 변환해서 합계를 구함
numbner floor(number) number 보다 크지 않은 가장 큰 정수를 반환
numbner ceiling(number) number 보다 작지 않은 가장 작은 정수를 반환
boolean round(number) number 의 반올림값을 구한다 .
24
문자열 관련 함수 1: 문자열 값을 선택 , 조작하기 위해 사용
Section 01 XPath 개념과 사용
반환형 함수명 설명
string string(object?)
object 를 문자열로 변환한다 . object 가 노드셋인 경우에는 노드 셋에서 첫 번째 노드의 문자열 값을 문자열로 변환한다 . 첫 번째 노드가 문자열 값을 가지고 있지 않은 경우에는 공백 문자열이 반환된다 . 숫자인 경우에는 양의 무한대는 “ infinity", 음의 무한대는 ” -infinity" 문자열을 반환 한다 . 부울린인 경우에는 참이면 “ true", 거짓인 경우에는 ” false" 를 반환 한다 .
string concat(string, string, string*)
문자열을 결합해서 반환한다 .
string substring-before(string, string)
첫 번째 매개 변수에서 두 번째 매개 변수가 포함된 위치보다 앞에 있는 내용을 반환한다 .예 ) substring-before("2003/10/15","/") 는 “ 2003”년을 반환한다 .
string substring-after(string, string)
첫 번째 매개 변수에서 두 번째 매개 변수가 포함된 위치보다 뒤에 있는 내용을 반환한다 .예 ) substring-before("2003/10/15","/") 는 “ 10/15” 를 반환한다 .
string normalize-space(string?)
매개 변수의 문자열에서 공백을 제거한다 .예 )normalize-space(‘ Study XML’) 은 ’ StudyMXL' 로 반환 한다 .
25
Section 01 XPath 개념과 사용
문자열 관련 함수 2: 문자열 값을 선택 , 조작하기 위해 사용
반환형 함수명 설명
string translate(string,string, string)
첫 번째 매개 변수의 내용을 두 번째와 세 번째 airi 변수의 변환 규칙을 이용해서 변환한다 .예 )translate(‘12:30’,‘:’, ‘$’) 은 ‘ 12$30’ 으로 반환 한다 .
string substring(string, number, number?)
첫 번째 매개 변수에서 두 번째 매개 변수가 지정하는 곳의 위치에서부터 세 번째 매개 변수 길이 만큼의 부분 문자열을 반환한다 .예 )substring('ABCDEF',2,3) 는 ‘ BCD' 를 반환 한다 .
boolean contains(string, string)
첫 번째 매개 변수가 두 번째 매개 변수를 포함하고 있으면 참을 반환한다 .예 )contains(‘XML', 'M') 는 참을 반환한다 .
boolean start-with(string, string)
첫 번째 매개 변수가 두 번째 매개 변수로 시작하는 경우에 참을 반환 한다 .예 )start-with(‘XML','X') 는 참을 반환한다 .
number string-length(string?)
문자열에서 문자의 개수를 리턴한다 .예 ) string-length('XML') 은 3 을 반환한다 .
26
Section 02 XLink 개념과 사용
XLink자원들 사이에 링크를 표현하기 위하여 사용되는 XML 관련 표준링크 개념과 사용
[ 그림 7-5] 링크 개념과 사용
27
HTML 링크와 XLink 비교
XLink 기본 기능지역 자원에서 원격 자원으로 가는 링크를 지원한다 .
링크는 하나의 도착점으로 연결된다 .
링크는 사용자에 의해 활성화 또는 선택 된다 .
원격 자원은 URL 로 지정된다 .
Section 02 XLink 개념과 사용
HTML 링크 XLink
단방향 링크만 가능 단방향과 양방향 링크가 모두 가능
단락 구 분 의 문 서 세 부 위 치 지 정 링크가 가능
문자 단위의 문서 세부 위치 지정 링크가 가능(좀더 세밀한 링크 지원 )
링크 정보만 따로 문서화해서 관리하는 것이 불가능 링크 정보만 따로 문서화해서 관리하는 것이 가능
링크에 의미 부여가 불가능 링크에 의미 부여가 가능
28
XLink 추가 기능XML 은 개발자가 자신만의 링크를 정의할 수 있기 때문에 모든 요소는 링크 요소가 될 수 있어야 한다 .
링크는 사람과 기계 모두 이해하기 쉬워야 한다 . 이 개념은 향후에 시맨틱 웹을 발전시킨 원동력이기도 하다 .
개발자는 링크가 처리되는 방법에 관한 특정 정보를 가지는 XLink 애플리케이션을 제공할 수 있어야 한다 .
링크 작용은 사용자에 의해 다른 방법으로 활성화 될 수 있다 .
링크는 단 방향 링크일 필요는 없다 .
링크는 링크가 연결하는 자원의 외부로부터 표현될 수 있다 .
링크는 하나 이상의 자원을 포함할 수 있다 .
링크 내의 시작 자원과 목표 자원은 다른 링크 작용을 가질 수 있다 .
Section 02 XLink 개념과 사용
29
XLink 설계 원칙XLink 는 인터넷 상에서 바로 사용 가능해야 한다 .
XLink 는 다양한 종류의 링크를 사용하는 도메인과 링킹 애플리케이션에 의해 사용가능 해야 한다 .
XLink 표현 언어는 XML 의 표준을 따른다 .
XLink 설계는 빠르게 준비되어야 한다 .
Xlink 설계는 형식에 맞고 간결해야 한다 .
XLink 는 사람이 인식하기 쉬워야 한다 .
Xlink 의 링크는 참여 자원이 존재하는 문서의 외부에 존재할 수도 있다 .
Xlink 는 추상 구조와 링크의 의미를 나타내야 한다 .
Xlink 는 구현하기 편리해야 한다 .
Section 02 XLink 개념과 사용
30
XLink 에서 사용되는 링크의 구조
지역 자원 : XML 원소나 XML 원소의 부모 원소를 링크 원소로 가짐으로서 링크에 참여하는 XML 원소 .
원격 자원 : URI 참조에 의해 주소를 부여 받음으로서 링크에 참여하는 자원
Section 02 XLink 개념과 사용
[ 그림 7-6] XLink 의 구조
31
XLink 속성XLink 원소와 속성 사용 : XLink 네임스페이스 선언해야 함XLink 네임스페이스 형식
XLink 를 이용해서 XML 문서에 링크를 하려면 XML 문서에 포함된 각각의 요소에 전역 속성을 사용전역 속성을 사용해서 임의의 XML 원소도 링크로 만들 수 있음
Section 02 XLink 개념과 사용
xmlns:xlink="http://www.w3.org/1999/xlink"
32
XLink 전역 속성
Section 02 XLink 개념과 사용
속성명 내용
type XLink 종류 지정 (총 6 가지 종류 지원 )
href URL 지정
role, arcrole링크와 관련된 사항을 의미적으로 명시하지만 , 컴퓨터가 자체적으로 이해할 수 있는 방식으로 명시
title링크와 관련된 사항을 의미적으로 명시하지만 , 인간이 이해할 수 있는 방식으로 명시
show, actuate 링크가 되었을 때 어떻게 보여질 것인가를 명시
from, to, label 링크 방향 지정
33
Section 02 XML 스키마 사용
단순 링크 HTML 에서 <a> 태그를 사용해서 링크를 생성하는 것과 같은 개념<a> 태그와 다른 점은 , HTML 이 고정된 <a> 태그만을 사용하고 , 의미를 부여할 수 없는 반면 , 단순 링크는 임의의 원소에 전역 속성을 이용해서 링크를 연결할 수 있고 의미를 부여할 수 있음HTML 에서의 <a> 나 <img> 와 같은 간단한 기능을 기본적으로 제공단순 링크는 type 속성을 simple 속성값을 지정
34
단순 링크 사용 예
Section 02 XML 스키마 사용
[ 그림 7-10] XLip 에서 실행한 화면
[ 그림 7-11] XLip 에서 실행한 화면
35
Section 02 XML 스키마 사용
전역 속성 : href 속성링크가 가리키는 곳의 URL
여러 개를 사용할 수 있음simple 타입 사용 가능locator 타입에서도 사용 가능
[ 그림 7-12] 실행 결과
36
전역 속성 : show 속성링크된 자원을 가져올 때 어떻게 보여줄지를 지정
속성 값에 new, replace, embed, other, none 을 지정• new: 새로운 창을 띄워서 자원 보여주기
• replace: 현재 문서 창에 보여주기
• embed: 자원이 XLink 요소와 대치
• other: XLink 를 어떻게 처리할 것인지 정보를 제공하지 않음– 애플리케이션이 링크를 어떻게 처리 할 것인지 결정하기 위해서 문서의
다른 마크업 정보들을 찾아보아야 한다는 의미
• none: 애플리케이션이 링크를 처리 방법과 관련한 정보를 XML
문서에 제공되지 않는다는 의미
Section 02 XML 스키마 사용
37
전역 속성 : show 속성 사용 결과
Section 02 XML 스키마 사용
[ 그림 7-13] 실행 결과
38
전역 속성 : actuate 속성자원을 검색할 시점을 지정할 때 사용
속성값은 onload, onRequest, other, none 중 하나 사용
• onload: 문서가 로딩되면 링크가 지정한 자원을 가져옴
• onRequest : 클릭했을 때 자원을 가져옴
• other: XLink 가 링크 활성화에 관한 정보를 제공하지 않기 때문에 애플리케이션이 링크 활성화에 대한 정보를 얻기 위해서 XML
문서의 다른 부분을 찾아야 한다 .
• none: 링크 활성화에 대한 정보가 없기 때문에 애플리케이션에서 링크 활성화에 대해 알아서 처리하도록 한다 .
Section 02 XML 스키마 사용
39
Section 02 XML 스키마 사용
전역 속성 : role 속성애플리케이션을 이해하는 방법으로 자원 이름 할당
전역 속성 : title 속성링크에 대한 설명 표현
[ 그림 7-14] 실행 결과
40
전역 속성 : from 속성과 to 속성from, to 속성은 링크가 어디서 어디를 가르키는지 알려주기 위해 사용하는 속성링크 방향을 정의할 때 사용
전역 속성 : label 속성자원 이름을 명시하는 속성자원의 label 속성 값은 아크 (arc) 에서 참조
Section 02 XML 스키마 사용
41
확장 링크선언할 때는 type 속성 값을 extended 로 지정XLink 의 모든 기능을 사용 가능 . 원격 자원을 지칭하기 위한 요소 , 로컬 자원을 포함하는 요소 , 아크 요소 , 사람이 읽을 수 있는 자원 요소 등을 지원
Section 02 XML 스키마 사용
[ 그림 7-15] 확장 링크 개념
42
타입별 사용 가능 /불가능 속성
Section 02 XML 스키마 사용
속성 / 타입 simple extended locator arc resource title
type required required required required required required
href optional
required
role optional optional optional
optional
arcrole optional
optional
title optional optional optional optional optional
show optional
optional
actuate optional
optional
label
optional
optional
from
optional
to
optional
43
타입별 사용 가능 /불가능 속성locator 속성• 확장 링크 요소들의 자식 요소에서만 사용 가능한 속성이다 . 확장
링크와 관련이 있으면서도 떨어져 있는 자원들을 지정할 때 사용한다 .
resource 속성• 로컬에서 링크를 사용하기 위해서 사용한다 . 즉 extended 속성을
가지고 있는 요소의 자식 요소 중에서 type 속성 값을 resource 라고 정해주면 된다 .
arc 속성• from 과 to 속성을 사용하여 링크가 진행되는 방향을 정의하여 준다 . 즉 arc 속성은 자원들 간에 오가는 링크들 사이에서 어디서 어디로 향하는 링크인지를 알려주는 속성이다 .
title 속성• type 의 값으로 title 을 지정할 경우 이 기능은 XLink 의 title 속성이
하는 일과 같다 . 하지만 이렇게 type 을 title 로 지정함으로써 이득이 되는 것은 이 요소를 다른 요소의 자식으로 사용할 수 있게 하는 것이다 .
Section 02 XML 스키마 사용
44
<students xml:base="http://localhost:8080/" xmlns:xlink="http://www.w3.org/1999/xlink">
<student xml:base="/student/"> <name xlink:type="simple" xlink:href="gsy.xml" xlink:actuate="onRequest" xlink:show="new"> 고소영 </name>
<address> 서울 압구정 </address> </student></students>
XML Base 활용Xlink 를 사용할 때 기본 URI 를 지정하기 위해서 XML BASE 개념을 사용 .
XML BASE 는 base 속성을 표현해서 사용사용 예
Section 02 XML 스키마 사용
xlink_base.xml
45
XPointer 개념XPath 를 기반으로 XML 문서의 일부분에 주소를 부여할 수 있는 방법을 제공하는 언어XML 문서의 구조가 복잡하고 길때 유용문서의 일부 데이터를 다른 XML 문서에서 링크하거나 , 문서 내의 일부 데이터를 검색하고자 할 때 사용하면 편리XPath 가 XML 문서의 노드에만 주소를 부여할 수 있는데 반해 , XPointer 는 문서 노드 , 범위 , 글자 단위에도 주소를 부여할 수 있음
Section 03 XPointer 개념과 사용
46
Section 03 XPointer 개념과 사용
XPointer 사용 방법URI 와 같이 사용XML 문서의 위치를 표현할 때는 URI 를 , 문서 내에서 일부분의 주소를 표현할 때는 XPointer 가 사용
[ 그림 7-20] URI 와 XPointer 를 사용하는 방법
47
문서간에 XLink 와 Xpointer 의 관계 개념
Section 03 XPointer 개념과 사용
[ 그림 7-21] 문서 간에 XLink 와 XPointer 의 관계 개념
48
Section 03 XPointer 개념과 사용
노드와 포인트 넘버링
[ 그림 7-22] 노드와 포인트 넘버링
49
XPointer 관련 용어포인트 (poinht)• 문서 내의 한 지점을 의미• xml 문서의 조각과 조각 사이 또는 문자와 문자 사이에 위치• 노드 포인트와 문자 포인트로 분류 가능
범위 (range)• 두 개의 포인트로 지정할 수 있는 XML 문서의 범위를 지정• 어느 문자열 혹은 문서의 어느 부분을 가리킬 때에 매우 유용
로케이션 (location) • XPath 의 노드를 일반화한 개념• 로케이션은 포인트 , 범위 , XPath 의 노드 중 하나
로케이션 셋 (location-set)• 로케이션의 목록 집합싱글톤 (singleton) • 단일 로케이션으로 구성된 로케이션 셋
서브 리소스 (sub-resource)• XPointer 에 의해 식별되는 XML 자원의 부분
Section 03 XPointer 개념과 사용
50
XPointer 사용처음에 절대 위치를 지정한 후 , 상대 위치 지정절대 위치 지정
상대 위치 지정은 XPath 에서 사용하는 축 정의를 사용요소 지정에는 개별 요소명 뿐만 아니라 종류를 나타내기 위해 키워드도 지정 가능
Section 03 XPointer 개념과 사용
지정 함수 포인트하는 장소
root() 문서의 루트 요소
origin() 링크 이동이 발생할 때의 링크의 시작점
id(id 속성값 ) 지정한 id 장소
51
Section 03 XPointer 개념과 사용
XPointer 사용요소 지정
요소 지정 의미
#element 요소를 선택한다 . 이름이나 종류는 묻지 않는다 .
#comment 커멘트 요소를 포인터 대상으로 한다 .
#cdata CDATA 섹션 부분을 포인터 범위로 한다 .
#text요소 내용 또는 CDATA 섹션중의 문자열을 포인터 범위로 한다 .
#pi 처리 명령을 포인터 대상으로 한다 .
#all CDATA 섹션 내의 모든 내용을 포인터 범위로 한다 .
요소명 지정 요소명을 가진 요소를 포인터 대상으로 한다 .
52
Section 03 XPointer 개념과 사용
xpointer 함수location-set string-range(location-set, string, number?, numner?) • 전달된 location-set 값에서 지정된 문자열 (string) 검색 , 그리고
나서 함수는 찾아낸 문자열을 반환
location-set range-to(location-set) • 문맥 로케이션에서부터 range-to() 함수에 의해 지정되는
로케이션까지 범위를 반환
location-set range(location-set)• 매개 변수의 로케이션 셋에 있는 로케이션의 내용을 포함하고 있는
범위를 반환
location-set start-point(location-set) • 매개 변수의 로케이션 셋에 있는 로케이션 x 를 로케이션 셋의
포인트 타입으로 추가
location-set end-point(location-set)• 매개 변수의 로케이션 셋에 있는 로케이션 x 를 결과 로케이션 셋의
포인트 타입으로 추가
53
Xpointer 사용 예
Section 03 XPointer 개념과 사용
① xpointer(/members/member[1]) 또는 xpointer(/members/member[2])
② Xpointer(id("m002")) or m002 ③ xpointer(//*[1]/*[3]/*[2]) or /1/3/2 ④ xpointer(id("m003")/*[4]) ⑤ xpointer(start-point(string-range
(//*,'홍 길동 ',1,3))) ⑥ xpointer(start-
point(//members/member[2])) ⑦ xpointer(string-range(//*,'김진만 ',1,2)) ⑧ xpointer(string-range(//*.'광주 487-9898'))
⑨ 모든 member 원소 리턴 xpointer(//members/member)
[ 그림 7-23] XML 문서와XPointer
54
Xpointer 사용 결과
Section 03 XPointer 개념과 사용
[ 그림 7-24] 실행 화면
Thank you