620 likes | 839 Views
chapter 02. XML 구조와 문법. XML 문서 ( document ). XML 선언. (DTD/ XML-schema 선언 ), (Namespace 선언 ). XML 태그 ( 요소 , 속성 ) & 데이타. <?xml version="1.0" encoding="euc-kr"?> <!-- XML 문서 구조 --> <students> <student sid= “ 100 ” > <name> 홍 현 </name> <age>30</age>
E N D
chapter 02. XML 구조와 문법
XML 문서(document) XML 선언 (DTD/ XML-schema 선언), (Namespace 선언) XML 태그(요소,속성) & 데이타 <?xml version="1.0" encoding="euc-kr"?> <!-- XML 문서 구조 --> <students> <student sid=“100”> <name>홍 현</name> <age>30</age> <address>서울 면목동</address> <student> ... </students> XML 선언부 주석 최상위 요소 속성 요소 1. XML 문서 구조 • XML 문서 구조 • XML 문서 형태
1. XML 문서 구조 • XML 선언부 • 반드시 입력해야 하며, 속성으로 버전과 인코딩 지정 • 태그 시작과 끝에 <? ~ ?> 태그를 붙여야만 함 • 문서 분석 애플리케이션이 해당 문서가 XML 문서임을 판단 • XML 선언부 형식 • ① <?xml로 시작하고, 공백이 없어야 함. • ② 버전은 필수 속성 • ③인코딩과 ④독립형 여부는 선택 속성 <?xml version="버전" encoding="문자 코드" standalone="yes or no"?> ① ② ③ ④
1. XML 문서 구조 • XML 선언문 규칙 • XML 선언에서 <? (시작 태그)와 xml 문자 사이에 공백을 없앤다. • XML 선언 속성에서 version 속성은 반드시 표기한다. • XML 선언을 속성할 때는 xml, version 순으로 표현한다.
1. XML 문서 구조 • XML 주석 • ‘<!-- 와 -->’형태로 표기 • XML 선언부 이후라면 어느 위치나 가능 • DTD, XML 스키마 같은 문서 정의 문서에서도 사용가능 • XML 주석 형식 • 잘못된 주석 형식 <!-- comment --> <!-- 잘못 사용한 주석 --> XML 선언 이전에 표현됨 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <students<!-- 잘못 사용한 주석-->> 다른 요소의 내부에 표현 <!-- 잘못된 사용한 -- 주석 --> 주석 내부에 “—”문자 사용
요소(element) <element_name> element context </element_name> 시작 태그 요소 내용 종료 태그 PCDATA(Parsed Character DATA) 1. XML 문서 구조 • XML 요소 서식
1. XML 문서 구조 • XML 정의와 사용법 • 시작 태그 다음에는 반드시 종료 태그가 있어야 한다. • 모든 요소명은 대소문자를 구별한다. • 요소와 텍스트 데이터를 함께(mixed) 나타낼 수 있다. • 요소 내용이 없으면 빈 요소로 둘 수 있다. • 태그를 겹쳐(overlap)서 쓰는 것을 허용하지 않는다. • 최상위 요소(root element)는 하나만 가져야 한다. • 요소명이 XML 이름 부여 규칙(naming convention)에 적합해야 한다.
1. XML 문서 구조 • XML 이름 부여 규칙 • 문자열을 ‘xml’로 시작할 수 없다.(단, 대문자나 대문자를 포함하면 사용할 수 있다). • 요소명의 첫 문자는 문자나 ‘_’기호로 시작해야 한다. • 요소명 처음과 중간에는 공백을 사용할 수 없다(단, 공백 문자로 끝날 수는 있다). • 예약어를 사용할 수 없다. (예: xml)
students student sid name age address students student course sid name age address cno cname credit 1. XML 문서 구조 • 요소 내용 구성 • 요소 내용 여러 개를 나타낼 수 있음 • 요소 내용에 같은 구조의 요소를 포함하는 계층 구조 • 요소 내용에 다른 구조의 요소를 포함하는 계층 구조
<student sid="100"> 요소명 속성명 속성값 1. XML 문서 구조 • XML 속성 • 요소 내에 정보나 데이터를 표현하기 위한 방법 • 한 요소에 여러 속성을 표현할 수 있음 • 형식: 시작 태그 일부로 표현 • 구성 요소: 속성명과 속성값으로 표현 <element_name attribute="attribute_value" attribute="attribute_value"... >
1. XML 문서 구조 • 속성을 선언할 때 주의할 사항 • 속성은 반드시 속성값을 가져야 함 • 빈 문자열을 포함할 수도 있다. • 속성값은 큰 따옴표(“)나 작은 따옴표(‘) 사용해야 함 • 속성명 부여 방법은 요소명 부여 방법과 동일 • 대.소문자를 구별 • ‘xml'이라는 문자열로 시작할 수 없음. • 숫자로 속성명을 시작할 수 없음 • 한 요소에 같은 이름의 속성을 두 개 이상 선언할 수 없음
2. 개체 참조, CDATA, 처리 명령어 • XML 문서에서 특수문자를 표현하는 방법 • 개체 참조 • 문자 참조 • 개체 참조 정의 • 미리 정해진 코드나 이름을 사용해서 표현할 때 쓰는 개념 • 개체에 할당된 이름이 개체명 • &와 ;를 사용해서 나타냄 &entity_reference_name;
2. 개체 참조, CDATA, 처리 명령어 • 개체 참조명 • 사용 예 <students> <student> <sid>100</sid> <name>홍 현 </name> <study> <과목 > XML </study> </student> </students>
2. 개체 참조, CDATA, 처리 명령어 • 문자 참조 • ‘&’혹은 ‘<’, ‘>’이외에도 여러 가지 특수기호나 특수문자를 사용해야 할 때 유용(예. 회사 마크, 문자표 심볼 등) • 사용되는 문자 코드는 ISO/IEC10646에 명시 • 사용 예 
진수 문자 코드; - 10진수로 문자 코드를 지정 진수 문자 코드; - 16진수로 문자 코드를 지정 (유니코드) <students> <student> <sid>100</sid> <name>홍 현 </name> <telephone> ☏ 02-123-6399</telephone> <age> ♡ 30 </age> </student> </students>
2. 개체 참조, CDATA, 처리 명령어 • CDATA • CDATA 섹션 내의 문자나 기호는 태그 형식이나 코드로 인식하지 않고 그대로 문자 형식으로 취급 • 특수기호가 많은 경우 CDATA 섹션을 사용하면 유용 • CDATA를 사용할 때 주의할 사항 • ‘<![CDATA[’사이나 ‘]]>’사이에 공백을 쓸 수 없다. • CDATA 섹션 안에 CDATA 섹션을 포함하지 않아야 한다. • 키워드 CDATA는 반드시 대문자를 사용한다. • CDATA 구역은 요소 컨텐츠 내의 문자 데이터 어디에나 삽입할 수 있다. 단, XML 마크업(태그) 내에서는 사용할 수 없다. <![CDATA[ ..... ]]>
2. 개체 참조, CDATA, 처리 명령어 • CDATA 사용 예 <students> <student> <sid>100</sid> <name>홍 현 </name> <activity> <![CDATA[ 1992년"단국대" 입학. 1993년 학생회장 & 과대표. 1996년"단국대" 졸업. 2000년<< WG 입사 >> 2003년<< 총동창 회장 & 국회의원 >> ]]> </activity> </student> </students>
2. 개체 참조, CDATA, 처리 명령어 • 처리 명령어(PI, Processing Instruction) • 정보를 문서 데이터 부분이 아닌 애플리케이션으로 전달 • 형식 • name_processor: 명령문이 지정되는 애플리케이션 이름 ‘<?’와 ‘name_processor’사이에 공백이나 탭을 포함될 수 없음 • instruction: 애플리케이션 명령어, 애플리케이션에 전달되는 정보처리 명령어 <?name_processor instruction ?>
2. 개체 참조, CDATA, 처리 명령어 • 처리 명령어를 사용할 때 알아야 할 사항 • 이름은 반드시 문자 또는 밑줄로 시작해야 하고, 그 뒤에 숫자, 문자, 점, 밑줄 등을 자유롭게 사용할 수 있다. • 처리 명령문은 XML 문서의 어디든지 삽입할 수 있다. • 단, 주석과 마찬가지로 마크업 내에는 삽입할 수 없다. • 문서의 서두, 문서 요소 다음, 요소 내용의 내에 포함시킬 수 있다. • 가장 많이 사용하는 처리 명령어는 CSS와 XSL을 적용하기 위한 처리 명령어다. • 스타일시트를 위한 name_processor 부분에는 ‘xml-stylesheet’를 사용하고, instruction 부분은 사용되어지는 스타일의 MIME 타입과 스타일 파일의 URI를 기술한다.
3. 네임스페이스 개념과 사용 • 네임스페이스 등장 배경 • 중복 태그를 막기 위해 등장 • 요소명과 속성명을 정확하게 인식하는 개념 • 네임스페이스 선언 • XML에서 미리 정의된 속성을 이용해서 선언 • 속성 이름은 기본 네임스페이스 선언 방식과 접두사를 사용하는 방식이 있음 • 네임스페이스 이름은 유일하고, 지속적인 특징을 가짐
3. 네임스페이스 개념과 사용 • 기본 네임스페이스로 선언 • 요소에 xmlns 속성을 사용해서 네임스페이스를 선언 • 하위 요소에는 자동으로 상위 요소에서 선언한 네임스페이스가 적용 • XML 문서 중 기본 네임스페이스로 선언되면 네임스페이스 접두어를 붙이지 않음 • 선언 형식 • 취소 선언 형식 <element_name xmlns="URI_Reference"> <element_name xmlns=" ">
3. 네임스페이스 개념과 사용 • 기본 네임스페이스로 선언한 예 <students xmlns="http://www.dankook.ac.kr/2003/xml"> <student> <sid>100</sid> <name>홍 현 </name> <age> 30 </age> </student> </students>
3. 네임스페이스 개념과 사용 • 접두사를 사용한 네임스페이스 선언 • 네임스페이스 접두사는 XML 문서 중에서 사용하는 요소명이나 속성명과 xmlns: 속성값으로 지정하는 URI 참조를 관련시키기 위해 사용 • 선언 형식 • 접두사 사용 규칙 • 접두사 첫 문자는 문자 또는 언더라인(_)으로 시작 • URI_Reference는 xmlns: 속성값을 URI로 지정 • URI 경로가 다르게 지정되어 있다면, 서로 다른 URI 참조를 사용 <element_name xmlns:prefix_name = "URI_Reference"> http://www.dankook.ac.kr/ http://www.dankook.ac.kr/2003/ http://www.dankook.ac.kr/2003/students
3. 네임스페이스 개념과 사용 • 접두사를 사용한 네임스페이스 선언한 예 <st:students xmlns:st="http://www.dankook.ac.kr/2003/students"> <st:student> <st:sid>100</st:sid> <st:name>홍 현 </st:name> <st:age> 30 </st:age> <st:address> 서울 면목동 </st:address> </st:student> </st:students>
3. 네임스페이스 개념과 사용 • 여러 개의 접두사를 사용해서 네임스페이스를 선언한 예 <st:students xmlns:st="http://www.dankook.ac.kr/2003/students" xmlns:pf="http://www.w3.org/1999/xhtml"> <st:student> <st:sid>100</st:sid> <st:name>홍 현 </st:name> <st:age> 30 </st:age> <st:profile> <pf:html> <pf:head> <pf:title> 나의 소개 </pf:title> </pf:head> <pf:body> 활발한 사회활동 중 </pf:body> </pf:html> </st:profile> </st:student> </st:students>
3. 네임스페이스 개념과 사용 • 한정한 이름 • 네임스페이스 접두사를 붙인 요소나 속성명 • 사용 형식 • prefix_name: 네임스페이스 접두어. 네임스페이스 선언에서 정의한 것과 일치해야 함 • local_name: 지역 이름. 지역 이름은 원래 요소명이 됨 • 적용 예 <prefix_name:local_name> <bk:name> XML 활용백서 </bk:name>
3. 네임스페이스 개념과 사용 • 요소 네임스페이스 선언 예 <st:students xmlns:st="http://www.dankook.ac.kr/2003/students" xmlns:bk="http://www.hanbit.co.kr/xml/"> <st:student> <st:sid>100</st:sid> <st:name>홍 현 </st:name> <st:book> <bk:name> XML 활용백서 </bk:name> <bk:price unit="원"> 23000 </bk:price> <bk:publishing> 한빛출판사 </bk:publishing> </st:book> </st:student> </st:students>
3. 네임스페이스 개념과 사용 • 속성에 네임스페이스 선언 • 형식 • 선언 예 <element_name prefix_name:attribute_name = “attribute_value” > <students xmlns:bk="http://www.hanbit.co.kr/xml/"> <student id="100"> <name>홍 현 </name> <book bk:id="b001"> <title> XML 활용백서 </title> <publishing> 한빛출판사 </publishing> </book> </student> </students>
XML 요소(element) object 계좌 속성(attribute) 링크(Link) ... 무형의 객체 유형의 객체 현실 세계 4. 객체지향과 XML 설계 • 객체지향 • 모든 실세계를 객체로 보고 모델링해서 표현하는 것 • 객체 개념과 XML • 실세계 개념을 XML로 표현한 예
월 자전거 홍길동 천리마 1월 12월 빨간 자전거 자전거 자전거 4. 객체지향과 XML 설계 • 추상화 • 어떤 객체 집합의 특성이나 성질 등을 선택하고 적절하지 않은 다른 특성들을 제거 할 때 사용하는 정신적 과정. • 분류 추상화(classification) • 공통 성질로 특성화되어 있는 객체들을 클래스 하나로 정의 • 가장 보편적으로 많이 사용하는 개념 • IS_MEMBER_OF 관계
자전거 학생 집 탈것 주간학부생 자동차 거실 페달 대학원생 자전거 바퀴 주방 야간학부생 기차 핸들 욕실 4. 객체지향과 XML 설계 • 집단 추상화 (aggregation) • 각각의 구성 요소를 표현하는 클래스들의 집합으로부터 새로운 클래스를 정의. IS_PART_OF 관계 • 일반 추상화 (generalization) • 두 개 혹은 둘 이상의 클래스 요소 사이의 부분집합 관계를 정의 • IS_A 관계
4. 객체지향과 XML 설계 • XML 설계 단계 • 1단계: 표현하려는 객체를 선택한다. • 2단계: 객체 분석과 모델링을 통해 요소(element)를 추출해서 정의/분석한다. • 3단계: 분석된 객체 정보로 트리를 만들고 요소에 대한 정형화된 데이터를 작성한다. • 4단계: 분석된 정보를 나타내는 요소명과 속성명을 구분해서 정의한다. • 5단계: 앞에서 설계한 트리를 보고 XML 문법에 맞게 작성한다.
4. 객체지향과 XML 설계 • 1단계: 표현할 객체 선택 • 2단계: 객체 분석과 모델링, 요소 추출과 정의/분석 • 자동차 정보 분석 • 자동차 제조회사, 자동차 명 • 자동차 가격, 자동차 색상 • 배기량, 에어백 설치여부 • CD장착여부...등
4. 객체지향과 XML 설계 • 3_1단계: 분석된 객체 정보로 트리 제작 • 3_2: 요소에 대한 정형화된 데이터 작성
4. 객체지향과 XML 설계 • 4단계: 요소명과 속성명 정의
4. 객체지향과 XML 설계 • 5단계: 코딩 <?xml version="1.0" encoding="euc-kr" ?> <car> <basic> <company>현대자동차</company> <name>산타페</name> <price unit="원"> 23000000 </price> </basic> <model> <color>은색</color> <displacement> 200cc </displacement> </model> <option cd="yes"> <airbag>yes</airbag> </option> </car>
참고) XML 문서 제작 기본
정형식 문서 유효한 문서 문서형태정의 XML문서 XSD DTD 정형식 문서와 유효한 문서 • 정형식 문서(Well-formed Documents) • XML 문법과 규칙에 맞게 만들어진 오류가 없는 문서 • 유효한 문서(Valid Document) • XML 문서를 표준화해서 만들 목적으로 문서 형태 정의(DTD, Documents Type Definition)를 따르는 XML 문서 • 정형식 문서와 유효한 문서 포함 관계
XML 문서 제품을 위한 문서 형태 정의 (DTD) XML 문서 XML 문서 XML 문서 이력서를 위한 문서 형태 정의 (DTD) XML 문서 XML 문서 정형식 문서와 유효한 문서 • DTD 필요성 • 표준화를 위해 필요 • 용도별 DTD를 만든 후, 여기에 맞춰 XML 문서 작성
<제품> <모델명>J001</모델명> <회사>KTF</회사> <가격>200000원</가격> <출시날짜>20031015</출시날짜> </제품> A사 <상품> <회사>KTF</회사> <크기>20*30</크기> <모델명>J001-0822</모델명> <색상>회색</색상> </상품> B사 <제품> <회사>단국</회사> <가격 단위=“만원”>20</가격> <날짜> <년도>2003</년도> <월>10</월> <일>15</일> </날짜> <모델명>J001-0822-wm</모델명> <색상>회색</색상> </제품> C사 정형식 문서와 유효한 문서 • 한 제품에 대해 서로 다르게 작성한 XML 문서 예
정형식 문서와 유효한 문서 • 문서 형태 정의 방법 • 기존 XML 문서를 통합한 후 표준화를 정의하는 방법 • 기존 XML 문서를 종합 정리해서 추가, 삭제, 변경해서 만드는 것 • 이전 작성한 XML 문서가 있는 경우 유용 • 개념적으로 XML 문서 표준화를 정의하는 방법 • 기본적인 배경지식과 전문지식을 사용해서 개념적인 설계를 한 후, 문서 형태 정의 문서(DTD나 XML 스키마)를 미리 작성 • 기존 XML 문서가 없는 경우 적합
정형식 문서와 유효한 문서 • [실습] XML 문서를 통합해서 표준화를 정의하기 • ①회사별 XML 문서를 수집/분석 • ②공통, 비공통 태그 분석 • ③태그 결합, 태그 의미확장, 태그의 태그 확장 • ④비공통 태그 분류(필요, 제거, 선택) • ⑤추가 태그 필요한지 검토 • ⑥태그 정보가 순서성을 갖췄는지 검토 • ⑦태그 반복 여부 정의 • ⑧표준화된 문서로 표현 • ⑨ 준화된 XML 문서 정의 문서 작성 • ⑩XML 파서 프로그램을 사용해서 유효한 문서인지 검증
<제품> <모델명> J001 </모델명> <회사> KTF </회사> <가격> 200000 원</가격> <출시날짜> 2003/10/15</출시날짜> </제품> <상품> <회사> KTF </회사> <크기> 20x30 </크기> <모델명> J001-0822 </모델명> <색상> 회색 </색상> </상품> A회사 B회사 C회사 <제품> <회사> 단국 </회사> <가격 단위="만원"> 20 </가격> <날짜> <년도>2003</년도> <월>10</월> <일>15</일> </날짜> <모델명> J001-0822-wm</모델명> </제품> 정형식 문서와 유효한 문서 • 1단계: 회사별 XML 문서를 수집/분석
<제품>, <상품> <모델명> <회사> <제품>, <상품> -> <제품> <제품>, <상품> -> <물품> <제품>, <상품> -> <제품_상품> <출시날짜>, <날짜> -> <날짜> <출시날짜>, <날짜> -> <생산날짜> <출시날짜>, <날짜> -> <출시_날짜> <가격> <출시날짜> <날짜> <년도> <월> <일> <크기> <색상> <회사> -> <제조회사>, <판매회사> <회사> -> <제조사>, <판매처> <회사> -> <회사_A>, <회사_B> <회사> -> <회사> <제조회사> <판매회사> </회사> <가격> -> <가격> <원가> <판매가> </가격> 공통태그 비공통태그 태그결합 태그의미 확장 태그의미 확장 정형식 문서와 유효한 문서 • 2단계: 공통, 비공통 태그 분석 • 3단계: 태그 결합, 태그 의미확장, 태그의 태그 확장
순서성이 없는 경우 <가격> <원가> <판매가> </가격> <날짜> <년도> <월> <일> </날짜> 순서성이 있는 경우 정형식 문서와 유효한 문서 • 4단계: 비공통 태그 분류(필요, 제거, 선택) • 5단계: 추가 태그 필요한지 검토 • 6단계: 태그 정보가 순서성을 갖췄는지 검토 <가격> -> 필요사항. <크기> -> 제거사항. <색상> -> 선택사항. <기능> <보증기간>
한 번만 표현해야 하는 경우 <모델명> <회사> 정형식 문서와 유효한 문서 • 7단계: 태그 반복 여부 정의 • 8단계: 표준화된 문서로 표현 <제품목록> <제품> <모델명> J001 </모델명> <회사> KTF </회사> <가격 단위="원"> <원가> 150000 </원가> <판매가> 200000 </판매가> </가격> <날짜> <년도> 2003 </년도> <월> 10 </월> <일> 15 </일> </날짜> <색상> 검정색 </색상> <보증기간> 3년 </보증기간> <기능> 16화음, 256컬러 지원 </기능> </제품> </제품목록>
정형식 문서와 유효한 문서 • 9단계:표준화된 XML 문서 정의 문서 작성 • 10단계: XML 파서로 유효한 문서인지 검증 [DTD 작성] <!ELEMENT 제품목록 (제품)> <!ELEMENT 제품 (모델명,회사,가격,날짜,색상,보증기간,기능)> <!ELEMENT 모델명 (#PCDATA)> <!ELEMENT 회사 (#PCDATA)> <!ELEMENT 가격 (원가,판매가)> <!ATTLIST 가격 단위 CDATA #IMPLIED> <!ELEMENT 원가 (#PCDATA)> <!ELEMENT 판매가 (#PCDATA)> <!ELEMENT 날짜 (년도,월,일)> <!ELEMENT 년도 (#PCDATA)> <!ELEMENT 월 (#PCDATA)> <!ELEMENT 일 (#PCDATA)> <!ELEMENT 색상 (#PCDATA)> <!ELEMENT 보증기간 (#PCDATA)> <!ELEMENT 기능 (#PCDATA)>
정형식 문서와 유효한 문서 • [실습] 개념적인 XML 문서 표준화 정의 • ①설계: 제품 명세서 또는 해당 컨텐츠 참고 • ②공통 항목과 비공통 항목 분리 • 항목을 필요사항, 선택사항, 제거사항 구분 • ③ 요소/내용 모델 결정 • ④ 정의 문서 구조를 트리로 작성 • 추가, 제거사항 검토 • ⑤ 표준화된 XML 문서의 정의 문서 작성 • ⑥ XML 문서 작성/XML파서로 유효성 검증
개념 설계 배경지식 - 상품코드,모델명, 제조회사, 가격, 색상, 크기...등 전문지식 - 구성, 규격, 기능, 부가 기능, 특징...등 정형식 문서와 유효한 문서 • 1단계: 설계(제품 명세서 또는 해당 컨텐츠 참고) 컨텐츠 1 컨텐츠 2
상품 코드 - 필요사항 모델명 - 필요사항 제조회사 - 필요사항 가격 - 필요사항 <상품코드> <모델명> <제조회사> <가격> 구성 - 선택사항 규격- 선택사항 기능 -선택사항 부가기능 - 제거사항 특징 - 제거사항 구매 수량-제거사항 <추가정보> <구성> <규격> <기능> </추가정보> 공통태그 비공통태그 순서적인 부분 포함관계 정형식 문서와 유효한 문서 • 2단계: 공통 항목과 비공통 항목 분리 • 항목을 필요사항, 선택사항, 제거사항 구분 • 3단계: 요소/내용 모델 결정
제품 반복가능 상품코드 모델명 제조회사 가격 추가정보 회사명 회사회사 전화번호 규격 기능 구성 크기 무게 정형식 문서와 유효한 문서 • 4단계: 정의 문서 구조를 트리로 작성 • 추가, 제거사항 검토