U E D R , A S I H C RSS

XML Study_2002/Start

XML λ¬Έμ„œ μž‘μ„±ν•˜λŠ” 방법을 μ΅νžŒλ‹€.

1. XML μ‹œμž‘ν•˜κΈ°

1.1. XML λ¬Έμ„œμ˜ μ’…λ₯˜

  • XML λ¬Έμ„œμ˜ μ’…λ₯˜λΌ λ‚˜λˆ„μ–΄ 보면 λ‹€μŒ μ„Έ κ°€μ§€λ‘œ λ‚˜λˆŒ μˆ˜μžˆλ‹€

 1 Invalid Documents : XML의 νƒœκ·Έ κ·œμΉ™μ„ λ”°λ₯΄μ§€ μ•Šκ±°λ‚˜,DTDλΌ μ‚¬μš©ν•œ κ²½μš°μ— DTD에 μ •μ˜λœ κ·œμΉ™μ„ μ œλŒ€λ‘œ λ”°λ₯΄μ§€ μ•ŠλŠ” λ¬Έμ„œ
 2 Well-Formed Documents : DTDλΌ μ‚¬μš©ν•˜μ§€λŠ” μ•Šμ§€λ§Œ,XML의 νƒœκ·Έ κ·œμΉ™μ„ λ”°λ₯΄λŠ” λ¬Έμ„œ
 3 Valid Documents : XML의 νƒœκ·Έ κ·œμΉ™μ„ 지킀며 DTD에 μ •μ˜λœ λ°©μ‹μœΌλ‘œ λ°”λ₯΄κ²Œ μž‘μ„±λœ λ¬Έμ„œ
  • μœ„μ— 3κ°œμ€‘ Invalid DocumentsλŠ” μ‹€μ œ XML λ¬Έμ„œλ‘œμ„œμ˜ 역할을 ν• μˆ˜ μ—†λ‹€. XML νŒŒμ„œλ‘œ νŒŒμ‹± ν–ˆμ„ λ•Œ λ°”λ₯΄κ²Œ νŒŒμ‹±λ˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ΄λ‹€.
  • 2λ²ˆμ€ XML λ¬Έμ„œμ— DTDλΌ μ‚¬μš©ν•˜μ§€μ•Šμ•˜μ§€λ§Œ XML λ¬Έμ„œ νƒœκ·Έ κ·œμΉ™μ— 맞게 μž‘μ„±λ˜μ—ˆμœΌλ€λ‘œ Well-Formed λ¬Έμ„œλ‘œ μ‚¬μš©λœλ‹€.
  • 3λ²ˆμ€ DTD도 μ‚¬μš©ν•˜μ˜€κ³  νƒœκ·Έ κ·œμΉ™λ„ 맞게 μž‘μ„±λœκ²ƒμ΄λ‹€.

1.2. XML λ¬Έμ„œμ˜ νƒœκ·Έ κ·œμΉ™

 1 μ‹œμž‘ νƒœκ·Έκ°€ 있으면 λ°˜λ“œμ‹œ λ‹«λŠ” νƒœκ·Έκ°€ μ‚¬μš©λ˜μ–΄μ Έμ•Ό ν•œλ‹€.
 2 μ‹œμž‘ νƒœκ·Έμ— λŒ€μ‘ν•˜λŠ” λ‹«λŠ” νƒœκ·Έκ°€ μ˜€κΈ°μ „μ— μ‹œμž‘ νƒœκ·Έμ˜ λ°”κΉμ— μœ„μΉ˜ν•œ νƒœκ·Έμ˜ λ‹«λŠ” νƒœκ·Έκ°€ μœ„μΉ˜ν•˜μ§€ μ•Šμ•„μ•Ό ν•œλ‹€.(νƒœκ·Έλ“€μ΄ κ²Ήμ³μ„œ(orverlapped) μ‚¬μš©λ μˆ˜ μ—†λ‹€.)
 3 μ–΄νŠΈλ¦¬λ·°νŠΈμ˜ 값듀은 λˆλ”°μ˜΄ν‘œλ‘œ λ‘˜λŸ¬μŒ“μ—¬μ•Όν•œλ‹€.

1.3. XML을 μ‚¬μš©ν•˜μ—¬ λ¬Έμ„œ μž‘μ„±ν•˜λŠ” 방법

 step1. DTD μ‚¬μš© μ—¬λΆ€ 선택
 step2. DTDλΌ μ‚¬μš©ν•˜λŠ” 경우 μ‚¬μš©ν•  DTD μ„ μ • λ˜λŠ” μƒˆλ‘œ μ„κ³„ν•˜μ—¬ μž‘μ„±
 step3. Well-formed λ˜λŠ” Validν•œ λ¬Έμ„œκ°€ λ˜λ„λ‘ XML λ¬Έμ„œ μž‘μ„±
 step4. νŒŒμ‹±
 step5. λ””μŠ€ν”Œλ ˆμ΄

2. XML λ¬Έμ„œ

  • XML λ¬Έμ„œλž€ 어떀것인가?

2.1. XML λ¬Έμ„œλž€ 무엇인가?

  • XML λ¬Έμ„œλŠ” XML둜 기술된 ꡬ쑰적인 μ •λ³΄λ‘œ κ΅¬μ„±λ˜λŠ” λ¬Έμ„œμ΄λ©° XML1.0μŠ€νŽ™μ— 맞게 μž‘μ„±ν•˜λ©° XML을 μ§€μ›ν•˜λŠ” ν”„λ‘œμ„Έμ„œ(λ˜λŠ” ν”„λ‘œκ·Έλž¨)μ—μ„œ μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œ Well-formedλ‚˜ Validν•œ ν˜•νƒœλ‘œ μž‘μ„±λœ λ¬Έμ„œλΌ λ§ν•œλ‹€. ---> μ •μ˜
  • XMLλ¬Έμ„œλŠ” νƒμŠ€νŠΈ νŒŒμΌμ΄λΌλŠ” ν˜•νƒœλ‘œ μ €μž₯되λ€λ‘œ, XML파일 μžμ²΄λŠ” OSλ‚˜ νŠΉμ • ν”„λ‘œκ·Έλž¨μ— μ˜μ‘΄μ μ΄μ§€ μ•ŠλŠ” νŠΉμ„±μ„ μ§€λ‹Œλ‹€.
  • XMLλ¬Έμ„œλŠ” λ¬Έμ„œλ‘œμ„œμ˜ 역할을 ν•˜κΈ°λ„ ν•˜μ§€λ§Œ, 데이터듀을 담을 μˆ˜λ„ μžˆλ‹€. 즉 XML λ¬Έμ„œλŠ” νƒμŠ€νŠΈ ν˜•νƒœμ˜ λ°μ΄ν„°λ‘œμ„œμ˜ 역할을 ν•  μˆ˜λ„ μžˆλ‹€.
  • XML μ‘μš©ν”„λ‘œκ·Έλž¨μ΄λž€ μ΄λŸ¬ν•œ νƒμŠ€νŠΈ 객체(textual object)λΌ μ²˜λ¦¬ν•˜μ—¬ μ‚¬μš©ν• μˆ˜ μžˆλŠ” ν”„λ‘œκ·Έλž¨μ΄λ‹€.

2.2. XML λ¬Έμ„œμ˜ μš©λ„

  • 전톡적인 λ¬Έμ„œλ‘œμ„œμ˜ κΈ°λŠ₯
    • ꡬ쑰적인 ν˜•νƒœλ‘œ λ¬Έμ„œλΌ μœ μ§€
    • ꡬ쑰적 λ¬Έμ„œ κ²€μƒ‰μ΄λ‚˜ λ¬Έμ„œμ˜ ꡬ쑰 정보가 ν•„μš”ν•œ μ‘μš©μ— 이용 ,EDI DTP등에 이용,μ „μžμƒκ±°λž˜ ν”Œλž«νΌμœΌλ‘œ 이용
  • λ°μ΄ν„°λ‘œμ„œμ˜ μ—­ν• 
    • XML은 SGML을 μ€λ” μ†μ‰½κ²Œ μ‚¬μš©ν• μˆ˜ μžˆλŠ” λŒ€μ•ˆμœΌλ‘œμ„œ μ·¨κΈ‰ ν•˜μ§€λ§Œ XML의 μ‘μš©λΆ„μ•Όκ°€ ν™•λŒ€λ˜λ©΄μ„œ λ°μ΄ν„°λ‘œμ„œμ˜ 역할이 점점 컀지고 있음
    • SVG(Scalable Vector Graphics)포맷과 같은 κ·Έλž˜ν”½ λΆ„μ•Ό μ „μžμƒκ±°λž˜μ˜ νŠΈλžœμž­μ…˜ 처리, MathMLκ³Ό 같은 μˆ˜ν•™μ‹ ν‘œν˜„ 등이 μ‚¬μš© 예
    • Kawa4.0μ—μ„œλŠ” Projectλ‚˜ Workspace에 λŒ€ν•œ 정보 및 기타 λͺ‡ 가지 ν”„λ‘œκ·Έλž¨μ— λŒ€ν•œ μ •λ³΄λΌ XMLλ¬Έμ„œ ν˜•νƒœλ‘œ μœ μ§€

3. XML λ¬Έμ„œκ΅¬μ„±

3.1. 예제 mail.xml

<?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>

3.2. XML λ¬Έμ„œκ΅¬μ„±

 1. Processing Instructions(Optional) : XMLλ¬Έμ„œλΌ μ–΄λ–»κ²Œ μ²˜λ¦¬ν•΄μ•Ό ν• μ§€λΌ κΈ°μˆ ν•΄ μ£ΌλŠ” λΆ€λΆ„
 2. DTD(Optional) : DTDλΌ μ‚¬μš©ν•˜λŠ” κ²½μš°μ—λŠ” μ–΄λ–€ DTDλΌ μ‚¬μš©ν• μ§€λΌ μ„ μ–Έν•œ λ‚΄μš©λ˜λŠ” DTDκ°€ 포함
 3. Comments(Optional) 
 4. Element...

3.3. Processing Instructions(PI)

  • XMLλ¬Έμ„œκ°€ μ–΄λ–€ λ°©μ‹μœΌλ‘œ μ²˜λ¦¬λ˜μ–΄μ•Ό ν• μ§€λΌ κΈ°μˆ ν•΄μ£ΌλŠ” λΆ€λΆ„

<?xml version="1.0" standalone="yes" encoding="KSC5601"?>
<?xml-stylesheet type="text/xsl" href="price7.xsl"?>
  • μƒλž΅ν•˜λ©΄ XML의 λ””ν΄νŠΈ μ…‹νŒ…μœΌλ‘œ 처리
  • version : XMLλ¬Έμ„œκ°€ μ€μˆ˜ν•˜λŠ” XML μŠ€νŽ™μ˜ 버전 번호
  • standalone : μ™ΈλΆ€ λ§ˆν¬μ—… μ„ μ–Έμ˜ μ‚¬μš© μ—¬λΆ€λΌ ν‘œμ‹œ μ™ΈλΆ€ λ§ˆν¬μ—… μ„ μ–ΈμœΌ ν•œκ°œμ΄μƒ μ„ μ–Έν–ˆμ„λ–„ no
  • encoding : λ¬Έμ„œ μž‘μ„±μ‹œμ— μ‚¬μš©λœ 인코딩 방식을 기술
  • type : μ‚¬μš©ν•  μŠ€νƒ€μΌ μ‹œνŠΈμ˜ νƒ€μž…μ„ 기술 XSL(text/xsl)κ³Ό CSS(text/css)κ°€ 있음
  • href : μ‚¬μš©ν•  μŠ€νƒ€μΌ μ‹œνŠΈ 파일의 μœ„μΉ˜λΌ κΈ°μˆ 

3.4. μ—˜λ¦¬λ¨ΌνŠΈ

  • XMLλ¬Έμ„œλΌ κ΅¬μ„±ν•˜λŠ” κΈ°λ³Έ μš”μ†Œ μ‹œμž‘νƒœκ·Έμ™€ λ‹«λŠ” νƒœκ·Έκ°€ 있고 νƒœκ·Έμ•ˆμ˜ λ‚΄μš©μ΄ μ—˜λ¦¬λ¨ΌνŠΈμ˜ κ°’μ΄λœλ‹€.

<μ—˜λ¦¬λ¨ΌνŠΈ 이름 μ–΄νŠΈλ¦¬λ·°νŠΈ1="μ–΄νŠΈλ¦¬λ·°νŠΈ1μ˜κ°’"...>λ‚΄μš©</μ—˜λ¦¬λ¨ΌνŠΈ 이름>
  • empty element : λ‚΄μš©μ— 아무 것도 μœ„μΉ˜ν•˜μ§€ μ•ŠλŠ” μ—˜λ¦¬λ¨ΌνŠΈ

<μ—˜λ¦¬λ¨ΌνŠΈ 이름 μ–΄νŠΈλ¦¬λ·°νŠΈ1=="μ–΄νŠΈλ¦¬λ·°νŠΈ1의 κ°’".../>
  • μ—˜λ¦¬λ¨ΌνŠΈ νƒ€μž…μ„ μ–Έ : μ—˜λ¦¬λ¨ΌνŠΈμ˜ νƒ€μž…μ„ DTD에 선언함

<!ELEMENT μ—˜λ¦¬λ¨ΌνŠΈ 이름 컨텐츠_μŠ€νŽ™>
  • 컨텐츠 μŠ€νŽ™μ— 올수 μžˆλŠ” 것은 EMPTY와 ANY이닀. λ‹€λ₯Έ μ—˜λ¦¬λ¨ΌνŠΈμ˜ 이름을 κ΅¬μ„±ν•˜λŠ” EBNFκ°€ 올수 μžˆλ‹€. λ¬Έμžν…Œμ΄ν„°λΌ ν¬ν•¨ν•˜λ©΄ #PCDATA둜 ν‘œμ‹œ
  • EMPTY : 컨텐츠 μŠ€νŽ™μ΄ EMPTY인 경우라면 이 μ—˜λ¦¬λ¨ΌνŠΈλŠ” λ‚΄μš©μœΌλ‘œ 아무 것도 갖을 수 μ—†λ‹€λŠ” 것을 의λΈν•˜κ³  empty element둜 μ‚¬μš©
  • ANY : λ‚΄μš© 뢀뢄에 μ–΄λ– ν•œ μ—˜λ¦¬λ¨ΌνŠΈκ°€ λͺ‡ 개 든지 μˆœμ„œμ— 관계없이 νšŸμˆ˜μ— 관계없이 μœ„μΉ˜ν•΄λ„ 괜μ°λ‹€λŠ” 의λΈμ΄λ‹€.
  • μ—˜λ¦¬λ¨ΌνŠΈ νƒ€μž… μ„ μ–Έ 예

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.1. PCDATA와 CDATA

  • PCDATA(Parsed Character Data) : XMLν”„λ‘œμ„Έμ„œμ— μ˜ν•΄ νŒŒμ‹±λ˜λŠ” λΆ€λΆ„ μ˜ˆλΌ λ“€μ–΄ νƒœκ·Έ 기호인 "<" 기호λ₯Ό μ“°λ©΄ μ—λŸ¬κ°€λ‚¨
  • CDATA(Character Data) : XMLν”„λ‘œμ„Έμ„œμ— μ˜ν•΄ νŒŒμ‹±λ˜μ§€μ•ŠμŒ μ–΄λ– ν•œ λ¬Έμžν˜•λ„ μœ„μΉ˜ν• μˆ˜ 있음

1.2. μ—”ν‹°ν‹°(Entity)

  • μ—”ν‹°ν‹°λŠ” μΌμ’…μ˜ 가상 μ €μž₯ λ‹¨μœ„μ΄λ‹€. λ§€ν¬λ‘œλž‘ μœ μ‚¬
  • XML λ¬Έμ„œμ—μ„œ μ—”ν‹°ν‹°λΌ μ‚¬μš©ν•˜λŠ” 방식(Entity Reference)

1. μ™ΈλΆ€ 엔티티와 λ‚΄λΆ€ μ—”ν‹°ν‹°μ˜ μ‚¬μš© 방법
 &μ—”ν‹°ν‹° λͺ…μΉ­;
2. 파라λΈν„° μ—”ν‹°ν‹°μ˜ μ‚¬μš© 방법
 %μ—”ν‹°ν‹° λͺ…μΉ­;
  • DTD λ˜λŠ” λ¬Έμ„œ μ„ μ–ΈλΆ€μ—μ„œ μ„ μ–Έν•˜λŠ” 방식(Entity Declaration)

1. μ™ΈλΆ€ μ—”ν‹°ν‹° μ„ μ–Έ 방법
<!ENTITY μ—”ν‹°ν‹° λͺ…μΉ­ SYSTEM "μ™ΈλΆ€ XML λ¬Έμ„œμ˜ URI">
<!ENTITY μ—”ν‹°ν‹° λͺ…μΉ­ PUBLIC Public_indentifier "μ™ΈλΆ€ XMLλ¬Έμ„œμ˜ URI">

2. λ‚΄λΆ€ μ—”ν‹°ν‹° μ„ μ–Έ 방법
<!ENTITY μ—”ν‹°ν‹° λͺ…μΉ­ "μ—”ν‹°ν‹° λ‚΄μš©">

3. 파라λΈν„° μ—”ν‹°ν‹°μ˜ μ„ μ–Έ 방법
<!ENTITY %μ—”ν‹°ν‹° λͺ…μΉ­ "μ—”ν‹°ν‹° λ‚΄μš©">

4. μ—”ν‹°ν‹°λΌ μ„ μ–Έν•΄μ„œ μ‚¬μš©ν•œ μ˜ˆλΌ λ“€μ–΄μ„œ μ•„λž˜μ™€κ°™μ΄
<!ENTITY chulsu "이철수(νƒ€μœ¨ 0.321 ν™ˆλŸ° 32 타점 60)">
  • μ™ΈλΆ€ μ—”ν‹°ν‹° : XMLλ¬Έμ„œμ˜ λΆ„λŸ‰μ΄ μƒλ‹Ήνžˆ μ»€μ„œ ν•˜λ‚˜μ˜ 파일둜 μ²˜λ¦¬ν•˜κΈ°κ°€ κ³€λž€ν•˜κ±°λ‚˜ ν• λ–„ μ μš©ν•˜κ±°λ‚˜ λͺ¨λ“ˆν™”ν•˜μ—¬μ•Ό ν• λ–„ μ‚¬μš©

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>
  • 파라λΈν„° μ—”ν‹°ν‹° : DTD λ¬Έμ„œ λ‚΄μ—μ„œ μ΄κ±°λ‚˜ XMLλ¬Έμ„œ λ‚΄μ—μ„œ XMLλ¬Έμ„œμ˜ 선언뢀인 <!DOCTYPE> λΆ€λΆ„κ³Ό 같은 μ—”ν‹°ν‹° μ„ μ–ΈλΆ€λ‚˜ μ—˜λ¦¬λ¨ΌνŠΈ μ„ μ–ΈλΆ€μ—μ„œλ§Œ μ‚¬μš©

파리λΈν„° μ—”ν‹°ν‹° μ„ μ–Έ 쀑 일뢀
<!-- 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-->
....

1.3. Public Identifier

"-//Textuality//Text Standard open-hatch boilerplate//EN"
Formal public Idenifer의 ꡬ성
1. -둜 μ‹œμž‘ν•˜λŠ”κ²ƒμ€ λ“±λ‘λ˜μ§€ μ•Šμ€ 쑰직을 말함 ISOμ—μ„œ μ œκ³΅ν•˜λŠ” 곡용 μ—”ν‹°ν‹°λŠ” ISO μ‚¬μš©
2. κ·Έλ‹€μŒ μŠ¬λž˜μ‹œ λ‘κ°œ λ‹€μŒμ— λ‚˜μ˜€λŠ”κ²ƒμ΄ κΈ°κ΄€λͺ… Textualityκ°€ κΈ°κ΄€λͺ…
3. κ·Έλ‹€μŒ μŠ¬λž˜μ‰¬ λ‘κ°œ λ‹€μŒμ— λ‚˜μ˜€λŠ”κ²ƒμ΄ 였브젝트 νƒ€μž„ μ—¬κΈ°μ„œλŠ” TEXT
4. κ·Έλ‹€μŒ 곡백뒀에 λ‚˜μ˜€λŠ” 것이 이 μ˜€λΈŒμ νŠΈμ—λŒ€ν•œ description
5. κ·Έλ‹€μŒ μŠ¬λž˜μ‰¬ λ‘κ°œ λ‹€μŒμ— λ‚˜μ˜€λŠ”κ²ƒμ€ μ–΄λ–€ μ–Έμ–΄λΌ μ‚¬μš©ν–ˆλŠ”μ§€ λ‚˜μ˜€λŠ”κ²ƒ EN은 μ˜μ–΄ KOλŠ” ν•œκΈ€
  • Public IdentifierλŠ” μ–΄λ””μ—μ„œ μ‚¬μš©λ˜λŠ”κ°€? : 곡용 μ—”ν‹°ν‹°λ‚˜ 곡용 DTDλΌ μ‚¬μš©ν•˜λŠ” κ²½μš°μ— PIκ°€ μ‚¬μš©λ¨

1.4. 문자 참쑰(Charater Reference)

  • λ¬ΈμžλΌ XML λ¬Έμ„œμ—μ„œ ν‘œμ‹œν•  λ•Œ μ‚¬μš©ν• μˆ˜ μžˆλŠ” 방법이 문자 μ—”ν‹°ν‹°λ‹€.
  • 문자 μ—”ν‹°ν‹° μ„ μ–Έ 방법

10μ§„μˆ˜μ˜ 경우 μ½”λ“œ 값이 n일 λ•Œ<!ENTITY name "&#n;">
16μ§„μˆ˜μ˜ 경우 μ½”λ“œ 값이 n일 λ•Œ<!ENTITY name "&@xn;">
*문자 μ—”ν‹°ν‹°λ‘œ μ„ μ–Έλœ μ—”ν‹°ν‹°λΌ μ°Έμ‘° ν•˜λŠ” 방법
&name;
*μ‚¬μš©μ˜ˆ
<?xml version="1.0" encoding="KSC5601"?>
<!DOCTYPE doc [
<!ENTITY nbsp "&#160;">
<!ENTITY pound "&#163;">
<!ENTITY yen "&#165;">
]>
<doc>
<title> &lt; 각&nbsp; &nbsp; &nbsp;ꡭ의&nbsp; &nbsp; &nbsp;톡화(영ꡭ &#38; 일본) &gt; </title>
<currency><country>영ꡭ</country><name>νŒŒμš΄λ“œ</name><unit>&pound;</unit></currency>
<currency><country>일본</country><name>μ—”</name><unit>&yen;</unit></currency>
</doc>

1.5. μ–΄νŠΈλ¦¬λ·°νŠΈ

  • μ—˜λ¦¬λ¨ΌνŠΈμ˜ νŠΉμ„±μ„ ν‘œν˜„ν•˜λŠ” μˆ˜λ‹¨μœΌλ‘œ 이용

<!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>

1.6. NOTATION

  • NOTATION은 Unparsed EntityλΌ μ²˜λ¦¬ν•˜κΈ° μœ„ν•œ λ°©λ²•μ΄λ‚˜ 아직은 λΈŒλΌμš°μ €μ—μ„œ 지원이 μ•ˆλ¨

1.7. CDATA μ„Ήμ…˜

 μ‚¬μš©λ°©λ²•
<![CDATA[CDATA에 ν•΄λ‹Ήν•˜λŠ” 데이터]]>
CDATA에 ν•΄λ‹Ήν•˜λŠ” λ°μ΄ν„°λŠ” νŒŒμ‹±ν•˜μ§€ μ•ŠμŒ

1.8. DTD

  • λ§ˆν¬μ—… 선언듀을 λͺ¨μ•„λ‘” 것이닀. λ§ˆν¬μ—… μ„ μ–Έμ—λŠ” μ—˜λ¦¬λ¨ΌνŠΈ μ„ μ–Έ,μ–΄νŠΈλ¦¬λ·°νŠΈ μ„ μ–Έ, μ—”ν‹°ν‹°μ„ μ–Έ,λ…Έν…Œμ΄μ…˜ 선언이 포함
  • λ³„λ‘œμ˜ νŒŒμΌμ— μ €μž₯된 DTD μ‚¬μš©κ°€λŠ₯ <!DOCTYPE doc SYSTEM "doc.dtd">

1.9. 반볡 μ§€μ‹œμž

  • ν”ŒλŸ¬μŠ€ 기호(+) : μš”μ†Œκ°€ μž„μ˜μ˜ 수만큼 λ°˜λ³΅ν•΄μ„œ λ‚˜νƒ€λ‚  수 μžˆλ‹€. 단, 적어도 ν•œ λ²ˆμ€ λ‚˜νƒ€λ‚˜μ•Ό ν•œλ‹€.(즉, μš”μ†Œκ°€ ν•œ 번 이상 λ‚˜νƒ€λ‚˜μ•Ό ν•œλ‹€.)
  • λ³„ν‘œ(*) : μš”μ†Œκ°€ 없을 수 μžˆλ‹€. 만일 μžˆλŠ” κ²½μš°λŠ” μž„μ˜μ˜ 수만큼 반볡될 수 μžˆλ‹€(즉, μš”μ†ŒλŠ” 0λ²ˆμ΄μƒ λ°˜λ³΅ν•΄μ„œ λ‚˜νƒ€λ‚œλ‹€).
  • λ¬ΌμŒν‘œ(?) : μš”μ†Œκ°€ 없을 수 μžˆλ‹€. 만일 μžˆλŠ” κ²½μš°λŠ” μš”μ†Œκ°€ 단 ν•˜λ‚˜λ§Œ μžˆμ–΄μ•Ό ν•œλ‹€(즉, μš”μ†ŒλŠ” μ—†κ±°λ‚˜ ν•˜λ‚˜λ§Œ μžˆμ–΄μ•Ό ν•œλ‹€.).



Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:28:27
Processing time 0.0377 sec