Applet 오브젝트(object), 이미지와 애플렛(applet)

황제낙엽 2010.12.07 14:31 조회 수 : 110 추천:75

sitelink1 http://trio.co.kr/webrefer/html/struct/objects.html 
sitelink2  
sitelink3  
sitelink4  
sitelink5  
sitelink6  

13.1 오브젝트(object), 이미지와 애플렛(applet) 소개

HTML의 멀티메디아(multimedia) 기능으로 제작자는 페이지에 이미지, 애플렛(applet: 자동적으로 사용자 기계에 다운로드 되어 작동하는 프로그램), 비디오 조각(video clip)과 기타 HTML 문서를 포함 시킬 수 있다.

예를 들어, PNG 이미지를 문서에 포함 시키기 위하여, 제작자는 다음과 같이 쓸 수 있다.

<BODY>
 <P>그랜드 캐년의 근접 사진이 여기에 있다.
 <OBJECT data="canyon.png" type="image/png">이것이 그랜드 캐년의
	<EM>근접 사진</EM>이다.</OBJECT>
</BODY>

이전 HTML의 버전에서 제작자가 IMG를 통 해 이미지를, APPLET을 통 해 애플렛를 포함 시킬 수 있었다. 이들 엘레멘트는 다음 몇가지 제한이 있다.

  • 새로운 향 후의 메디아(media) 타입을 어떻게 포함시킬 것인가 하는 아주 일반적인 해결 방법이 없다.
  • APPLET 엘레멘트는 자바(Java-based) 애플렛으로만 작용한다. 이 엘레멘트는 불량한 것고 OBJECT가 선호된다.
  • 접속성 문제를 야기시킨다.

이 문제들을 위하여 HTML 4.01은 오브젝트 포함의 모든 목적 해결책을 제공하도록 OBJECT 엘레멘트를 도입했다. OBJECT 엘레멘트는 HTML 제작자가 사용도구에 의하여 표현되는 오브젝트에 필요 한 원본 코드, 최초값들과 작동(run-time) 데이터 등 모든 것을 지정 할 수 있게 한다. 이 규격에서, 용어 "오브젝트"(object)는 사람들이 HTML 문서 안에 위치 시키기를 원하는 것들을 기술하는데 사용 되고, 이것들을 위해 일반적으로 사용되는 용어로 애플렛(applet), 플러그인(plug-in), 메디아 핸들러(media handler) 등이 있다.

이 새로운 OBJECT 엘레멘트는 과거의 엘레멘트가 수행하는 임무의 일부를 포함한다. 다음 기능 도표를 보라.

포함 된 타입 구체적(specific) 엘레멘트 일반적(generic) 엘레멘트
이미지 IMG OBJECT
애플렛 APPLET (불량한)것이다. OBJECT
다른 HTML 문서 IFRAME OBJECT

이 도표는 포함(inclusion) 된 각 타입은 구체적(specific) 해법과 일반적(general) 해법을 갖는다. 일반적 OBJECT 엘레멘트는 미래의 메디아 타입들에 대한 해결책으로 사용 될 것이다.

이미지를 포함 하기 위하여, 제작자는 이 OBJECT 엘레멘트 또는 IMG 엘레멘트를 사용 할 수 있다.

애플렛을 포함 하기 위하여APPLET 엘레멘트는 불량한 것이기 때문에, 제작자는 OBJECT 엘레멘트를 사용하여야 한다.

HTML 문서에 다른 문서를 포함 하기 위하여, 제작자는 새로운 IFRAME 엘레멘트 또는 OBJECT 엘레멘트를 사용 할 수 있다. 양 쪽 다 깔린(embedded) 문서는 주된 문서와 독립적이다. 보는 사용도구는 주 된 문서 안에서 구별 되는 창(window)에 깔린 문서를 표현 할 수 있다. 문서 포함에서 OBJECT 와 IFRAME을 비교하기 위하여 깔린 문서에 대한 주석을 참조하라.

이미지와 다른 포함 된 오브젝트는 관련 된 하이퍼링크를 가질 수 있는데, 두가지 다 표준 연결 기능을 통하여, 또는 이미지맵을 통하여 연결 시킨다. 이미지맵은 포함 된 오브젝트의 활성 지역들을 지정하고, 각 지역의 연결을 지정한다. 활성화 되면 이들 연결은 문서의 읽어 표현하게 되거나 서버의 프로그램을 돌린다.

아래에는 멀티메디아를 포함시키고, 이들 포함 사항들을 위한 이미지맵을 만드는, 제작자가 사용 할 수 있는 다양한 기능을 다루었다.

13.2 이미지 포함: IMG 엘레멘트(element)

<!-- 텍스트 만 보는 사용도구에서 문제 발생을 피하고, 이미지 내용을 알아 볼 수
	있게하고, 사용자가 보이지 않는 사용도구로 항해하기 위해, ALT로 설명하고,
	서버측(server-side) 이미지맵의 사용을 회피 할 필요가 있다. -->
<!ELEMENT IMG - O EMPTY               -- 깔린(Embedded) 이미지 -->
<!ATTLIST IMG
 %attrs;                              -- %coreattrs, %i18n, %events --
 src         %URI;          #REQUIRED -- 깔릴 이미지의 URI --
 alt         %Text;         #REQUIRED -- 짧은 설명 --
 longdesc    %URI;          #IMPLIED -- 긴설명에 연결(alt 보완) --
 name        CDATA          #IMPLIED -- 스크립팅(scripting)을 위한 이미지 이름--
 height      %Length;       #IMPLIED  -- 높이 덮어 씌움(override) --
 width       %Length;       #IMPLIED -- 너비 덮어 씌움 --
 usemap      %URI;          #IMPLIED -- 사용자측(client-side) 이미지맵의 사용 --
 ismap       (ismap)        #IMPLIED  -- 서버측(server-side) 이미지맵의 사용 --
>

시작태그: 필요 함, 종료태그: 사용 금지

애트리뷰트의 정의

src = uri [대소문자 타입 참조: CT]
이 애트리뷰트는 이미지 자원의 위치를 지정한다. 널리 알려진 이미지 양식은 GIF, JPEG와 PNG를 포함한다.
longdesc = uri [대소문자 타입 참조: CT]
이 애트리뷰트는 이미지에 대 한 긴설명의 연결을 지정한다. 이 긴설명은 alt 애트리뷰트로 제공 된 짧은 설명을 보완하여야 한다. 이미지가 이미지맵과 연관 된 때에는, 이 애트리뷰트는 이 이미지맵의 내용에 대 한 정보를 제공한다. 이는 서버측(server-side) 이미지맵에서 특히 중요하다. IMG가 A 엘레멘트의 내용(content) 중 일 부분일 수 있으므로, 사용도구들가 IMG의 긴설명("longdesc")의 자원에 접속하는 기능(mechanism)은 A 엘레멘트의 내용(content)의 자원에 접속하는 기능과는 달라야 한다.
name = cdata [대소문자 구별 없이: CI]
이 애트리뷰트는 엘레멘트에 이름을 주어 스타일쉬트나 스크립트에서 참조 할 수 있게 해 준다.
주석. 이 애트리뷰트는 과거 버전 부합성을 위해 포함되었다. 새로운 사용은 엘레멘트들을 지정하기 위하여 id 애트리뷰트를 사용하여야 한다.

IMG 엘레멘트는 현재 문서의 엘레멘트를 정의 한 위치에 이미지가 깔리게 한다. IMG 엘레멘트는 내용을 가지고 있지 않다. src 애트리뷰트에 의하여 지정 된 이미지로 인라인에 들어가는 것이 보통이다. 예외로는 왼쪽 혹은 오른쪽으로 정렬 된 줄 밖의 유동("floated") 이미지들이 있다.

가족 사진으로 연결을 지정 한 위 예제에서 사진을 직접 현재 문서에 연결시켰다.

<BODY>
 <P>나는 방금 휴가로 부터 돌아 왔다! 여기에 호수가에서의 우리 가족 사진
 <IMG src="http://www.somecompany.com/People/Ian/vacation/family.png"
    alt="호수가에서의 우리 가족 사진">
</BODY>

이 포한은 OBJECT 엘레멘트를 사용하여 다음과 같이 할 수도 있다.

<BODY>
 <P>나는 방금 휴가로 부터 돌아 왔다! 여기에 호수가에서의 우리 가족 사진
 <OBJECT data="http://www.somecompany.com/People/Ian/vacation/family.png"
   type="image/png">호수가에서의 우리 가족 사진
</OBJECT>
</BODY>

alt 애트리뷰트는 이미지가 표시 될 수 없을 때 나타 날 대체(alternate) 텍스트를 설정한다(대체 텍스트 설정 방법 참조). 사용도구는 이미지 타입을 지원 할 수 없거나 이미지가 디스플레이 되지 않도록 설정 되었을 때 등 이미지를 지원 할 수 없을 때, 대체(alternate) 텍스트를 표시하여야 한다.

longdesc 애트리뷰트로 풍부 한 설명에 연결 시키는 방법을 설명 한 예제:

<BODY>
 <P><IMG src="sitemap.gif"  alt="HP Labs Site Map"  longdesc="sitemap.html">
</BODY>

alt 애트리뷰트는 짧은 이미지의 설명을 제공하는데, 이는 사용자가 longdesc 애트리뷰트로 제공하는 자세 한 설명(여기서는 "sitemap.html")에 연결시켜 볼 것인가를 결정한다.

이미지의 크기(size), 정렬(alignment)와 테두리(border)에 대 한 정보는 오브젝트, 이미지와 애플렛의 보는 표현을 참조하라.

13.3 일반적 포함: OBJECT 엘레멘트

<!ELEMENT OBJECT - - (PARAM | %flow;)*
-- 일반적(generic) 깔린(embedded) 오브젝트(object) -->
<!ATTLIST OBJECT
 %attrs;                              -- %coreattrs, %i18n, %events --
 declare     (declare)      #IMPLIED  -- 선언되나 즉시화가 되지 않음 --
 classid     %URI;          #IMPLIED  -- 작용 지정 -
 codebase    %URI;          #IMPLIED  -- classid, data, archive의 기준 URI --
 data        %URI;          #IMPLIED  -- 오브젝트 데이터 참조 --
 type        %ContentType;  #IMPLIED  -- 데이터 컨텐트 타입(content type) --
 codetype    %ContentType;  #IMPLIED  -- 코드(code) 컨텐트 타입 --
 archive     CDATA          #IMPLIED  -- 공간 글자로 분리된 URI들의 목록 --
 standby     %Text;         #IMPLIED  -- 로딩 중 보이는 메세지 --
 height      %Length;       #IMPLIED  -- 높이 덮어 씌우기(override) --
 width       %Length;       #IMPLIED  -- 너비 덮어 씌우기 -
 usemap      %URI;          #IMPLIED  -- 시용자(client-side) 이미지맵 사용 --
 name        CDATA          #IMPLIED  -- 폼(form)의 부분에서 발송(submit) --
 tabindex    NUMBER         #IMPLIED  -- 탭(tab) 순서에서의 위치 --
>

시작태그: 필요 함, 종료태그: 필요 함

애트리뷰트의 정의

classid = uri [대소문자 타입 참조: CT]
이 애트리뷰트는 URI를 통하여 적용되는 오브젝트의 위치를 지정하는데 사용된다. 오브젝트의 종류(type)에 따라 data 애트리뷰트와 같이 혹은 대체(alternative)하여 사용 될 수 있다.
codebase = uri [대소문자 타입 참조: CT]
이 애트리뷰트는 classiddata와 archive 애트리뷰트로 지정 된 상대 URI를 산정하기 위한 기본 경로을 설정한다. 이것이 있으면, 디폴트 값은 현재 문서의 기준 URI이 된다.
codetype = content-type [대소문자 구별 없이: CI]
이 애트리뷰트는 classid에 의하여 지정 된 오브젝트를 다운로드 할 때, 예상되는 데이터의 컨텐트 타입(content type)을 지정한다. 이 애트리뷰트는 선택적이지 만, 이는 사용도구가 지원하지 않는 컨텐트 타입을 로딩하지 않게 하므로, classid가 지정 되었을 경우, 이의 사용을 추천한다. 이것이 있으면 type 애트리뷰트의 값은 디폴트 값이된다.
data = uri [대소문자 타입 참조: CT]
이 애트리뷰트는 오브젝트 데이터의 위치를 지정하는데 사용된다. 예를 들어 이미지를 지정하는 오브젝트의 이미지 데이터를 위하여, 또는 더 일반적으로, 이미지를 다시 생성하게 하는 오브젝트의 일련(serialized)의 폼에 사용 될 수 있다. 만일 상대 URI로 주어 졌다면, codebase 애트리뷰트에 대 해 상대적으로 해석한다.
type = content-type [대소문자 구별 없이: CI]
이 애트리뷰트는 data에 의 해 정의 된 데이터의 컨텐트 타입을 지정한다. 이 애트리뷰트는 선택적이지 만, 이는 사용도구가 지원하지 않는 컨텐트 타입을 로딩하지 않게 하므로, data가 지정 되었을 경우 사용하는 것을 추천한다. 오브젝트을 받았을 때(retrieved), 이 애트리뷰트의 값이, 서버에 돌아온 Content-Type HTTP 헤더(header)와 다르면, Content-Type HTTP 헤더(header)가 적용된다.
archive = uri list [대소문자 타입 참조: CT]
이 애트리뷰트는 classid와 data 애트리뷰트로 지정 된 자원을 포함(include) 시킬 수 있게 하는 오브젝트들을 갖는 공간 글자로 분리되는 URI 목록을 지정하는데 사용된다. 사전 로딩은 일반적으로 오브젝트의 로딩 시간을 단축시킨다. 상대 URI로 지정 된 값은 codebase 애트리뷰트에 대 해 상대적으로 해석되어야 한다.
declare = [대소문자 구별 없이: CI]
이 것이 있으면, 이 불린(boolean) 애트리뷰트는 현재 OBJECT 정의를 단지 선언적으로 만든다. 이 오브젝트는 뒤에 나오는 OBJECT 정의에 의하여 이 선언을 참조하고, 즉시 작용하게(instantiate) 하여야 한다.
standby = text [대소문자 구별: CS]
이 애트리뷰트는 사용도구가 오브젝트의 적용과 데이터를 로딩하는 동안 표시 될 메세지를 설정한다.

대부분의 사용도구는 자체내에 텍스트, GIF 이미지, 색상, 폰트와 그래픽 엘레멘트 등 일반적인 데이터 타입을 표현하는 기능을 갖는다. 사용도구가 지원하지 않는 테이터 타입을 표현하기 위하여, 일반적으로 외부의 기능에 돌린다. OBJECT 엘레멘트는제작자 로하여금 외부로 또는 프로그램을 돌릴 것인지를 지정 할 수 있게 한다.

대부분의 일반적인 경우, 제작자 다음 세가지 종류의 정보를 지정 할 필요가 있다.

  • 포함 된 오브벡트의 적용. 예를 들어 만일 포함 된 옵젝트가 시계 애플렛이면, 제작자는 그 애플렛의 실행 코드(code)의 위치를 지정하여야 한다.
  • 표현 될 데이터. 예를 들어 만일포함 된 오프젝트가 폰트 데이터를 표현하는 프로그램이면, 제작자는 그 데이터의 위치를 지정하여야 한다.
  • 작업 중(run-time) 오브젝트에게 필요 한 추가적인 값. 예를 들어, 일부 애플렛들은 파라메터(parameter)의 최초 값을 필요로 할 수 있다.

OBJECT 엘레멘트는 제작자가 모든 세 타입 데이터를 지정 할 수 있게 하지만, 이 모든 세 타입을 한번에 지정 할 필요는 없다. 예를 들어, 작은 애니메이션(animation)을 수행하는 자체 포함 애플렛 등 일부 오브젝트는 이것이 필요하지 않을 수 있다. 다른 것들은 시동 초기화를 필요로 하지 않을 수 있다. 또 다른 것들은 추가적인 적용 정보를 필요로 하지 않을 수 있다. 말하자면 GIF 이미지등에서와 같이 사용도구가 이 타입의 데이터를 어떻게 표현 할 것인가를 이미 알고 있을 수 있다.

제작자는 OBJECT 엘레멘트를 통하여 오브젝트의 적용과 표현 될 데이터의 위치를 지정한다. 그러나, 작동 시의 값을 지정하기 위하여, 제작자가 오브젝트 초기화에 설명 된 바와 같이 PARAM 엘레멘트를 사용한다.

OBJECT 엘레멘트는 HEAD 엘레멘트의 내용에도 나타날 수 있다. 사용도구는 일반적으로 HEAD에 있는 엘레멘트를 표현하지 않기 때문에, 제작자는 HEAD 내의 OBJECT 엘레멘트에는 표현 될 수 있는 내용을 지정하지 않는다는 것을 알아야한다. HEAD 엘레멘트 안에 OBJECT 엘레멘트를 포함한 예제는 프레임 데이터의 공유를 참조하라.

폼(form)에 있는 OBJECT 엘레멘트에 대해서는 폼의 제어를 참조하라.

이 규격은 적용(implementation)을 인식(identify)하는 classid 애트리뷰트와 그 적용 데이터를 지정하는 data 애트리뷰트를 OBJECT 엘레멘트들의 작용에 정의하지 않았다. 제작자들은 확실 한 작용을 위하여, 적용하는데 어디에서 추가적인 데이터를 읽어 올 것인가를 알려주기 위하여, PARAM 엘레멘트를 사용하여야 한다.

13.3.1 오브젝트(object) 표현의 규칙

사용도구는 OBJECT를 해석하는데 다음과 같은 순서로 해야한다.

  1. 사용도구는 제일 먼저 오브젝트의 표현을 시도하여야 한다. 엘레멘트의 내용을 표현하면 않되지만, 엘레멘트가 직접적인 자손(children)인 PARAM 엘레멘트(오브젝트 초기화 참조) 혹은 MAP 엘레멘트(사용자측 이미지맵 참조)을 갖을 경우, 그 내용을 점검하여야 한다.
  2. 사용도구가 표현하지 않도록 구성되었거나, 자원이 부족하거나, 잘 못 된 구조를 갖는 등 어떤 이유에서건 오브젝트를 표현 할 수 없으면, 그 내용의 표현의 시도하여야 한다.

제작자는 HEAD 엘레멘트 안의 OBJECT 엘레멘트에 내용을 포함시키지 않아야한다.

다음 예제에, 문서 안에 OBJECT 엘레멘트를 통하여 아나로그 시계 애플렛을 포함 시켰다. Python 언어로 쓰여진 이 애플렛은 추가적인 데이터나 작동 값을 필요로 하지 않는다. classid 애트리뷰트는 애플렛의 위치를 지정한다.

 <OBJECT classid="http://www.miamachina.it/analogclock.py"></OBJECT>

사용도구가 이 OBJECT 선언을 해석하는 즉시 시계는 표형으로 표현 될 것이다. 이 오브젝트에 먼저 선언 함으로서 표현을 지연(아래 설명) 시킬 수 있다.

제작자는 사용도구가 기계를 표현하지 못하는 경우를 대비하여 선언에 OBJECT의 내용을 대체(alternate) 텍스트로 포함 시켜야한다.

<OBJECT
  class id="http://www.miamachina.it/analogclock.py">애니메이션 시계</OBJECT>

OBJECT 엘레멘트 디자인의 한 중요한 효과는 오브젝트의 대체 표현을 지정하는 기능을 제공하는 것이다. 각 깔린(embedded) OBJECT 선언에서 대체(alternate) 컨텐트 타입를 지정 할 수 있다. 만일 사용도구가 최상위의 OBJECT를 표현 할 수 없으면, 다른 OBJECT 엘레멘트 등 그 내용의 표현을 시도한다.

다음 예제에서는, 몇 개의 OBJECT 선언을 하였을 때 어떻게 대체 표현이 작용하는가를 설명한다. 사용도구는 다음의 순서로 첫번째 OBJECT 엘레멘트의 표현을 시도 할 것이다.

  1. Python 언어로 쓰여진 지구 애플렛
  2. MPEG 애니메이션 지구
  3. GIF 이미지 지구
  4. 대체(alternate) 텍스트
<P>	<!-- 맨 먼저, Python 언어로 쓰여진 지구 애플렛 시도 -->
<OBJECT title="우주에서 본 지구" 
	classid="http://www.observer.mars/TheEarth.py">
 	<!-- 아니면, MPEG 애니메이션 지구 시도 -->
 <OBJECT data="TheEarth.mpeg" type="application/mpeg">
   	<!-- 아니면, GIF 이미지 지구 시도 -->
   <OBJECT data="TheEarth.gif" type="image/gif">
    	<!-- 아니면 대체(alternate) 텍스트 시도 -->
    우주에서 본 <STRONG>지구</STRONG>.
   </OBJECT>
 </OBJECT>
</OBJECT>

만일 사용도구가 OBJECT를 표현 할 수 없으면, 최상위의 선언 데이터와 최초 값을 필요로 하지 않는 애플렛을 지정했다. 두번째 선언은 MPEG의 적용 처리 위치의 지정없이 사용도구 애니메이션 방식에 따르도록 MPEG 애니메이션을 지정했고, 여기에 MPEG을 표현 할 수 없는 사용도구가 네트워그에서 "TheEarth.mpeg"을 찾도록 노력하지 않게 type 애트리뷰트도 설정하였다. 세번째 선언은 GIF 화일의 위치와 모든 다른 기능이 실패 할 때 표시 될 대체(alternate) 텍스트를 설정하였다.

인라인(Inline) 대 외부 데이터. 표현 될 테이터는 인라인과 외부 자원의 두 가지 방법으로 제공된다. 인라인 방법은 일반적으로 빨리 표현되지만 많은 양의 데디터를 표시 할 때는 불편하다.

OBJECT에 인라인 데이터가 어떻게 제공되는가를 설명하는 예제이다.

 <OBJECT id="clock1" classid="clsid:663C8FEF-1EF9-11CF-A3DB-080036F12502"
       data="data:application/x-oleobject;base64, ...base64 data...">시계.
 </OBJECT>

오브젝트 크기, 정렬, 테두리 등에 관한 정보는 오브젝트, 이미지와 애플렛의 보는 표현을 참조하라.

13.3.2 오브젝트 초기화(initialization): PARAM 엘레멘트

<!ELEMENT PARAM - O EMPTY              -- 이름 붙여진 특성 값 -->
<!ATTLIST PARAM
 id          ID             #IMPLIED  -- 문서 전체의 유일한 id --
 name        CDATA          #REQUIRED -- 특성(property) 이름 --
 value       CDATA          #IMPLIED  -- 특성 값 --
 valuetype   (DATA|REF|OBJECT) DATA   -- 값을 해석(interpret)하는 벙법 --
 type        %ContentType;  #IMPLIED  -- valuetype=ref 일 때 값의 컨텐트 타입 --
>

시작태그: 필요 함, 종료태그: 사용 금지

애트리뷰트의 정의

name = cdata
이 애트리뷰트는 삽입 된 오브젝트를 안다고 전제하고 작동(run-time) 파라메터(parameter)의 이름을 지정한다. 파라메터의 이름의 대소문자 구별은 구체적인 오브젝트 적용에 따라 다르다.
value = cdata
이 애트리뷰트는 지정 된 작동 파라메터의 name의 값을 설정한다. 특성 값은 HTML에서는 의미를 갖지 않고, 사용 된 그 오브젝트에 의해 좌우된다.
valuetype = data|ref|object [대소문자 구별 없이: CI]
이 애트리뷰트는 value 애트리뷰트의 종류(type)를 지정하며, 가능한 값은:
  • data: 이 애트리뷰트의 디폴트 값이다. 이 은 문자열로 오브젝트에 적용되도록 계산되고 전달된다는 것을 의미한다.
  • ref: 이 은 작동 값이 저장되어 있는 자원의 위치 URI를 지정한다. 이는 지원 도구가 파라메터로 주어진 URI를 인식하도록 도와준다. URI는 오브젝트에 산정(resolved)하지 않은 그대로 전달되어야 한다.
  • object: 이 은 같은 문서 안에서 OBJECT로 선언 된 것을 참조하는 지정자를 설정한 것이다. 그 지정자(identifier)는 OBJECT 엘레멘트를 선언하기 위 해 설정 된 id 애트리뷰트의 값이어야 한다.
type = content-type [대소문자 구별 없이: CI]
이 애트리뷰트는 valuetype이 "ref"로 설정 된 경우에 하여 value 애트리뷰트로 설정 된 자원의 컨텐트 타입을 지정한다. 그래서 이 애트리뷰트는 사용도구에게 value에 명시 된 URI에서 찾을 수 있는 값의 종류를 지정한다.
다른 곳에서 정의 된 애트리뷰트

PARAM 엘레멘트는 작동시 필요한 오브젝트의 값들을 설정한다. 어떤 수의 PARAM 엘레멘트라도 순서에 관계 없이 하나의 OBJECT 또는 APPLET 엘레멘트가 나올 수 있으나, OBJECT 또는 APPLET의 닫기 전에 나와야 한다.

이름과 값의 문법은 오브젝트 적용 시 이해가된다고 가정한다. 이 규격은 사용도구 어떻게 이름/값의 짝을 읽어 표현하고. 두 번 나온 파라메터 이름을 어떻게 해석 할 것인지에 관해서는 기술하지 않았다.

높이와 너비의 최초값이 지정 된 두개의 작동 파라메터를 처리 할 수 있는 애플렛을 가정하고, PARAM를 사용 한 위의 시계 예제를 다시 보자. 최초 크기를 40x40 픽셀(pixel)을 두 개의 PARAM 엘레멘트로 설정하였다.

<OBJECT classid="http://www.miamachina.it/analogclock.py">
 <PARAM name="height" value="40" valuetype="data">
 <PARAM name="width" value="40" valuetype="data">
 이 사용도구는 Python 언어를 지원하지 않는다.
</OBJECT>

다음 예제에서, 오브젝트의 "Init_values" 파라메터(parameter)는 작동(run-time) 데이터의 외부 자원(GIF 화일)을 지정한다. 그래서 valuetype 애트리뷰트(attribute)의 값은 "ref"이고 그 은 자원을 가지키는 URI이다.

<OBJECT classid="http://www.gifstuff.com/gifappli" 
	standby="Loading Elvis...">
 <PARAM name="Init_values" value="./images/elvis.gif"> valuetype="ref">
</OBJECT>

사용도구가 표시하는 기능을 읽어 드리는 동안 메세지응 표시 할 수 있도록 하기 위하여 standby 애트리뷰트도 설정 하였슴을 주시하라.

OBJECT 엘레멘트를 표시 할 때는, 사용도구는 PARAM 엘레멘트의 직접 소속 된(direct children) 내용만을 찾아 OBJECT에 제공(feed)하여야 한다.

 

그래서 아래 예제에서, 만일 "obj1"이 표현된다면, "param1"은 ("obj2" 가 아니라) "obj1"을 적용한다. 만일 "obj1"이 표현되지 않고 "obj2"가 표시된다면 "param1"은 무시되고 "param2"는 "obj2"을 적용한다. 만일 두 OBJECT가 다 표현되지 않는다면, 아무 PARAM도 적용되지 않는다.

<OBJECT id="obj1">
  <PARAM name="param1">
  <OBJECT id="obj2">
     <PARAM name="param2">
  </OBJECT>
</OBJECT>

13.3.3 오브젝트의 글로발(global) 이름짓기

오프젝트 적용 위치는 URI로 제공된다. URI의 소개에서 알아 본 바와 같이, 절대 URI의 첫번째 부분은 URI에 의하여 지정되는 데이터의 이전(transfer)에 사용되는 명명 된 방식을 지정한다. HTML 문서에서, 이 방식(scheme)은 "http"인 경우가 많다. 일부 애플렛의 경우 다른 방식을 사용하기도 한다. 예를 들어, 제작자는 자바(Java) 애플렛을 지정하는 "java"로 시작되는 URI나, ActiveX 애플렛 사용하는 경우 "clsid" 를 사용 할 수 있다.

다음 예제는, HTML 문서에 자바(Java) 애플렛을 삽입 한 것이다.

 <OBJECT classid="java:program.start"></OBJECT>

codetype 애트리뷰트를 설정 함으로서, 사용도구는 그의 능력에 기초를 한 자바(Java) 적용을 읽어 표현 할 것인가를 결정한다.

 <OBJECT codetype="application/java-archive" classid="java:program.start">
 </OBJECT>

일부의 표현 방식은 적용의 지정과, 어디에서 그 정보를 찾을 수 있는가 하는 추가적인 정보를 필요로한다. 제작자는 codebase 애트리뷰트를 통하여 오브젝트 적용의 경로 정보를 제공 할 수 있다.

 <OBJECT codetype="application/java-archive" classid="java:program.start">
   codebase="http://foooo.bar.com/java/myimplementation/"
 </OBJECT>

다음 예제는 classid 애트리뷰트에서 명명된 방식(scheme) "clsid"로 시작하는 URI를 통하여, 액티브엑스(ActiveX) 오브젝트를 지정하였다. data 애트리뷰트는 다른 시계의 표현 될 데이터의 위치를 지정한다.

 <OBJECT classid="clsid:663C8FEF-1EF9-11CF-A3DB-080036F12502"
   data="http://www.acme.com/ole/clock.stm">이 작용은 지원 되지 않는다.
 </OBJECT>

13.3.4 오브젝트 선언과 인스탄스화(instantiation)

위의 예제에서는 분리 된 오브젝트 정의 만을 설명하였다. 문서에서 동일 오브젝트에 하나 이상의 인스탄스(instance)를 포함시키고저 할 때, 오브젝트의 선언을 그 인스탄스화으로 부터 분리하는 것이 가능하다. 그렇게 함으로서 여러가지 잇점이 있다.

  • 데이터를 네트워그(network)으로부터 사용도구에 의해 한 번 읽어오고(선언에서) 각 인스탄스화에서 다시 사용 할 수 있다.
  • 오브젝트의 선언 이외의 위치에서(예: 연결로 부터)도 오브젝트의 인스탄스화가 가능하다.
  • 다른 오브젝트의 작동 데이터로서 오브젝트를 지정하는 것이 가능하다.

사용도구에 의하여 읽혀 질 때 실행되지 않도록 오브젝트를 선언하기 위해서는, OBJECT 엘레멘트에서 불린(boolean) declare 애트리뷰트를 설정한다. 동시에 제작자는 OBJECT 엘레멘트에서 id 애트리뷰트를 유일한 값으로 설정하여 선언을 명시하여야 한다. 나중에 오브젝트의 인스탄스화은 이 지정자(identifier)를 참조하여 이루어 진다.

선언 된 OBJECT는 문서 안에서 그 OBJECT의 첫번째 인스탄스(instance)보다 앞에 위치하여야 한다.

declare 애트리뷰트로 정의 된 오브젝트는 매 번 그 오브젝트를 참조하는 표현이 필요 한 엘레멘트에서 인스탄스화 된다(예를 들어, 활성화 된 연결을 참조, 활성화 된 오브젝트를 참조하는 등).

다음 예제에서, OBJECT를 선언하고, 연결로 부터 참조 함으로서 인스탄스화 되도록 하였다. 그래서 예를 들어, 그 오브젝트는 일부의 하이라이트 된 텍스트를 클릭하므로서 활성화 될 수 있다.

 <P>
 <OBJECT declare 
	id="earth.declaration" 
	data="TheEarth.mpeg"
	type="application/mpeg"> 우주에서 본 <STRONG>지구</STRONG>의 모습
 </OBJECT>
 ... 문서의 다른 문장 ...
 <P>멋 있는 <A href="#earth.declaration">지구의 애니메이션!</A>

다음 예제에서는 다른 오브젝트인 작동(run-time) 값을 어떻게 지정하는가를 설명한다. 이 예제에서, 시 문구를 보기 위해 가정적 기능에 보냈다. 이 오브젝트는 이 시를 어떤 폰트로 표현하기 위 한 폰트("font")로 이름 지워진 작동 파라메터를 인식한다. 이 파라메터(parameter)의 값은, 그 자체가 표현되는 것이 아니고, 폰트 오브젝트를 삽입하는 오브젝트이다. 폰트 오브젝트와 시를 보여주는 오브젝트 사이의 관계는 다음과 같이 얻어진다.

  1. id "tribune"을 폰트 오브젝트 선언에 설정
  2. 시를 보이는 오브젝트의 PARAM 엘레멘트 valuetype과 value로 부터 참조하여 표현.
<P><OBJECT declare 
	id="tribune" 
	type="application/x-webfont" 
	data="tribune.gif">
</OBJECT>
 ... KublaKhan.txt의 시를 여기서 본다. ...
<P>
<OBJECT 
	classid="http://foo.bar.com/poem_viewer" 
	data="KublaKhan.txt">
 <PARAM name="font" valuetype="object" value="#tribune">
 <P>자체에 시를 보는 기능은 없다. ...
</OBJECT>

declare 애트리뷰트를 지원하지 않는 사용도구에서는 OBJECT 선언의 내용을 표현 해야한다.

13.4 애플렛의 포함: APPLET 엘레멘트

OBJECT가 선호되고, APPLET은 그 애트리뷰트와 함께 불량한 것이다.

공식적인 정의는 변이(transitional) DTD를 참조하라.

애트리뷰트의 정의

codebase = uri [대소문자 타입 참조: CT]
이 애트리뷰트는 애플렛의 기준 URI를 지정한다. 만일 이 애트리뷰트가 지정되지 않았으면, 그 디폴트는 현재 문서의 기준 URI와 같다. 이 애트리뷰트의 값은 현재 문서의 디렉토리의 하위 디렉토리 만을 조회 할 수 있다. 주의: APPLET의 "codebase" 애트리뷰트에서 하부 디렉토리(subdirectories)들 만 검색하는 것으로 제한 한 것은 일반적 사용 방식과 HTML 3.2 규격과 상반되지만, HTML 작업 구룹은 보안적 목적에서 이 버전에서 제한을 그대로 두기로 결정하였다.
code = cdata [대소문자 구별: CS]
이 애트리뷰트는 애플렛 서브클라스에 부합하는 애플렛을 포함하는 클래스(class) 화일의 이름 또는 클래스 화일 자체를 포함한 클래스을 얻기 위 한 경로를 지정한다. 이는 코드베이스(codebase) 애플렛에 의하여 해석된다. code 또는 object가 있어야 한다.
name = cdata [대소문자 구별: CS]
이 애트리뷰트는 애플렛 인스탄스의 이름을 지정하며, 같은 페이지에서 애플렛들을 서로 찾고 상호 통신을 할 수 있게 한다.
archive = uri-list [대소문자 타입 참조: CT]
이 애트리뷰트는 컴마(,)로 분리되고, 포함 된 클라스(class)들과 사전 로딩 될 다른 자원들의 URI 목록이다. 주어진 코드베이스(codebase)로 AppletClassLoader의 인스탄스를 사용하여 글라스들이 로딩된다. 실행 할 상대 URI는 애플렛의 코드베이스에 준하여 해석된다. 자원의 사전 로딩은 애플렛 성능을 크게 향상시킬 수 있다.
object = cdata [대소문자 구별: CS]
이 애트리뷰트는 애플렛의 상태를 대표하는 일련의 표현을 포함하는 자원을 이름 지운다. 이는 애플렛의 코드베이스(codebase)에 상대적으로 해석된다. 그 일련의 데이터는 애플렛의 클라스(class) 이름을 포함하나 작용하지 않는다. 글라스 이름은 사용된다. 글라스 이름은 글라스 화일 또는 실행할 내용으로 부터 적용을 읽어 표현하는데 사용된다.

애플렛이 순서에서 제외("deserialized")되면 start() 방법(method)은 불러 수행 되나, init() 방법에서는 그렇지 않다. 유효한 애트리뷰트는 원본 오브젝트가 serialized 되었으 때 해제되지 않는다. 이 APPLET 인스탄트에 전달 된 어떤 애트리뷰트든 애플렛에 유용 할 것이다. 제작자는 이 기능을 사용하는데 대단한 주의를 기울여야한다. 애플렛은 serialized되기 전에 중지되어야 한다.

code 또는 object가 있어야 한다. 만일 code와 object가 둘 다 주어 졌을 때, 다른 클라스 이름들를 갖는다면 오류이다.

width = length [대소문자 구별 없이: CI]
이 애트리뷰트는 애플렛 표현 지역의 초기 너비를 지정한다(애플렛이 만든 창(window)이나 대화(dialog) 상자는 제외).
height = length [대소문자 구별 없이: CI]
이 애트리뷰트는 애플렛 표현 지역의 초기 높이를 지정한다(애플렛이 만든 창이나 대화 상자는 제외).

모든 자바(Java) 지원 브라우저에서 이 엘레멘트는 설계자가 HTML 문서 안에서 자바(Java) 애플렛을 사용하는 것을 허용한다. OBJECT 엘레멘트가 선호되고, 이것은 불량한 것이 되었다.

APPLET의 내용은 이 엘레멘트를 지원하지 않는사용도구에서나 현재의 구성이 애플렛을 지원하지 않도록 설정 되어 있으면 대체(alternate) 정보로 작용한다. 그렇지 않으면 사용도구는 그 내용을 무시하여야 한다.

불량한 예제:
다음 예제에서, APPLET 엘레멘트는 문서 안에 자바 애플렛을 포함하고 있다. 코드베이스(codebase)가 제공 되지 않았으므로, 이 애플렛은 현재 문서와 같은 디렉토리에 있는 것으로 간주한다.
 <APPLET code="Bubbles.class" width="500" height="500">
   물방울 애니메이션을 그린 자바 애플렛.
 </APPLET>

 

이 예제는 OBJECT를 사용하여 다음과 같이 다시 쓸 수 있다.

 <OBJECT codetype="application/java" classid="java:Bubbles.class"
   width="500" height="500">물방울 애니메이션을 그린 자바 애플렛.
 </OBJECT>

최초값은 PARAM 엘레멘트를 통하여 애플렛에 제공 될 수 있다.

불량한 예제: 
다음은 자바 애플렛 예제이다.
 <APPLET code="AudioItem" width="15" height="15">
   <PARAM name="snd" value="Hello.au|Welcome.au">
     환영의 소리를 연주하는 자바 애플렛.
 </APPLET>

이 예제는 OBJECT를 사용하여 다음과 같이 다시 쓸 수 있다.

 <OBJECT codetype="application/java"
   classid="AudioItem" width="15" height="15">
   <PARAM name="snd" value="Hello.au|Welcome.au">
     환영의 소리를 연주하는 자바 애플렛.
 </OBJECT>

13.5 깔린(embedded) 문서에 대 한 주석

때로는, 문서에 연결하는 대신, 제작자가 원(primary) HTML 문서 안에 직접 깔기(embed)를 원 할 수 있다. 이를 위하여 제작자는 IFRAME 엘레멘트 또는 OBJECT 엘레멘트를 사용 할 수 있다. 그러나 엘레멘트는 몇가지 점에서 다르다. 이 두가지 엘레멘트는 내용 모델에서 다를 뿐 만 아니라, IFRAME 엘레멘트는 목표(target) 프레임이 될 수 있고(목표 프레임 정보 설정 참조), 사용도구에 의 해 인쇄, HTML 자원 보기 등에서 포거스(focus) 선택(selected)을 할 수 있다. 사용도구는 선택 된 프레임의 엘레멘트를 표현하는데, 선택되지 않은 프레임과 구별되도록 할 수 있다.(예를 들어, 선택 된 프레임에 테두리를 그린다,)

깔린(embedded) 문서는 전적으로 그 문서가 깔려진 문서와 독립적이다. 예를 들어 깔린 문서 안의 상대 URI는 깔린 문서의 기준 URI에 따라 산정되지 만, 메인 문서의 기준 URI에 따르는 것이 아니다. 깔린 문서는 다른 문서(예: 보조창에서) 안에서 만 그 대로 또는 독립적으로 표현된다.

예를 들어 다음 줄이 embed_me.html의 내용을 OBJECT 정의가 나타나는 위치에 깔렸다.

 ... 앞의 문장 ...
 <OBJECT data="embed_me.html">주의: embed_me.html는 깔릴 수 없다.</OBJECT>
 ... 뒤의 문장 ...

OBJECT의 내용은 data 애트리뷰트로 지정 된 화일이 로딩(load) 될 수 없을 때 만, 표현된다는 것을 상기하라.

화일이 자신을 포함하는 경우, 사용도구의 작용은 정의되어 있지 않다.

13.6 이미지맵

이미지맵은 제작자로 하여금 이미지 또는 오브젝트의 지역을 지정하고, 각 지역에 (문서를 읽고 표현, 프로그램을 돌림 등) 특정 작용을 지정하여, 사용자가 지역을 활성화 시켰을 때 작동이 되도록 하는 것이다.

이미지맵은 오브젝트 위에서 감지 할 수 있는 지하학적 지역의 규격과 연관하여 생성한다.

두 종류의 이미지맵이 있는데:

  • 사용자측(client-side). 사용자가 마우스로 사용자측 이미지맵의 지역을 활성화하면, 사용도구에 의하여 픽셀(pixel) 조합 좌표(coordinates)가 해석된다. 사용도구는 활성화 지역으로 지정 된 연결을 선택한다.
  • 서버측(server-side). 사용자가 마우스로 서버측 이미지맵의 지역을 활성화하면, 픽셀 조합 좌표가 A 엘레멘트의 href 애트리뷰트로 지정 된 서버측 대리자(agent)에게 보낸다. 서버측 대리자는 그 좌표를 해석하고 작동을 수행한다.

비그래픽(non-graphical) 사용도구로 브라우징하는 사람들이 접근하기 쉽다는 점과, 지정한 위치가 작동 지역 위에 있는가 아닌가를 즉각적으로 알 수 있다는 최소한 두가지 이유에서, 사용자측 이미지맵은 서버측 이미지맵보다 선호된다.

13.6.1 사용자측 이미지맵: MAP과 AREA 엘레멘트

<!ELEMENT MAP - - ((%block;)+ | AREA+) -- 사용자측(client-side) 이미지맵 -->
<!ATTLIST MAP
 %attrs;                              -- %coreattrs, %i18n, %events --
 name        CDATA          #REQUIRED -- 맵 사용(usemap)의 참조를 위하여 --
>

시작태그: 필요 함, 종료태그: 필요 함

<!ELEMENT AREA - O EMPTY   -- 사용자측(client-side) 이미지맵 지역(area) -->
<!ATTLIST AREA
 %attrs;                              -- %coreattrs, %i18n, %events --
 shape       %Shape;        rect      -- 좌표를 해석하는 제어(control) --
 coords      %Coords;       #IMPLIED  -- 컴마로 분리 된 길이들의 목록 --
 href        %URI;          #IMPLIED  -- 연결 자원의 URI --
 nohref      (nohref)       #IMPLIED  -- 이 지역은 작용하지 않음 --
 alt         %Text;         #REQUIRED -- 짧은 설명 --
 tabindex    NUMBER         #IMPLIED  -- 탭 순서에서의 위치 --
 accesskey   %Character;    #IMPLIED  -- 접속키 글자 --
 onfocus     %Script;       #IMPLIED  -- 엘레멘트에 초점(focus)을 줌 --
 onblur      %Script;       #IMPLIED  -- 엘레멘트에서 초점 해제 --
>

시작태그: 필요 함, 종료태그: 사용 금지

MAP 애트리뷰트 정의

name = cdata [대소문자 구별 없이: CI]
이 애트리뷰트는 MAP 엘레멘트에 의하여 설정 된 이미지맵의 이름을 지정한다.

AREA 애트리뷰트 정의

shape = default | rect | circle | poly [대소문자 구별 없이: CI]
이 애트리뷰트는 지역의 모양을 지정하며 가능한 값은:
  • default:: 전 지역 지정.
  • rect:: 사각형 지역.
  • circle:: 원 지역.
  • poly:: 다각형 지역.
coords = coordinates [대소문자 중립: CN]
이 애트리뷰트는 화면상 모양의 위치를 지정한다. 값과 값의 순서는 모양에 따라 다르며 가능한 조합은:
  • rect:: (사각형) 왼쪽 끝, 위쪽 끝, 오른쪽 끝, 아래쪽 끝.
  • circle:: (원) 중심의 x 좌표, 중심의 y 좌표, 반경. 주석: 반경의 값이 백분율일 때, 사용도구는 오브젝트의 너비와 높이에 기준하여 최종 반경을 계산하여야 하는데, 반경은 이 두 수치보다 작아야한다.
  • poly:(다각형): 점 1의 x 좌표, y 좌표, 점 2의 x 좌표, y 좌표, ..., 점 N의 x 좌표, y 좌표. 첫번째 x 와 y 짝은 마지막 것과 같아야 다각형이 닫힌다. 이 두 점들이 같지 않으면, 사용도구는 이 다각형을 닫기 위한 추가적인 좌표를 만들어야 한다.

좌표(coordinates)는 좌측 맨위의 꼭지점으로 부터의 거리로 모든 값은 길이이고, 컴마로 분리된다.

nohref [대소문자 구별 없이: CI]
이 불린(boolean) 애트리뷰트가 설정되면, 그 지역은 연결되지 않음 나타낸다.

엘레멘트로 이미지맵에 연관시키는 애트리뷰트

usemap = uri [대소문자 타입 참조: CT]
이 애트리뷰트는 엘레멘트로 이미지맵에 연관시킨다. 이미지맵은 MAP 엘레멘트에 의하여 지정된다. usemap의 값은 연관 된 MAP 엘레멘트의 name 애트리뷰트 값과 맞아야한다.

MAP 엘레멘트는 하나 이상의 엘레멘트(IMGOBJECT, 또는 INPUT)에 연관 될 수 있는 사용자측 이미지맵을 정의한다. 이미지맵은 엘레멘트의 usemap 애트리뷰트를 통하여 한 엘레멘트에 연관된다. The MAP 엘레멘트는 일반적인 향해(navigation) 기능(mechanism)에서 이미지에 연관 없이 사용 될 수 있다.

OBJECT에 usemap 애트리뷰트가 있으면, 그 오브젝트는 이미지에 포함된다는 것을 의미한다. 또 한OBJECT 엘레멘트가 사용자측 이미지맵에 연관되었다면, 사용도구는 사용자측 이미지맵의 정의에 의한 OBJECT로 작동시킬 수 있다. 이는 오디오브라우저나 로보트 등 사용도구가 처리 없이 OBJECT로 작동하도록 한다. 사용도구는 오브젝트가 읽어 표현하기나 처리하지 않을 수도 있다. 한 OBJECT가 연관 된 이미지맵을 가지면, 제작자는 그 오브젝트가 모든 사용도구에 의하여 읽어 표현하기나 처리가 될 것이라고 기대 할 수는 없다.

각 MAP 엘레멘트는 다음 중 하나를 포함한다.

  1. 하나 이상의 AREA 엘레멘트. 이 엘레멘트는 내용을 가지고 있지 않으나, 이미지맵의 기하학적 지역들과 각 지역과 연관 된 연결을 정의한다. 이 방법이 사용되면, MAP은 참조하는 내용을 갖지 않는다는 점에 유의하라. 그래서, 제작자는 각 AREA에 alt 애트리뷰트로 대체 텍스트를 제공(대체 텍스트지정 방법 참조)하여야 한다.
  2. 블럭레벨(block-level) 내용. 이 내용은 이미지맵의 기하학적 지역들을 지정 한 A 엘레멘트와 각 지역의 연관 된 연결을 포함하여야 한다. 이 방법을 사용 할 때는 MAP 엘레멘트의 블럭 레벨(block-level) 내용이 사용도구에 의해서 표현되어야 함에 주의하라. 제작자는 보다 접근하기 쉬운 문서 작성을 위하여 이 방법을 사용하여야 한다.

MAP 엘레멘트가 AREA 엘레멘트와 블럭 레벨(block-level) 내용의 혼합된 내용을 가지면, 사용도구는 AREA 엘레멘트들을 무시하여야 한다.

제작자는 AREA 엘레멘트로, 혹은 A 엘레멘트로, 혹은 두 가지를 혼합하여, 이미지맵의 구조(geometry)를 완전하게 지정하여야 한다. 제작자들은 과거 사용도구로 AREA 엘레멘트로 지정 된 구조(map geometries)를 처리하고, 새로운 사용도구가 보다 풍부한 블럭 내용을 처리하도록 섞어 사용하기를 원 할 수 있다.

만일 두개 이상 지정 된 지역이 중복 되었다면, 문서에서 가장 먼저 나타난 지역 결정 엘레멘트가 우선하여 적용된다.

사용도구와 제작자는 그랙픽을 지원하지 않거나 사용자가 접속 할 수 없는 경우를 위해, 그래픽 이미지맵에 대체 텍스트를 제공하여야 한다. 예를 들어, 사용도구는 alt 텍스트로 그래픽 이미지맵의 자리에 텍스트로 된 연결들을 만들 수 있다. 이와 같은 연결들은 키보드, 음성에 의한 활설화 등 여러가지 방법으로 활성화 될 수 있다.

주석MAP은 HTML 2.0 버전 사용도구에는 맞지 않는다.

사용자측(client-side) 이미지맵 예제

다음 예제에서, OBJECT 엘레멘트에 사용자측 이미지맵을 만들었다. OBJECT가 표현 될 때 이미지맵의내용이 보이지 않게 하기 위하여, OBJECT 엘레멘트의 내용에서 MAP 엘레멘트를 감추었다("hide"). 결과적으로 OBJECT가 표현되지 못 할 경우에 한해서 MAP엘레멘트의 내용은 표현 될 것이다.

<HTML>
<HEAD><TITLE>쿨(cool) 싸이트!</TITLE></HEAD>
<BODY>
 <P>
 <OBJECT data="navbar1.gif" type="image/gif" usemap="#map1">
   <MAP name="map1">
     <P>싸이트를 방문하시오.
     <A href="guide.html" shape="rect" coords="0,0,118,28">접속 안내</a> |
     <A href="shortcut.html" shape="rect" coords="118,0,184,28">가기</A> |
     <A href="search.html" shape="circle" coords="184,200,60">검색</A> |
     <A href="top10.html" shape="poly"
	coords="276,0,276,28,100,200,50,50,276,0">Top Ten</A>
   </MAP>
 </OBJECT>
</BODY>
</HTML>

사용도구가 OBJECT를 표현 할 수 있을 때도 이미지맵의 내용을 표현하기를 원 할 수 있다. 예를 들어, 이미지맵에 OBJECT 엘레멘트 페이지의 바닥에 텍스트로 된 항해 참고(navigation bar)를 동시에 표현하기를 원하면, 이를 위하여 MAP 엘레멘트를 OBJECT 밖에서 정의한다.

<HTML>
<HEAD><TITLE>쿨(cool) 싸이트!</TITLE></HEAD>
<BODY><P>
 <OBJECT data="navbar1.gif" type="image/gif" usemap="#map1"></OBJECT>
   ... 페이지의 다른 문장들 ...
 <MAP name="map1">
   <P>싸이트를 방문하시오:
     <A href="guide.html" shape="rect" coords="0,0,118,28">접속 안내</a> |
     <A href="shortcut.html" shape="rect" coords="118,0,184,28">가기</A> |
     <A href="search.html" shape="circle" coords="184,200,60">검색</A> |
     <A href="top10.html" shape="poly"
	coords="276,0,276,28,100,200,50,50,276,0">Top Ten</A>
   </MAP>
</BODY>
</HTML>

 

다음 예제에서, AREA 엘레멘트를 사용하여 비슷한 이미지맵을 만들었다. alt 텍스트의 사용에 유의하라.

<P>
<OBJECT data="navbar1.gif" type="image/gif" usemap="#map1">
  <P>이것은 항해 바(navigation bar)이다.
</OBJECT>
<MAP name="map1">
 <AREA href="guide.html"    alt="접속 안내" shape="rect" coords="0,0,118,28">
 <AREA href="search.html"   alt="검색"    shape="rect" coords="184,0,276,28">
 <AREA href="shortcut.html" alt="가기"     shape="circle"coords="184,200,60">
 <AREA href="top10.html"    alt="Top Ten"
	shape="poly" coords="276,0,276,28,100,200,50,50,276,0">
</MAP>

OBJECT 대신 같은 MAP 선언으로 IMG 엘레멘트를 사용한 비슷한 예제.

<P><IMG src="navbar1.gif" usemap="#map1" alt="항해 바(navigation bar)">

다음 예제는 이미지맵을 공유(share) 할 수 있는 방법을 설명한다.

사용도구가 이런 양식을 지원하지 않을 때 지역의 재지정(fallback)을 위해서는 네스트 된(Nested) OBJECT 엘레멘트가 유용하다. 예를 들어:

<OBJECT data="navbar.png" type="image/png">
 <OBJECT data="navbar.gif" type="image/gif">
   이미지 설명 텍스트 ...
 </OBJECT>
</OBJECT>

만일 그 사용도구가 PNG 양식을 지원하지 않으면, GIF 이미지를 표현하도록 시도 할 것이다. 예를 들어 음성 언어(speech-based) 사용도구 등과 같이 만일 GIF를 지원하지 않으면, 안 쪽 OBJECT 엘레멘트에 제공 된 설명 텍스트가 디폴트로 표현된다. 이 방식으로 OBJECT 엘레멘트들이 네스트(nest) 되었으면, 제작자는 그 들 사이에 이미지맵을 공유 할 수 있다.

<P>
<OBJECT data="navbar.png" type="image/png" usemap="#map1">
 <OBJECT data="navbar.gif" type="image/gif" usemap="#map1">
   <MAP name="map1">
   <P>싸이트를 방문하시오.
     <A href="guide.html" shape="rect" coords="0,0,118,28">접속 안내</a> |
     <A href="shortcut.html" shape="rect" coords="118,0,184,28">가기</A> |
     <A href="search.html" shape="circle" coords="184,200,60">검색</A> |
     <A href="top10.html" shape="poly"
	coords="276,0,276,28,100,200,50,50,276,0">Top Ten</A>
   </MAP>
 </OBJECT>
</OBJECT>

다음 예제는 이미지맵 안에서 지역(region)을 활성화 하기 위하여 어떻게 앵커(anchor)를 지정하는가를 설명한다. 첫번째 앵커는 연결이 없는 작은 원(circle) 지역을 지정한다. 두번째 앵커는 큰 원 지역을 표시 한 것과 같은 중심 좌표로 지정했다. 이를 조합하면 원의 내부는 비활성이고 외부는 활성 인 모양이된다. 작은 원이 큰 원을 덮어 씌워야 하기 때문에 앵커 정의의 순서가 중요하다.

<MAP name="map1">
 <A shape="circle" coords="100,200,50">이 것은 불 활성.</A>
 <A href="outer-ring-link.html" shape="circle"
	coords="100,200,250">이것은 활성</A>
</MAP>

같은 방식으로, AREA 엘레멘트의 nohref 애트리뷰트는 그 기하학적 지역은 연관 된 연결이 없음을 선언한다.

13.6.2 서버측측(server-side) 이미지맵

서버측 이미지맵은 사용자측(client-side) 이미지맵으로는 너무 복잡 할 때 관심을 가질 수 있다.

서버측 이미지맵은 IMG와 INPUT 엘레멘트에서 만 지정이 가능하다. IMG의 경우, IMG는 A 엘레멘트 안에 있어야 하고, 불린(boolean) 애트리뷰트에 ismap[대소문자 구별 없이: CI]이 설정되어야 한다. INPUT의 경우, INPUT의 타입(type)은 "image"이어야한다.

사용자가 이미지를 클릭하여 연결을 활성화 시키면, 스크린 좌표(coordinates)는 문서가 있는 서버에 직접 보내진다. 스크린 좌표는 이미지에 대한 상대적인 스크린 픽셀(pixel) 값으로 표시된다. 픽셀의 정의와 사용법은 번역문 규격 번역문 CSS1을 참조하라.

다음 예제에서, 활성 지역(region)은 서버(server-side) 연결을 지정한다. 이미지 위 어디를 클릭하던 그 크릭된 좌표를 서버에 보낸다.

 <A href="http://www.acme.com/cgi-bin/competition">
   <IMG src="game.gif" ismap alt="target"></A>

글릭 된 위치는 다음과 같이 서버에 전달된다. 사용도구는 A 엘레멘트의 href 애트리뷰트에 의하여 지정 된 URI로부터 `?'와 그 다음에 컴마로 분리 된 x와 y 좌표로 새로운 URI를 부른다. 그러면 그 연결은 새로은 URI를 사용하여 연결된다. 위 예제에서 사용자가 x=10, y=27의 위치를 클릭하면, 유도 된 URI는 "http://www.acme.com/cgi-bin/competition?10,27"이다.

키보드 입력에 의존하는 음성(speech-based) 사용도구 등 비 그래픽(non-graphic) 사용도구들은 좌표 선택 수단을 사용자에게 제공하지 못하는데, 이런 사용도구는 연결이 활성화 되면 좌표 "0,0"을 서버에 보내야한다.

13.7 오브젝트, 이미지와 애플렛의 보는 표현

보는(visual) 정렬과 표현에 관련 된 모든 IMG와 OBJECT 애트리뷰트는 불량한 것이 되었고, 스타일쉬트가 선호된다.

13.7.1 너비와 높이

애트리뷰트의 정의

width = length [대소문자 중립: CN]
이미지와 오브젝트의 너비를 덮어 씌운다(override).
height = length [대소문자 중립: CN]
이미지와 오브젝트의 높이를 덮어 씌운다.

지정되면 width와 height 애트리뷰트는 사용도구에게 원래의 이미지 또는 오브젝트의 크기의 이 값들을 덮어 씌울 것을 알려준다.

오브젝트가 이미지이면 이것은 조정(scale)된다. 사용도구는 제작자에 의해 지정 된 너비(width)와 높이(height)에 가장 잘 맞게 오브젝트나 이미지를 조정해야한다. 길이들이 백분율로도 표시 되었으면, 현재의 수평 혹은 수직 가용 공간에 대한 백분율이고, 이미지, 오브젝트 혹은 애플렛의 원래 크기에 대한 것이 아니다.

height와 width 애트리뷰트는 사용도구에게 이미지 혹은 오브젝트 크기에 대한 아이디어를 제공하여, 이를 위 한 장소를 예약하고, 이미지 데이터를 읽어오는 동안 문서를 표현할 수 있게 해 준다.

13.7.2 이미지와 오브젝트 주위의 공간

애트리뷰트의 정의

hspace = pixels [대소문자 중립: CN]
불량한 것이다. 이 애트리뷰트는 IMGAPPLET, 또는 OBJECT의 왼쪽과 오른쪽에 삽입되는 공간의 크기를 지정한다. 디폴트는 지정되지 않았으나, 일반적으로 0의 너비는 아니고 작다.
vspace = pixels [대소문자 중립: CN]
불량한 것이다. 이 애트리뷰트는 IMGAPPLET, 또는 OBJECT의 위쪽과 아래쪽에 삽입되는 공간의 크기를 지정한다. 디폴트는 지정되지 않았으나, 일반적으로 0의 너비는 아니고 작다.

13.7.3 테두리(border)

이미지 또는 오브젝트는 예를 들어, 사용자에 의해 테두리가 지정되거나 이미지가 A 엘레멘트의 내용이면, 테두리(border)에 의하여 둘려 쌓인다.

애트리뷰트의 정의
border = pixels
불량한 것이다. border 애트리뷰트는 테두리(border)의 폭을 픽셀(pixel)로 지정하며, 디폴트 값은 사용도구에 따라 다르다.

13.7.4 정렬(alignment)

애트리뷰트의 정의

align = bottom|middle|top|left|right
불량한 것이다. 이 애트리뷰트는 IMGOBJECT, 또는 APPLET의 그 틀에 대한 위치를 지정한다.

align의 다음 값들은 주위 텍스트에 대한 오브젝트의 위치를 말한다.

  • bottom: 오브젝트의 바닥이 현재 기초 라인(baseline)에 수직적으로 정렬 됨을 의미하며, 디폴트 값이다.
  • middle: 오브젝트의 중앙이 현재 기초 라인에 수직적으로 정렬 됨을 의미.
  • top: 오브젝트의 위끝이 현재 텍스트 라인의 맨위에 수직적으로 정렬 됨을 의미.

다른 두 값, left와 right는 현재의 왼쪽 혹은 오른쪽 마진(margin)으로 이미지가 유동되게 한다. 유동 오브젝트을 참조하라.

정렬 해석의 차이. 사용도구에 따라 align 애트리뷰트에 대 한 해석이 다르다. 일부는 엘레멘트 이전의 텍스트 열에 만 적용되고, 다른 것들은 엘레멘트의 양 쪽 텍스트에 적용된다.

13.8 대체(alternate) 텍스트 지정 방법

애트리뷰트의 정의

alt = text [대소문자 구별: CS]
이미지, 폼(form), 또는 애플렛(applet)을 디스플레이 할 수 없는 사용도구에서, 이 애트리뷰트는 대체 텍스트를 지정한다. 대체 텍스트의 언어는 lang 애트리뷰트로 지정한다.

몇개의 텍스트가 아닌 엘레멘트(IMGAREAAPPLETINPUT)에서 제작자는 엘레멘트가 정상적으로 표현 될 수 없을 때 내용을 알려주는 대체 텍스트를 지정하게한다. 대체 텍스트를 지정함으로서 다음과 같은 사용자에게 도움을 줄 수 있다. 그래픽 디스플레이 터미널 없는 사용자, 양식을 지원하지 않는 브라우저를 사용하는 사용자, 시각 장애자, 음성 합성 장치(speech synthesizer)를 사용하는 사람, 그래팩 사용도구가 이미지를 디스플레이하지 않도록 구성되었을 때, 등

IMG와 AREA 엘레멘트에는 alt 애트리뷰트를 지정하여야 하며, INPUT와 APPLET 엘레멘트에는 선택적이다.

대체 텍스트는 대단히 도움을 주지 만 주의하여 사용 되어야 한다. 제작자는 다음 사항을 유의하라.

  • 포함 된 이미지가 페이지를 양식화하기 위해 사용되는 경우, 적당하지 않은 대체(alternate) 텍스트를 지정하지 말라. 예를 들어 alt="red ball"로 헤딩이나 문단을 장식하기 위해 붉은 볼(red ball)을 추가하는 이미지에는 적당하지 않다. 이런 경우에는, 대체 텍스트는 빈 문자열 ("")이어야한다. 어떤 경우이던 제작자가 이미지를 페이지의 양식화에 사용하는 것은 피하고, 대신 스타일쉬트를 사용 할 것을 추전한다.
  • "dummy text"와 같은 의미 없는 대체 텍스트를 지정하지 말라. 사용자를 혼란 스럽게 할 뿐 아니라, 음성 장치나 점자 출력에서는 텍스트로 변환해야 하므로, 사용도구의 속도를 낮출 것이다.

생략 된 대체 텍스트의 경우의 처리 방법에 대 한 정보 접속성(accessibility)을 참조하라.

번호 제목 글쓴이 날짜 조회 수
211 Hex string <-> String object 황제낙엽 2011.11.29 204
210 An alternative to the deep copy technique file 황제낙엽 2011.07.27 200
209 <jsp:include>, include지시자 file 황제낙엽 2011.07.24 145
208 <jsp:include> 액션태그 황제낙엽 2011.07.24 81
207 volatile 에 대한 단상(斷想) 황제낙엽 2011.06.22 58
206 Object element 의 onerror 이벤트 황제낙엽 2011.04.21 36
205 Java 2D Graphics - Reference link 황제낙엽 2011.04.11 90
204 deployJava.js를 이용한 JRE 자동설치 및 Applet 디플로이 file 황제낙엽 2011.04.04 701
203 Applet 의 모든것 황제낙엽 2011.04.01 306
202 Java Applets in HTML5 황제낙엽 2010.12.13 431
201 (Multiple Browser Supported) Java applet using XHTML 'object' tag 황제낙엽 2010.12.13 36
200 <Applet> 과 <Object> 종합 황제낙엽 2010.12.07 21
199 codebase 를 통한 autodownload 내용 황제낙엽 2010.12.07 507
» 오브젝트(object), 이미지와 애플렛(applet) 황제낙엽 2010.12.07 110
197 [Applet] Java Plug-in 1.4.2 Developer Guide 황제낙엽 2010.12.07 54
196 [Applet] Java Plugin 가이드 (OBJECT/EMBED 태그에 의한 인트라넷) 황제낙엽 2010.11.06 176
195 [Applet] Java Plugin 가이드 (HTML 컨버터를 사용한 Java Plug-in 용 Applet 태그의 변환) 황제낙엽 2010.11.06 31
194 [Applet] Java Plugin 가이드 (applet,object, 및 embed 태그의 사용) 황제낙엽 2010.11.06 174
193 [Applet] Java Plugin 가이드 (Java Plug-in 란. 지원 내용에 대해) 황제낙엽 2010.11.06 76
192 Escape special characters 황제낙엽 2010.10.28 118