<?xml version="1.0" encoding="utf-8" ?>
<!--Ex01.xml-->
<!--
XML 구성요소
1. 엘리먼트
2. 속성
3. PCDATA
4. 엔티티( )
엘리먼트(태그)
1. 기본 골격 구성 요소
2. 시작태그&끝 태그 or 단독태그
3. 엘리먼트는 내용(Content)을 갖는다.
a. 자식 엘리먼트
b. PCDATA
c. EMPTY
d. 혼합형(Mixed)
4. 엘리먼트는 속성 가진다.
-->
<root>
<!--a-->
<a>
<aa>data</aa>
<bb>data</bb>
</a>
<!--b : 시작태그와 끝 태그 사이에 문자열만 있는 것-->
<b>data</b>
<!--c-->
<c attr="value" />
<c></c>
<!--d-->
<d>
문자열
<dd>data</dd>
문자열
<ee>data</ee>
</d>
</root>
---------------------------------------------------------------------------------
XML
<?xml version="1.0" encoding="utf-8" ?>
<!-- 위의 문장 :
XML 선언문
반드시 문서의 첫줄에 와야함(주석도 먼저 달면 안됨)
xml 문서 정보
DTD를 연계?
생략하지 말자~!
-->
<!--
Ex02_dtd.xml
DTD(Document Type Definition)
- 문서 유형 정의
- 현재 XML의 구조가 어떻게 되어있는지를 정의하는 언어(문법)
- XML의 장점 -> 자유도가 높다!! <- 그러나 이것이 XML의 단점이 되기도 함!!
1. 내부 DTD : Embedded Type
2. 외부 DTD : *.dtd 참조
XML 문서
1. Well-formed Document(C#에서 컴파일 오류와 비슷)
- 적어도 XML의 기본 문법을 만족하는 문서
- Well-formed 하지 못한 문서는 XML로서 가치가 없음!!!
-(ex, 시작 태그와 끝태그는 같아야 한다. 대소문자 구별 등등...)
2. Valid Document(C#에서 논리 오류와 비슷)
- XML에 추가된 DTD나 Schema를 만족하는 문서
- 사용자 정의 구조를 만족하는지?
- Invalid Document는 XML을 사용하는 응용프로그램에서 혼란을 초래하기 때문에
가치가 없다고 판단...
3. C#에서 다룰 XML문서는 Well-formed & Valid Document
-->
<!--1. 내부 DTD 사용하기-->
<!-- **DTD 정의하기
<!DOCTYPE 루트엘리먼트명
<!ELEMENT (앞으로사용할)엘리먼트명 엘리먼트유형(Content)> : 엘리먼트 선언
-->
<!--<!DOCTYPE members [
<!ELEMENT members (member+)> --><!-- + 는 중복 엘리먼트가 여러개 오는것도 가능하다는 뜻--><!--
<!ELEMENT member (name, age)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
]>-->
<!--2. 외부 DTD 사용하기
SYSTEM "경로명"
-->
<!DOCTYPE members SYSTEM "Ex02.dtd">
<members>
<member>
<name>홍길동</name>
<age>20</age>
</member>
<member>
<name>아무게</name>
<age>25</age>
</member>
<member>
<name>테스트</name>
<age>30</age>
</member>
<member>
<name>하하하</name>
<age>20</age>
</member>
</members>
------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- -
DTD
<?xml version="1.0" encoding="utf-8" ?>
<!ELEMENT members (member+)>
<!ELEMENT member (name, age)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
DTD 순서(루트)
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE root[
<!--
자식 엘리먼트 리스트
"," : sequence 연산자(엘리먼트의 출현 순서(서열))
-->
<!ELEMENT root (a,b,c)>
<!ELEMENT a (#PCDATA)>
<!ELEMENT b (#PCDATA)>
<!ELEMENT c (#PCDATA)>
]>
<!--위의 DTD 규칙을 만족하는 데이터 만들기-->
<root>
<a>문자열</a>
<b>data</b>
<c>20</c>
</root>