1 Invalid Documents : XML의 태그 규칙을 따르지 않거나,DTD를 사용한 경우에 DTD에 정의된 규칙을 제대로 따르지 않는 문서 2 Well-Formed Documents : DTD를 사용하지는 않지만,XML의 태그 규칙을 따르는 문서 3 Valid Documents : XML의 태그 규칙을 지키며 DTD에 정의된 방식으로 바르게 작성된 문서
1 시작 태그가 있으면 반드시 닫는 태그가 사용되어져야 한다. 2 시작 태그에 대응하는 닫는 태그가 오기전에 시작 태그의 바깥에 위치한 태그의 닫는 태그가 위치하지 않아야 한다.(태그들이 겹쳐서(orverlapped) 사용될수 없다.) 3 어트리뷰트의 값들은 끈따옴표로 둘러쌓여야한다.
step1. DTD 사용 여부 선택 step2. DTD를 사용하는 경우 사용할 DTD 선정 또는 새로 설계하여 작성 step3. Well-formed 또는 Valid한 문서가 되도록 XML 문서 작성 step4. 파싱 step5. 디스플레이
<?xml version="1.0" encoding="KSC5601"?> <!DOCTYPE MAIL [<!ELEMENT MAIL (SUBJECT,SENDER,RECEIVER,BODY,SIGNATURE)> <!ELEMENT SUBJECT (#PCDATA)> <!ELEMENT SENDER (NAME,ADDRESS)> <!ELEMENT RECEIVER (NAME,ADDRESS)> <!ELEMENT BODY (P)*> <!ELEMENT P (#PCDATA)*> <!ELEMENT SIGNATURE (#PCDATA)> <!ELEMENT NAME (#PCDATA)> <!ELEMENT ADDRESS (#PCDATA)> <!ATTLIST MAIL STATUS (official|informal) 'official'> <!ATTLIST ADDRESS TYPE (office|home|e-mail) 'e-mail'> ]> <MAIL STATUS="informal"> <SUBJECT>XML 예제입니다.</SUBJECT> <SENDER> <NAME>이호동</NAME> <ADDRESS TYPE="home">서울 강남구 서초동 000번지</ADDRESS> </SENDER> <RECEIVER> <NAME>김낙랑</NAME> <ADDRESS TYPE="office">대전 유성구 만년동 111번지</ADDRESS> </RECEIVER> <BODY> <P>이 부분이 본문의 내용이 들어가는 부분입니다.</P> <P>그냥 패러그래프별로 내용을 적으면 됩니다.</P> <P>지정된 DTD에 따라 작성하는 아주 간단한 XML 문서 작성 예제입니다.</P> </BODY> <SIGNATURE> 이호동 보냄 </SIGNATURE> </MAIL>
1. Processing Instructions(Optional) : XML문서를 어떻게 처리해야 할지를 기술해 주는 부분 2. DTD(Optional) : DTD를 사용하는 경우에는 어떤 DTD를 사용할지를 선언한 내용또는 DTD가 포함 3. Comments(Optional) 4. Element...
<?xml version="1.0" standalone="yes" encoding="KSC5601"?> <?xml-stylesheet type="text/xsl" href="price7.xsl"?>
<엘리먼트 이름 어트리뷰트1="어트리뷰트1의값"...>내용</엘리먼트 이름>
<엘리먼트 이름 어트리뷰트1=="어트리뷰트1의 값".../>
<!ELEMENT 엘리먼트 이름 컨텐츠_스펙>
1. MAIL 엘리먼트에는 SUBJECT,SENDER,RECEIVER,BODY,SIGNATUER 엘리먼트가 순서대로 위치하는데 ,다른 엘리먼트들은 단 한번 위치하지만 RECEIVER 엘리먼트는 1개 이상 올수 있으며, SIGNATURE 엘리먼트는 한 번 나오거나 또는 사용하지 않아도 되는 예 <!ELEMENT MAIL (SUBJECT,SENDER,(RECEIVER)+,BODY,(SIGNATURE)?)> 2. BODY 엘리먼트에 P엘리먼트가 한번도 오지 않거나 여러번 반복해서 위치할 수 있는 예 <!ELEMENT BODY (P)*> 3. P 엘리먼트에 어떤 엘리먼트든지 또는 PCDATA가 위치하는 예 <!ELEMENT P ANY> 4. SIGNATURE 엘리먼트에 PCDATA가 위치하는 예 <!ELEMENT SIGNATURE (#PCDATA)> 5. PHONENUMBER 엘리먼트에 OFFICE 또는 HOME 또는 MOBILE 엘리먼트 중에서 하나가 위치하거나 또는 오지 않는 예 <!ELEMENT PHONENUMBER (OFFICE|HOME|MOBILE)?> 6. Empty Element의 예 <!ELEMENT BR EMPTY>
1. 외부 엔티티와 내부 엔티티의 사용 방법 &엔티티 명칭; 2. 파라미터 엔티티의 사용 방법 %엔티티 명칭;
1. 외부 엔티티 선언 방법 <!ENTITY 엔티티 명칭 SYSTEM "외부 XML 문서의 URI"> <!ENTITY 엔티티 명칭 PUBLIC Public_indentifier "외부 XML문서의 URI"> 2. 내부 엔티티 선언 방법 <!ENTITY 엔티티 명칭 "엔티티 내용"> 3. 파라미터 엔티티의 선언 방법 <!ENTITY %엔티티 명칭 "엔티티 내용"> 4. 엔티티를 선언해서 사용한 예를 들어서 아래와같이 <!ENTITY chulsu "이철수(타율 0.321 홈런 32 타점 60)">
book.xml <?xml version="1.0" encoding="KSC5601"?> <!DOCTYPE BOOK [ <!ENTITY chapter1 SYSTEM "chapter1.xml"> <!ENTITY chapter2 SYSTEM "chapter2.xml"> ]> <BOOK> <TITLE>XML BOOK</TITLE> <CHAPTER>&chapter1;</CHAPTER> <CHAPTER>&chapter2;</CHAPTER> </BOOK> chapter1.xml <CHAPTER_TITLE>Chapter1.Instruction</CHAPTER_TITLE> chapter2.xml <CHAPTER_TITLE>Chapter2.Overview</CHAPTER_TITLE>
drangon.xml <?xml version="1.0" encoding="KSC5601"?> <!DOCTYPE doc [ <!ENTITY ttl "누가 용의 발톱때를 보았는가"> ]> <doc> 용에 대해서는 이런 저런 말들이 있고 관련된 책도 있다. "&ttl;"와 "드래곤 라자"등은 모두 용에 대한 책이다. "&ttl;"는 영화로도 만들어 졌다. </doc>
파리미터 엔티티 선언 중 일부 <!-- Parameter Entities--> <!ENTITY % head.misc "SCRIPT|STYLE|META|LINK|OBJECT" -- repeatable head elements --> <!ENTITY % heading "H1|H2|H3|H4|H5|H6"> <!ENTITY % list "UL|OL"> <!ENTITY % preformatted "PRE"> ...중략... <!ENTITY % head.content "TITLE & BASE?"> 다른 엔티티나 엘리먼트를 선언할 때 파라미터 엔티티를 참조 <!ENTITY %block "P %heading; |%list; |%preformatted; |DL |DIV |NOSCRIPT | BOCKQUOTE "> <!ELEMENT HEAD O O (%head.content;) + (%(head.misc;) --document head--> ....
"-//Textuality//Text Standard open-hatch boilerplate//EN" Formal public Idenifer의 구성 1. -로 시작하는것은 등록되지 않은 조직을 말함 ISO에서 제공하는 공용 엔티티는 ISO 사용 2. 그다음 슬래시 두개 다음에 나오는것이 기관명 Textuality가 기관명 3. 그다음 슬래쉬 두개 다음에 나오는것이 오브젝트 타임 여기서는 TEXT 4. 그다음 공백뒤에 나오는 것이 이 오브젝트에대한 description 5. 그다음 슬래쉬 두개 다음에 나오는것은 어떤 언어를 사용했는지 나오는것 EN은 영어 KO는 한글
10진수의 경우 코드 값이 n일 때<!ENTITY name "&#n;"> 16진수의 경우 코드 값이 n일 때<!ENTITY name "&@xn;">*문자 엔티티로 선언된 엔티티를 참조 하는 방법
&name;*사용예
<?xml version="1.0" encoding="KSC5601"?> <!DOCTYPE doc [ <!ENTITY nbsp " "> <!ENTITY pound "£"> <!ENTITY yen "¥"> ]> <doc> <title> < 각 국의 통화(영국 & 일본) > </title> <currency><country>영국</country><name>파운드</name><unit>£</unit></currency> <currency><country>일본</country><name>엔</name><unit>¥</unit></currency> </doc>
<!ATTLIST element_name attribute_name attribute_type default_type "default_value"> 또는 <!ATTLIST element_name>
#REQUIRED 엘리멑르르 사용할 때 반드시 어트리뷰트를 사용해야 하고 값도 지정해 주어야 함을 의미함 #IMPLIED 엘리먼트를 사용할 때 이 어트리뷰트가 빠져 있다면,이를 반드시 XML 프로세서가 응용 프로그램에 이를 알려주어야 함을 의미함 #FIXED 엘리먼트를 사용할 때 FIXED로 타입이 지정된 경우에 선언된 디폴트 값과 다른 값을 어트리 뷰트의 값으로 사용할수 없을을 의미함
mail이라는 엘리먼트의 id와 reply_required라는 어트리뷰트를 한번에 선언 id 어트리뷰트의 타입은 ID이고 이 어트리뷰트는 반드시 사용해 주어야 하는 것으로 선언되었다. 그리고 reply_required 라는 어트리뷰트는 이 어트리뷰트의 값으로는 "yes"와"no"만 사용될수 있으며 만약 어트리뷰트가 명시되지 않았을 경우에는 디퐅르 값으로 "yes"를 사용한다. <!ATTLIST mail id ID #REQUIRED reply_required (yes|no) "yes') form이라는 엘리먼트의 method라는 어트리뷰트 선언으로 어트리뷰트의 값은 항상 "POST"이어야함 <!ATTLIST form method CDATA #FIXED "POST"> book이라는 엘리먼트의 desc라는 어트리뷰트에 대한 선언 이경우에는 desc라는 어트르뷰트를 사용하지 않아도 되고,만약 사용하는 경우에 이 어트리뷰트의 값에는 White space 처리를 하지 않겠다는 예이다. <!ATTLIST book desc CDATA #IMPLIED>