본문 바로가기

   
Programming/XML

엔티티, PCDATA, 속성, 엘리먼트,순서

반응형

<?xml version="1.0" encoding="utf-8" ?>

<!--Ex01.xml-->

<!--

       XML 구성요소

       1. 엘리먼트

       2. 속성

       3. PCDATA

       4. 엔티티(&nbsp; )

      

       엘리먼트(태그)

       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>

 

 

반응형