[웹 서비스 개발] XML DTD Attributes

김광일·2024년 9월 21일

웹 서비스 개발

목록 보기
11/45
post-thumbnail

1. Attribute types (속성 종류)

[0] 종류

  • CDATA
  • ENTITY
  • ID
  • IDREF
  • IDREFS
  • NMTOKEN
  • NMTOKENS

[1] ENTITY

1) 코드

<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="memoEntity.css"?>
<!DOCTYPE myMessage [
    <!ELEMENT myMessage ( message )>
    <!ELEMENT message ( #PCDATA )>
    <!ENTITY myEntityA "Entity Value A">
    <!ATTLIST message id CDATA #REQUIRED>
    <!ATTLIST message number CDATA #IMPLIED>
]>
<myMessage>
    <message id="445" number="123"> Welcome to XML! &myEntityA; </message>
</myMessage>

2) 사용 방법

(1) <!ENTITY 엔티티명 "엔티티 내용">
(2) & 기호를 사용하여 엔티티를 사용한다.

[2] ATTLIST

: DTD에서 속성은 요소에 대한 추가적인 정보를 제공하며, 해당 요소의 특징을 정의한다.

1) 사용법

(1) <!ATTLIST 요소이름 속성이름 속성타입 속성값>
: 요소의 이름은 해당 속성이 포함될 요소의 이름을 명시한다.

2) 속성의 타입 정의

  • CDATA : 문자 데이터 (Character DATA)
  • (속성값1|속성값2|...) : 나열된 리스트 중 하나에 해당
  • ID : 하나뿐인 아이디(id)
  • IDREF : 다른 요소의 아이디(id)
  • IDREFS : 다른 아이디(Id)의 리스트
  • NMTOKEN : 유효한 XML 이름
  • NMTOKENS : 유효한 XML 이름의 리스트
  • ENTITY : 엔티티
  • ENTITIES : 엔티티의 리스트
  • NOTATION : notation의 이름
  • xml: : 미리 정의된 예약어인 'xml'

3) 속성값 정의

  • #REQUIRED : 반드시 명시
  • #IMPLIED : 명시되도 되고, 명시되지 않아도 되고
  • #FIXED 값 : 명시된 값으로 고정

4) 예시

<!ATTLIST message id CDATA #REQUIRED>
: message 태그의, id 이름의 속성을, 문자 데이터로, 반드시 명시

[3] ID

: XML에서 고유한 식별자로 사용되는 데이터 타입

1) 규칙

  • 고유한 값: ID는 문서 내에서 고유해야 한다. 같은 문서 내에서 두 개 이상의 요소가 동일한 ID 값을 가질 수 없다.
  • 유효한 XML 이름: ID는 XML 이름 규칙을 따라야 한다. 알파벳, 하이픈(-), 밑줄(_), 마침표(.) 등을 포함할 수 있지만, 이름의 첫 글자는 알파벳이나 밑줄로 시작해야 한다.
  • 숫자로 시작 불가: 이름은 숫자로 시작할 수 없다.
  • 공백 불가: ID는 공백을 포함할 수 없다. 하나의 연속된 문자열이어야 한다.

2) 코드

<!DOCTYPE example [
  <!ELEMENT example (#PCDATA)>
  <!ATTLIST example id ID #REQUIRED>
]>
<example id="uniqueID123">Example content</example>

[4] IDREF

: XML에서 다른 요소의 ID 값을 참조하는 데이터 타입

1) 규칙

  • 유효한 참조: IDREF는 같은 문서 내에서 존재하는 ID 값을 참조해야 한다. 참조하는 ID가 실제로 존재하지 않으면 유효하지 않다.
  • 유효한 XML 이름: 참조하는 값도 유효한 XML 이름이어야 한다.
  • 숫자로 시작 불가: 참조하는 ID도 숫자로 시작할 수 없다.
  • 공백 불가: IDREF 값에는 공백이 허용되지 않는다. 하나의 연속된 문자열이어야 한다.

2) 코드

<!DOCTYPE example [
  <!ELEMENT example (#PCDATA)>
  <!ELEMENT reference EMPTY>
  <!ATTLIST example id ID #REQUIRED>
  <!ATTLIST reference ref IDREF #REQUIRED>
]>
<example id="uniqueID123">Example content</example>
<reference ref="uniqueID123" />

[5] IDREFS

: XML에서 여러 개의 ID 값을 참조하는 데이터 타입

1) 규칙

  • 여러 참조 가능: IDREFS는 여러 개의 ID 값을 공백으로 구분하여 참조할 수 있다.
  • 유효한 참조: 각 참조는 실제 문서 내에서 존재하는 ID 값이어야 한다. 존재하지 않는 ID는 참조할 수 없다.
  • 유효한 XML 이름: 각 참조하는 값은 유효한 XML 이름이어야 한다.
  • 숫자로 시작 불가: 참조하는 모든 ID 값은 숫자로 시작할 수 없다.
  • 공백으로 구분: 여러 개의 ID 값을 사용할 때는 공백으로 구분해야 한다.

2) 코드

<!DOCTYPE example [
  <!ELEMENT example (#PCDATA)>
  <!ELEMENT reference EMPTY>
  <!ATTLIST example id ID #REQUIRED>
  <!ATTLIST reference refs IDREFS #REQUIRED>
]>
<example id="id1">Example 1</example>
<example id="id2">Example 2</example>
<reference refs="id1 id2" />

[6] NMTOKEN

: XML에서 하나의 이름(Name)을 나타내는 문자열

1) 규칙

  • 하나의 토큰: 하나의 이름(토큰)만 허용된다.
  • 유효한 XML 이름: NMTOKEN에 포함된 문자열은 XML 이름 규칙을 따라야 한다.
    • 숫자, 알파벳, 하이픈(-), 밑줄(_), 마침표(.), 콜론(:) 등이 포함될 수 있다.
    • 이름의 첫 글자는 알파벳 또는 밑줄이어야 한다.
  • 숫자로 시작 불가: 이름은 숫자로 시작할 수 없다.
  • 공백 불가: NMTOKEN에는 공백이 허용되지 않는다. 하나의 연속된 문자열이어야 한다.

[7] NMTOKENS

: XML에서 공백으로 구분된 여러 개의 이름(Name)을 나타내는 문자열

1) 규칙

  • 여러 이름 사용: 공백으로 구분된 여러 개의 이름(토큰)을 사용할 수 있다.
  • 유효한 이름: 각 이름은 유효한 XML 이름 규칙을 따라야 한다.
    • 이름은 알파벳으로 시작해야 하며, 숫자, 하이픈(-), 밑줄(_), 마침표(.) 등을 포함할 수 있다.
  • 공백으로 구분: 여러 이름을 사용할 때는 반드시 공백으로 구분해야 한다.
  • 숫자로 시작 불가: 각 이름은 숫자로 시작할 수 없다. 알파벳으로 시작해야 한다.

[8] Enumerated DTD Attributes

: XML DTD에서 속성의 값으로 선택 가능한 값을 미리 정의하는 방식

1) 사용법

  • <!ATTLIST message select (yes | no) "no">
    • select: 속성의 이름
    • (yes | no): 선택 가능한 값
    • "no": 기본값

2) 규칙 (계속)

  • 선택 가능한 값 제한: 속성 값은 미리 선언된 목록 내에서만 선택할 수 있다. 예를 들어, (yes | no)로 선언된 경우 yes 또는 no만 사용 가능하며, 그 외의 값은 허용되지 않는다.
  • 기본값: 기본값이 지정된 경우, 해당 속성을 명시하지 않으면 기본값이 적용된다. 위 예시에서는 select 속성을 명시하지 않으면 "no"가 기본값으로 사용된다.
  • 선택값 정의: 선택할 값은 괄호 안에 나열하고, 각 값은 파이프(|)로 구분한다.

profile
안녕하세요, 사용자들의 문제 해결을 중심으로 하는 프론트엔드 개발자입니다. 티스토리로 전환했어요 : https://pangil-log.tistory.com

0개의 댓글