전체 페이지뷰

2017년 3월 20일 월요일

XML Attributes

Attribute는 element의 일부분입니다. 하나의 element는 여러 개의 attribute를 가질 수 있고, attribute는 element에 대해 더 많은 정보를 제공합니다. 더 정확하게 말하자면 attribute는 element의 property를 정의하며, 언제나 name-value 쌍을 이룹니다.

Syntax

XML attribute는 다음의 문법을 따릅니다.
<element-name attribute1 attribute2 >
....content..
< /element-name>
cs

attribute1과 attribute2 자리에는 다음과 같은 형식이 오게 됩니다.
name = "value"
cs

value는 큰 따옴표(" ")나 작은 따옴표(' ') 사이에 위치합니다. 여기서 attribute1, attribute2는 고유한 attribute 라벨입니다.

Attribute는 element에 고유한 라벨을 추가하거나, 라벨을 어떤 카테고리 내에 집어넣거나, ​​부울 플래그를 추가하거나, 다른 데이터 문자열과 연관시키는데 사용됩니다. 아래의 예는 attribute를 사용하는 예를 보여줍니다.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE garden [
   <!ELEMENT garden (plants)*>
   <!ELEMENT plants (#PCDATA)>
   <!ATTLIST plants category CDATA #REQUIRED>
]>
<garden>
   <plants category="flowers" />
   <plants category="shrubs">
   </plants>
</garden>
cs

attribute는 동일한 이름의 element를 구별하는데 사용됩니다. 모든 상황에 대해 새로운 element를 만들고 싶지 않을 때, attribute을 사용하여 좀더 자세한 정보를 추가하면 비슷한 다른 element를 구분하는데 도움이 됩니다.

위의 예에서 우리는 plants에 category라는 attribute를 포함시키고 두 개의 value들을 등록했습니다. 그래서 plants 내에 flowers와 shrubs라는 두개의 카테고리를 가지게 되었습니다.

또한 이 문서에서는 상단에 attribute들을 선언했음을 알 수 있습니다.(DTD 참고)

Attribute types

Attribute type 설명
StringType 리터럴 문자열을 value로 사용합니다. CDATAStringType인 문자 데이터 입니다. , 마크 업이 아닌 모든 문자열 또한 속성의 일부분입니다.
TokenizedType 이것은 보다 제한적인 타입입니다. validity constraintsattribute value가 정규화 된 이후에 적용됩니다. TokenizedType은 아래와 같습니다.
ID : element를 고유한 것으로 특정하기 위해 사용
IDREF : 다른 이름의 element ID를 참조하기 위해 사용
IDREFS : 모든 요소의 ID를 참조하기 위해 사용
ENTITY : attribute가 문서에서 한 개의 외부 entity를 표현한다는 것을 알려줌(entity에 대해서는 추후 설명)
ENTITIES : attribute가 여러 개의 entity를 표현
NMTOKEN : attribute의 데이터에 대한 제약조건 면에서 CDATA와 유사
NMTOKENS
EnumeratedType 미리 정의한 value list가 존재함. 주 종류가 있음
NotationType : element가 문서 내에서 선언된 NOTATION에 의해 참조될 것임을 선언
Enumeration : attribute value가 일치하는 특정 리스트를 정의하도록 해줌

(번역하면서도 무슨 말인지 감이 안 잡히는 것이 많네요. 일단 따라가 보겠습니다.)

Element Attribute rule

  • Attribute 이름은 같은 태그 내에 두번 이상 나타나면 안 됩니다.
  • Attribute는 Attribute-List 선언을 사용하여 DTD(Document Type Definition)에서 선언해야 합니다.
  • Attribute value에 외부 엔티티에 대한 직, 간접 참조가 들어가서는 안 됩니다.
  • 직간접적으로 attribute 내에서 참조된 entity의 대체 텍스트에는 "<" 기호가 들어가서는 안 됩니다.

댓글 없음:

댓글 쓰기