노테이션 (표기법)

XML 2018. 6. 19. 20:40

 - 노테이션 (Notation : 표기법) 이란?

 

문서에 외부의 XML이 아닌 소스로부터 오는 데이터가 필요하다는 선언이며,
파서가 아닌 다른 응용 프로그램에게 처리를 넘겨주는데 필요함.

 

데이터가 어떤 형식으로 작성되어 있는 가를 표시,

주로 XML을 처리하는 프로그램에게 외부 파일(그림, 동영상, 음악 등)의 형식을 알려주기 위해 사용된다.

 

노테이션은 구문 분석되지 않은 엔터티의 형식, 노테이션 특성이 포함된 요소의 형식

또는 처리 명령이 실행되는 응용 프로그램을 이름으로 식별한다.

 

 

 

 - 노테이션 선언 방법

<!NOTATION 표기법이름 SYSTEM "응용프로그램URL">

 - 표기법 이름의 쓰임새
 1. 처리 명령 목표
 2. 바이너리티 엔티티에서 NDATA 다음에 나오는 이름으로 사용
 3. NOTATION 타입을 가지는 속성의 속성값

 

 

 

 

참고 문헌 및 링크

 ADD-ON XML

 

노테이션 정의 참고 링크

http://blog.naver.com/PostView.nhn?blogId=javaking75&logNo=140161755193

 

 

'XML' 카테고리의 다른 글

처리 명령 (PI)  (0) 2018.06.19
엔티티  (0) 2018.06.19
애트리뷰트  (0) 2018.06.19
엘리먼트  (0) 2018.06.18
DTD 란?  (0) 2018.06.17
Posted by Resian
,

엔티티

XML 2018. 6. 19. 17:35

 - 엔티티(Entity) 란?
특수 문자 또는 자주 사용되는 정보들을 선언해 놓고 XML 문서나 DTD에서 참조하여 사용하는 것을 말함.

 

엔티티를 참조하게 되면 파싱을 할 때 그 엔티티 참조는 선언해 놓은 값으로써 대체되어 지며,
XML에서 엔티티는 문서의 단위이고 한 글자에서부터 문서 전체에 이르기까지
혹은 또 다른 문서에 대한 참조까지를 의미한다.

 

 - 엔티티의 분류

 1.사용 용도에 따른 엔티티
   - 일반 엔티티
   - 파라미터 엔티티 : DTD안에서만 사용하는 엔티티

      % 기호를 사용함으로써 일반 엔티티와 구별할 수 있다.
 
 2. 엔티티 값이 텍스트인지 이진 데이터인지에 따른 엔티티
   - 텍스트 엔티티 : 텍스트로 이루어져 있는 것.
   - 바이너리(Binary) 엔티티 : 텍스트가 아닌 그림 파일 같은 바이너리 데이터로 된 것.

 

 3. 선언된 장소에 따른 엔티티
   - 내부 엔티티 : 일반적으로 DTD 내에 정의함
   - 외부 엔티티 : 포함시킬 내용이 외부에 존재하는 것을 참조한 형태 

 

 


 - 엔티티 참조란?
파서에게 포함시키기를 원하는 문서의 위치를 알려주고 파서가 가져오는 것.

 

 


 - 내부 엔티티 선언 방법과 참조하는 방법.
 HTML 문서에서 '<'를 표시할때 &lt; 를 사용하는데 이것이 바로 엔티티를 참조하는 것이다.
예를 들어 수학 기호로 "A는 B보다 작다"라는 것을 표현하기 원한다면 "A<B"와 같이 쓰는 것이라 볼 수 있다.

 

 

<!ENTITY 엔티티이름 "값">   = 엔티티를 선언하는 방법

&엔티티이름;  = 엔티티를 참조하는 방법

 

예)
<!ENTITY myName "아무개"> 이라 선언했을 때
&myName;  으로 참조할 수 있다. 

 


! 엔티티 이름은 반드시 문자나 밑줄로써 시작하고 문자, 숫자, 점 (.), 하이픈 (-)을 포함할 수 있다. !

 

 

 

 - XML의 내장 엔티티들

마크업에 사용되는 문자를 표시하기 위해 내장됨.

 

엔티티 

표현 문자  

 &amp

 &

 &lt

 <

 &gt

 >

 &apos

 '

 &quote

 "

 

 

 

 - 외부 엔티티 선언 방법

위에서 언급된 myName이라는 것은 내부 엔티티이고,

외부 엔티티는 엔티티의 값이 엔티티를 선언하는 곳에서 존재하는 것이 아닌

외부의 파일로 존재하는 엔티티를 의미한다.

 

외부 엔티티를 사용하면 문서나 DTD 외부에 있는 자료를 불러들여 사용할 수 있다.

 

<!ENTITY myName SYSTEM "myname.txt"> 

 

엔티티 이름까지는 내부 엔티티와 동일하고 이 후 SYSTEM 키워드를 사용한다.

즉, 이름 다음에 나타나는 것은 엔티티가 존재하는 곳의 위치를 나타내는 URL이다.

 

필요에 의해 PUBLIC 식별자도 사용할 수 있다.

 

 

 

 - 바이너리 엔티티 선언 방법

위의 예시의 엔티티들은 텍스트 엔티티이다.

 

바이너리 엔티티는 외부 엔티티이며,

XML이나 DTD의 외부에 다른 파일로 존재하는 그림 파일 같은 바이너리 데이터를 말하는 것이다.

 

<!ENTITY 엔티티이름 SYSTEM "엔티티URL" NDATA 표기법이름> 

 

만약 그림 파일이라면 엔티티URL의 자리에 그림 파일의 경로명이나 URL을 쓰면 된다.

 

 

 

 - 파라미터 엔티티 선언 방법

DTD 안에서만 사용하는 엔티티로 외부 DTD에서만 정의할 수 있다.

DTD에서 여러 엘리먼트에 공통적으로 존재하는 속성을 한번만 선언하고 사용한다던가

다른 외부 DTD를 포함시키고 싶을 때 사용한다.

 

<!ENTITY % 엔티티이름 "값"> 

 

주의점 :  % 기호 다음에 반드시 한 칸 띄우고 엔티티 이름을 써야한다.

 

 

 - 파라미터 엔티티를 참조할 때  =  %엔티티이름;

 

 

예)

<!ENTITY name (#PCDATA)>

<!ENTITY % e_name "name">

이라 선언 되었을 때

 

<!ENTITY person ( %e_name;, phone, address )>

<!ELEMENT company ( %e_name; )>

로 참조할 수 있다. 

 

 

 

 - 파라미터 엔티티로 외부 엔티티 사용 선언 방법

DTD 에서 다른 외부 DTD를 포함시켜 사용하고자 할 때 사용한다.

 

<!ENTITY % small_dtd SYSTEM "small.dtd">

%small_dtd; 

 

small.dtd는 예를 들어 가정한 외부 DTD이다.

 

 

 

 - 파라미터 엔티티의 장점과 단점.

 개발자가 옛 DTD를 쉽게 재사용 할 수 있고, 기존 DTD를 쉽게 확장할 수 있다.

 

하지만 파라미터 엔티티는 본래 DTD를 조직적으로 구성하기 위해 만들어진 것임으로

잘못 사용하면 파라미터 엔티티를 사용한 DTD를 다른 사람이 읽어볼 때 읽기 어려워 진다.

 

 

 

참고 문헌 및 링크

 ADD-ON XML

 클릭하세요 XML

 자바 개발자를 위한 XML

 

'XML' 카테고리의 다른 글

처리 명령 (PI)  (0) 2018.06.19
노테이션 (표기법)  (0) 2018.06.19
애트리뷰트  (0) 2018.06.19
엘리먼트  (0) 2018.06.18
DTD 란?  (0) 2018.06.17
Posted by Resian
,

애트리뷰트

XML 2018. 6. 19. 16:23

 - 애트리뷰트 (Attributes : 속성)란?
엘리먼트의 특성을 표현하기 위해서 쓰여지는 정보를 의미함.


즉, XML 문서의 속성을 선언하기 위해 사용되는 원소이며, 

엘리먼트의 부가적인 정보를 제공하는 것으로 특히 사람에게 보여주기보다는
프로그램 내부에서 처리되기 위한 정보들을 저장하는데 매우 유용하다.

 


 - 형태
<애트리뷰트 이름 = "애트리뷰트 값">


 

<!ATTLIST 엘리먼트 이름
               속성이름 타입 기본 값
                (속성이름 타입 기본 값 ...)> 

 


ATTLIST 다음에 소석을 정의하기 원하는 엘리먼트의 이름, 속성 이름, 속성 타입, 기본값의 순서로 정의됨.
여러개의 속성을 정의할 경우 새로운 속성의 이름, 속성 타입, 기본값을 계속 추가하면 됨.

 

속성의 이름에 대한 규칙은 엘리먼트 이름에 대한 규칙과 동일하다.

 

 

 - 속성의 타입

 

타입 

설명 

 CDATA

 문자 데이터 마크업은 이 속성값 안에서 쓸 수 있다.

 ID

 속성값이 엘리먼트를 식별하는 식별자로 사용된다.

 한 문서에서 ID 타입의 속성은 각각 유일해야 한다.

 IDREF

 위의 ID 값에 대한 참조를 하는 속성값이다.

 ENTITIY, ENTITIES

 이 타입의 속성값은 DTD안에서 선언된 바이너리 외부 엔티티에 대한 이름이다.

 ENTITIES 타입은 공백으로 분리된 엔티티 이름들이다.

 NOTATION

 이 타입의 속성값은 DTD 안에서 선언된 표기법 이름이다.

 열거형

 속성값이 괄호 안에 or( | ) 기호로 나열된 값들 중 하나여야 한다.

 예를 들면 (left | center | right)와 같다.

 NOTATION(열거형)

 속성값이 나열된 표기법 이름들 중 하나여야 한다.

 나열된 표기법들은 NOTATION 선언이 있어야 한다.

 NOTATION (audio | video)

 

 보통 가장 많이 사용하는 속성의 타입은 CDATA와 열거형이다.

 

 

 - CDATA?

전혀 파싱되지 않은 문자 데이터

 

 

 - 속성의 기본값

 

값 

 설명

 "기본값"

 속성을 위한 기본값이다.

 만약 문서의 엘리먼트에서 이 속성을 지정하지 않으면

 그 속성값은 이 기본값으로 인식된다.

 #REQUIRED

 엘리먼트에서 속성을 쓸 때 반드시 값을 지정해야 한다.

 그렇지 않으면 파싱할 때 에러가 난다.

 #IMPLIED

 속성에 값이 지정되어 있지 않으면 무시한다.

 이 속성에 대한 처리는 파서가 아닌 응용 프로그램이 하게 된다.

 #FIXED "값"

 속성에 대한 값으로 "값"만을 지정해야 한다.

 다른 값은 허용되지 않는다.

 

 속성 리스트에 대한 선언은 엘리먼트 이름이 나오기 때문에 기술적으로는 그럴 필요가 없다 하더라도

참조하는 엘리먼트 바로 밑에 있어야 한다.

 

 

 - 엘리먼트와 애트리뷰트에서 use 속성들을 사용한 예시

속성을 선언할 때 속성 값을 항상 기술해야 하는지 혹은 생략할 수 있는지 여부는

use 속성을 이용해서 기술할 수 있다.

 

 

 - use 속성 값

"optional"

"required"  =  속성의 디폴트 값을 지정하기 위해 사용

"fixed"       = 고정된 속성 값을 기술하기 위해 사용

 

 

엘리먼트(원소) 

애트리뷰트(속성) 

  의미 

(minOccurs, maxOccurs)fixed, default

use, fixed, default

 (1,1)-,-

 required, -, - 

 원소와 속성 모두 하나씩 존재하여야 한다.

 (1,1)37,-

 required, 37, -

 원소와 속성이 모두 하나씩 존재하고,

 값은 37이어야 한다.

 (2, unbounded)37,-

 N/A

 원소는 2번 이상 존재하여야 하고,

 값은 37이어야 한다.

 (0,1)-,-

 optional, -, -

 원소와 속성이 한 번 올 수 있다.

 (0,1)37,-

 optional, 37 ,-

 원소와 속성이 한 번 올 수 있고,

 존재한다면 항상 37 값을 가져야 한다.

 (0,1)-,37

 optional, - ,37

 원소와 속성이 한 번 올 수 있고,

 존재하지 않는다면 디폴트로 37 값을 갖는다.

 (0,2)-,37

 N/A

 원소는 0~2번까지 올 수 있으며,

 존재하지 않는 경우 디폴트로 37 값을 갖는다.

 (0,0)-,-

 prohibited, -, -

 원소와 속성이 존재해서는 안된다.

 

 

 

참고 문헌 및 링크

 ADD-ON XML

 클릭하세요 XML

 자바 개발자를 위한 XML

 

'XML' 카테고리의 다른 글

노테이션 (표기법)  (0) 2018.06.19
엔티티  (0) 2018.06.19
엘리먼트  (0) 2018.06.18
DTD 란?  (0) 2018.06.17
XML의 응용들  (0) 2018.06.16
Posted by Resian
,