본문 바로가기

   
Programming/XML

혼합형, 출현유형, 속성유형, dtd예제

반응형

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

 

<!--Ex07_dtd.xml-->

 

<!DOCTYPE root [

       <!ELEMENT root (((a|b)?,c?,d*,((a,c)+,a?)),a)>

       <!ELEMENT a (#PCDATA)>

       <!ELEMENT b (#PCDATA)>

       <!ELEMENT c (#PCDATA)>

       <!ELEMENT d (#PCDATA)>

]>

 

<root>

       <a>data</a>

       <c>data</c>

       <d>data</d>

       <d>data</d>

 

       <a>data</a>

       <c>data</c>

       <a>data</a>

       <c>data</c>

 

       <a>data</a>

 

       <a>data</a>

</root>

 




혼합형

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

 

<!--

       Ex08_dtd.xml

       - EMPTY

       - Mixed(텍스트 + 엘리먼트) -> (#PCDATA|엘리먼트|....)*    ; 반드시 #PCDATA가 먼저 나와야하고 | 로 요소가 묶이고 끝이 *로 끝남

       - ANY : 부모도 엘리먼트로 가질 수 있다. ANY는 쓰지말자~!!

       -->

 

<!DOCTYPE root [

       <!ELEMENT root (a, b)>

       <!ELEMENT a EMPTY>

       <!ELEMENT b (#PCDATA|c|d|f)*> <!--혼합형-->

 

       <!ELEMENT c (#PCDATA)>

       <!ELEMENT d (#PCDATA)>

       <!ELEMENT e (#PCDATA)>

       <!ELEMENT f ANY>

 

]>

 

<root>

       <a />

       <b>

             문자열

             <c>data</c>

             문자열

             <d>data</d>

             문자열

             문자열

             문자열

            

             <!--<e>data</e> Error-->

             <f>

                    <b>

                           문자열

                           <c>data</c>

                    </b>

             </f>

       </b>

</root>

 

 



출현유형, 속성유형

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

<!--

DTD 속성 선언

 

DTD 속성 선언

 

<!ATTLIST 엘리먼트명

       속성명 속성유형 출현유형

       속성명 속성유형 출현유형

       속성명 속성유형 출현유형

       ..

       >

      

       CDATA 문자열을 넣겠다라는 뜻.

      

       출현유형

       1. #REQUIRED : 필수속성(생량X) 절대 생략 되지 않는다.

       2. #IMPLIED : 선택속성(생략O) 써도인정 안써도 인정

       3. #FIXED "" : 속성 고정값 #FIXED "축구부" : 반드시 축구부만 사용할수 있다.

       4. "" : 속성 기본값 gen CDATA "m" : FIXED 와 비슷하게 사용 가능하다.

      

       속성유형

       1. CDATA : 모든 형태의 데이터

       2. ID : 유일한 값 식별자(공백허용 안됨 숫자 허용안됨) 중복허용 안됨

       3. 열거형 : 열거된 값 속성명 (서울|부산|인천|대구|전주)

       4. IDREF : 존재하는 ID값을 참조

       5. IDREFS : 존재하는 ID값들을 참조

-->

 

<!DOCTYPE members [

       <!--

       엘리먼트 사용순서를 맞추지 않아도 된다. 많이지고 복잡해지면 현실적으로 맞추기 힘들다.

       -->

       <!ELEMENT members (member+)>

       <!ELEMENT member (name, age)>

      

       <!--

      

       -->

       <!ATTLIST member

             no ID #REQUIRED

             area (서울|부산|인천|대구|전주) #IMPLIED

             cafe CDATA #FIXED "축구부"

             gen CDATA "m"

             friend IDREF #IMPLIED

             friends IDREFS #IMPLIED

       >

       <!ELEMENT name (#PCDATA)>

       <!ELEMENT age (#PCDATA)>

]>

<!--선언되지 않은 속성은 사용할수 없다.-->

<members>

       <member no="A" area="인천" cafe="축구부" friend="B">

             <name>홍길동</name>

             <age>20</age>

       </member>

      

       <member no="B" area="전주" friends="A C">

             <name>아무게</name>

             <age>25</age>

       </member>

 

       <member no="C" area="부산">

             <name>테스트</name>

             <age>25</age>

       </member>

      

</members>

 



dtd 예제

 

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

<!--Ex10_dtd.xml-->

 

<!--

       1. 루트엘리먼트 : html

       2. html의 자식 head먼저, body나중에.. 중복X, 생략X

       3. head의 자식 : title 필수 1, meta 생략O, 중복O

       4. title PCDATA

       5. meta는 단독태그, 속성은 name(열거형 3가지,필수), content(일반값,필수)를 가짐

       6. body h3, hr, table, div를 마음대로 자식으로..

       7. h3는 내용 PCDATA

       8. hr은 단독태그 size(숫자,필수), color(열거형,선택), align(열거형,생략하면 "left" 기본값)

       9. table 자식으로 tr(반드시 1개 이상)

       10. table 속성 border(숫자,필수), width height(숫자, 선택)

       11. tr는 자식으로.. td(1개 이상), bgcolor(열거형,선택)

       12. td PCDATA, align(열거형, 기본값("left"))

       13. div PCDATA

      

       + color, bgcolor = red, yellow, blue, white, black 중 하나..

       + align = left, center, right 중 하나..

-->

 

<!DOCTYPE html [

       <!--여기부터 작성-->

       <!ELEMENT html (head, body)>

       <!ELEMENT head (title, meta*)>

       <!ELEMENT title (#PCDATA)>

       <!ELEMENT meta EMPTY>

       <!ATTLIST meta

             name (author|keyword|description) #REQUIRED

             content CDATA #REQUIRED

       >

       <!ELEMENT body (h3|hr|table|div)*>

       <!ELEMENT h3 (#PCDATA)>

       <!ELEMENT hr EMPTY>

       <!ATTLIST hr

             size CDATA #REQUIRED

             color (red|yellow|blue|white|black) #IMPLIED

             align (left|center|right) "left"

       >

       <!ELEMENT table (tr+)>

       <!ATTLIST table

             border CDATA #REQUIRED

             width CDATA #IMPLIED

             height CDATA #IMPLIED

       >

       <!ELEMENT tr (td+)>

       <!ATTLIST tr

             bgcolor (red|yellow|blue|white|black) #IMPLIED

       >

       <!ELEMENT td (#PCDATA)>

       <!ATTLIST td

             align (left|center|right) "left"

             colspan CDATA #IMPLIED

       >

       <!ELEMENT div (#PCDATA)>

]>

 

 

<html>

       <head>

             <title>제목입니다.</title>

             <meta name="author" content="홍길동" />

             <meta name="keyword" content="XML,DTD" />

             <meta name="description" content="DTD예제입니다." />

       </head>

       <body>

             <h3>C#</h3>

 

             <hr size="1" color="red" align="left" />

 

             <table border="1" width="300" height="200">

                    <tr bgcolor="yellow">

                           <td colspan="2">교육 내용</td>

                    </tr>

                    <tr>

                           <td align="center">WinForm</td>

                           <td>윈폼 수업입니다.</td>

                    </tr>

                    <tr>

                           <td align="left">ASP.NET</td>

                           <td>ASP.NET수업입니다.</td>

                    </tr>

             </table>

 

             <hr size="1" color="blue" align="left" />

 

             <div>위의 내용은 HTML 수업 내용입니다.</div>

       </body>

</html>

 

 




 

 

반응형