XML 속성(Attributes)은 보통 XML 요소를 설명하기 위해 또는 요소에 대한 부가 정보를 제공하기 위해 사용된다. HTML에서 다음과 같은 내용을 보면 쉽게 알 수 있을 것이다:

 

<IMG SRC="computer.gif">. 이 예에서 SRC는 IMG 요소의 속성이다. SRC 속성은 IMG 요소에 대한 부가 정보를 제공해주는 역할을 한다.

 

속성은 하나의 요소안의 (속성이름="값")의 쌍이며, 언제나 요소의 시작 태그 안에 포함되어 있어야 한다. 다음은 그 예이다:

 

HTML 예: <img src="computer.gif"> <a href="demo.asp">
XML 예: <file type="gif"> <person id="3344">


속성은 반드시 값을 가져야 한다.  그리고 값은 반드시 따옴표('' or "")로 묶어 주어야 한다.
속성이름을 작성하는 규칙은 요소작성 규칙과 동일하다. 하나의 요소 안에서는 속성의 이름은 유일해야 한다.

<이름 nickname=King nickname=King2 >박용운</이름> //에러발생

 

대부분 속성은 XML 문서 내용에 포함되어 있지 않은 정보를 제공하기 위해 사용된다. 즉, 속성은 요소의 특성을 나타내 준다고 볼 수 있다. 이 말을 다른 말로 표현하자면, 속성은 종종 독자들에게보다는 XML을 해석하는 해석기(파서, parser)에게 더 중요하다. 어쨋든 위의 예에서 person id는 독자들과는 별 상관 없는 숫자이지만 person 요소를 처리할 소프트웨어에게는 상당히 중요한 의미를 가진다는 것이다.

 

요소(element)와 속성(Attributes)의 사용

 

다음 예를 살펴 보자:

성별 구분을 위해 "속성"을 사용하는 방법: 
<person sex="female">
<firstname>다니엘</firstname>
<lastname>조</lastname>
</person>
 성별 구분을 위해 "요소"를 사용하는 방법:
<person> 
<sex>female</sex>
<firstname>다니엘</firstname>
<lastname>조</lastname>
</person>

 

첫 번째 예에서 sex는 속성이다. 두 번째 예에서 sex는 요소이다. 두 가지 예 모두 독자들에게는 같은 정보를 제공한다.

 

데이터를 기술하기 위해 "요소"를 사용해야 할지 "속성"을 사용해야 할지에 대한 특별한 규칙은 없다. 하지만 경험에 비추어보면, HTML에서는 "속성"을 사용하는 것이 간편하고 XML에서는 "요소"로 그 데이터를 표현할 수 있다면 "속성" 사용을 피해야 한다.

 

또 다른 예를 살펴 보자. 이 예는 "속성" 대신 어떻게 "요소"를 사용하는지에 대한 것이다. 이 예에 포함된 3개의 문서는 모두 동일한 정보를 갖고 있다. 첫 번째 문서에서는 date가 "속성"이고 두 번째 문서에서는 date가 "요소"이며 세 번째 문서에서는 date가 확장된 "요소"이다:

 

<?xml version="1.0"?> 
<note date="12/11/99">
<to>철수</to>
<from>다니엘</from>
<heading>잊지말 것!</heading>
<body>이번 주 약속 잊지말길...</body>
</note>
<?xml version="1.0"?> 
<note> <date>12/11/99</date>
<to>철수</to>
<from>다니엘</from>
<heading>잊지말 것!</heading>
<body>이번 주 약속 잊지말길...</body>
</note>
<?xml version="1.0"?>
<note>
<date>
<day>12</day>
<month>11</month>
<year>99</year>
</date>
<to>철수</to>
<from>다니엘</from>
<heading>잊지말 것!</heading>
<body>이번 주 약속 잊지말길...</body>
</note>

 

"속성" 사용을 피하는 이유

 

왜 "속성" 사용을 피해야 하는가? "속성"을 사용하게 되면 다음과 같은 문제점들이 있다:

  • "속성"은 여러 개의 값을 가질 수 없다 ("요소"는 가능하다)
  • "속성"은 확장되기가 어렵다 (향후 변경시)
  • "속성"은 구조를 기술할 수 없다 ("요소"는 "자식요소"를 사용할 수 있다)
  • "속성"을 이용해 프로그래밍 하기가 좀 더 어렵다
  • "속성" 값은 DTD에 대해 시험하기가 쉽지 않다

만일 XML 데이터를 보관하기 위해 "요소" 대신 "속성"을 사용하기 시작하면 유지하기도 어렵고 그 데이터를 처리하기도 어려워진다. 여기서 계속 얘기하고자 하는 것은 데이터를 기술하기 위해서는 "속성" 대신 "요소"를 사용하라는 것이다. "속성"은 독자와는 상관 없는 정보를 제공할 경우에만 사용하길 바란다. 다음과 같은 사용은 자제해 주기 바란다:

 

<?xml version="1.0"?>
<note day="12" month="11" year="99" to="철수" from="다니엘"
heading="잊지말 것!" body="이번 주 약속 잊지말길..."> </note>

 

속성을 사용하는 또 다른 경우

 

"속성"은 독자와는 상관 없는 정보를 제공할 경우에만 사용하라고 하였는데 이 외에 다음과 같은 경우에도 사용할 수 있다:

 

XML 문서에서 어떤 요소에 접근하기 위해 ID를 할당하는 경우가 있다. HTML에서 NAME이나 ID 속성을 사용하는 경우와 동일하다. 다음 예를 한번 보자:

 

<?xml version="1.0"?>
<messages>
<note ID="501">
<to>철수</to>
<from>다니엘</from>
<heading>잊지말 것!</heading>
<body>


출처 : http://blog.naver.com/tear230/100004179475

+ Recent posts