W3C12 연결(Link)Trio 홈페이지
목차
  1. 연결과 앤커(anchor)의 소개
    1. 연결 된 자원의 방문
    2. 기타 연결 관계
    3. 앤커와 연결의 설정
    4. 연결 제목
    5. 국제화와 연결
  2. A 엘레멘트
    1. 앤커 이름의 문법
    2. 네스트 된(nested) 연결은 틀린 것이다.
    3. id 애트리뷰트를 갖는 앤커
    4. 자원이 없거나 인식 할 수 없는 자원의 경우
  3. 문서의 관계: LINK 엘레멘트
    1. 앞으로(forward)와 뒤로(reverse)의 연결
    2. 연결과 외부 스타일쉬트
    3. 연결과 검색 엔진(search engine)
  4. 경로(path) 정보: BASE 엘레멘트
    1. 상대 URI 찾기

12.1 연결(link)과 앤커(anchor)의 소개

HTML은 풍부한 텍스트와 구조화 된 문서를 위하여 많은 문구를 제공하나, 다른 제작 언어와 다른 점은 하이퍼 텍스트(hypertext)와 문서 연결 기능(interactive)들을 갖고 있다는 것이다. 이 항목은 기본적인 하이퍼 링크의 구조인 연결(link: hyperlink 또는 Web link)을 설명한다. 연결이란 한 웹 자원으로 부터 다른 웹 자원에 연결하는 것이다. 단순한 개념이지만 이 연결이 웹을 성공적으로 보급되게 한 하나의 핵심적인 힘이 되었다.

link앤커(anchor)와 방향(direction) 두개의 끝을 가지고 있다. 연결은 원천("source") 앤커로 사작하고, 목표("destination" ) 앤커로 끝나며, 이는 이미지, 비디오 조각(video clip), 소리(sound bite), 프로그램, HTML 문서, HTML 문서 안의 엘레멘트 등 어떤 웹 자원도 될 수 있다.

12.1.1 연결 된 자원의 방문

연결의 디폴트 작동은 다른 웹 자원을 읽어 작용하게 하는 것이다. 이 작동은 그 연결을 크릭하거나 키보드에서 입력하는 등으로 선택 했을 때 일어난다.

다음 HTML은 두개의 연결을 갖는데, 하나의 목표 앤커는 "chapter2.html"의 이름을 갖는 HTML 문서이고, 다른 하나의 목표 앤커는 "forest.gif"라는 이미지 화일이다.

<BODY>
 ... 다른 텍스트 ...
<P>추가 정보는 <A href="chapter2.html">항목 2</A>에서 볼 수 있다.
 이 <A href="../images/forest.gif">이미지</A>도 보시오.
</BODY>

마우스를 크릭하거나, 키보드에서 입력하거나, 음성 명령 등으로 이들 연결을 작동시키면, 사용자는 이들 자원들을 방문 할 수 있다. 각 자원 앤커의 href 애트리뷰트는 URI로 목표 앤커의 주소를 지정한다.

연결의 목표(destination) 앤커는 HTML 문서 안에 있는 엘레멘트가 될 수 있다. 목표 앤커는 앤커 이름과 부분 지정자(fragment identifier) 이름을 포함하는 어떤 URI 주소를 가져야한다.

HTML 문서에서 목표 앤커는 A 엘레멘트에서 name 애트리뷰트로 이름 지워 진 것이나, id 애트리뷰트로 이름지워 진 다른 어떤 엘레멘트도 될 수 있다.

그래서 예를 들어, 제작자는 같은 문서 안에서 헤더(header) 엘레멘트 H2, H3 등에 연결하는 목차를 만들 수 있다. A 엘레멘트를 이용하여 목표 앤커의 작성은 아래와 같이 할 수 있다.

<H1>목차</H1>
<P><A href="#section1">소개</A><BR>
<A href="#section2">배경</A><BR>
<A href="#section2.1">개인적 주석</A><BR>
 ...목차의 나머지 부분 ...
 ...문서 본체(body)...
<H2><A name="section1">소개</A></H2>
 ...section 1...
<H2><A name="section2">배경</A></H2>
 ...section 2...
<H3><A name="section2.1">개인적 주석</A></H3>
 ...section 2.1...

헤더(header) 엘레멘트들 자체에서 앤커들을 만들어 같은 효과를 낼 수 있다.

<H1>목차</H1>
<P><A href="#section1">소개</A><BR>
<A href="#section2">배경</A><BR>
<A href="#section2.1">개인적 주석</A><BR>
 ...목차의 나머지 부분 ...
 ...문서 본체(body)...
<H2 id="section1">소개</H2>
 ...section 1...
<H2 id="section2">배경</H2>
 ...section 2...
<H3 id="section2.1">개인적 주석</H3>
 ...section 2.1...

12.1.2 기타 연결(link) 관계

무엇보다도 많이 사용 되는 방법은 위의 예제에서 설명 된 것과 같이 다른 웹 자원을 연결하여 읽는(retrieve) 것이다. 그러나, 제작자 단순히 "이 연결의 관련 자원을 방문하여 활성화 시켜라"는 대신, 자원들 사이의 다른 관계들을 표현하는 연결을 할 필요가 있을 수 있다. 다른 타입과의 관계를 지정 한 연결은 그 원천 앤커에 지정 된 하나 이상의 연결 타입(type)을 갖는다.

연결의 임무(role)A 또는 LINK에 지정 된 relrev 애트리뷰트를 의하여 정의된다.

예를 들어 LINK 엘레멘트에 의하여 정의 된 연결은 일련의 문서들 안에서의 그 문서의 위치를 지정 할 수 있다.

다음 예제에서 "Chapter 5"의 제목을 가진 문서 안에서 이전과 다음 장(chapter)을 가리키는 연결을 갖는다.

<HEAD>
 ... 다른 헤드(head) 정보 ...
<TITLE>Chapter 5</TITLE>
 <LINK rel="prev" href="chapter4.html">
 <LINK rel="next" href="chapter6.html">
</HEAD>

첫번째 연결의타입은 "prev"이고, 두번째는 "next"이며, 이 두가지는 잘 자주 사용되는 연결 타입이다.

LINK로 지정 된 연결들은 사용도구에 의하여 항해 수단(navigation tool) 등의 다른 방법으로 표현되지 만, 문서의 내용과 더부러 표시하는 것은 아니다.

그 것이 항해에 사용되지 않더라도 흥미 있는 방식으로 해석 될 수 있다. 예를 들어, 일련의 HTML 문서들을 하나의 문서 처럼 인쇄하는 사용도구에서, 이 연결 정보를 연속 된 문서들의 기본 형태로 사용 할 수 있다. 연결과 검색 엔진(search engine)에 추가 정보가 제공 되었다.

12.1.3 앤커(anchor)와 연결(link)의 설정

여러개의 HTML 엘레멘트와 애트리뷰트가 다른 자원, 예를 들어 IMG, FORM 엘레멘트 등,에 연결을 만들지 만, 이 장에서는 LINKA 엘레멘트에 의하여 만들어 지는 연결과 앤커에 대하여 알아본다. LINK 엘레멘트는 문서의 헤드(head)에 만 가질 수 있고, A 엘레멘트는 본체(body)에 만 가질 수 있다.

A 엘레멘트에 href 애트리뷰트가 지정되어 있으면, 이 엘레멘트는 사용자가 웹 자원을 활성화 할 때 연결해야 할 앤커의 위치(source)의 지정이다. 그 앤커의 위치는 A 인스탄스(instance)의 위치이고 목표(destination) 앤커는 그 웹의 자원이다.

연결 된 자원은 사용도구에 의하여, 예를 들면, 사용도구의 같은 창(window)에 새로운 HTML 문서를 열거나, 다른 창에 열거나, 자원을 처리하기 위 해 새로운 프로그램을 시작하는 등의 여러 가지 방법으로 표현 할 수 있다. A 엘레멘트는 텍스트(, 이미지, 등의 내용을 갖기 때문에, 사용도구는 내용에 밑줄을 긋는 등의 방법으로 이들 내용이 연결되어있다는 표현한다.

A 엘레멘트에 name 또는 id 애트리뷰트가 설정되면, 이 애트리뷰는 다른 연결들과 구별된다는 것을 의미한다.

제작자는 같은 A 안에 namehref 애트리뷰트를 동시에 설정 할 수 있다.

LINK 엘레멘트는 현재의 문서와 다른 자원과의 관계를 정의한다. LINK는 내용(content)을 가지고 있지 않지만, 사용도구에 따라서는 정의 된 관계를 표현 할 수도 있다.

12.1.4 연결 제목(title)

title 애트리뷰트는 추가적인 연결 특성을 제공하기 위하여, A에서나 LINK에서 다 사용 할 수 있다. 이 정보는 사용도구로 하여금 말하거나, 도구 조각으로 표현하거나, 커서 이미지를 변화 시키는등으로 표현 하는데 사용 될 수 있다.

앞 예제의 각 연결에 제목을 적용하면:

<BODY>
 ... 다른 텍스트 ...
 <P>추가 정보는 
	<A href="chapter2.html" title="항목 2로 간다">항목 2</A>에 있다.
 <A href="./chapter2.html" title="항목 2이다.">항목 2</A>.
 이 <A href="../images/forest.gif" title="항목 2이다.">이미지</A>도 보시오.
</BODY>

12.1.5 국제화와 연결(link)

연결들은 다른 종류의 글자 엔코딩으로 된 문서를 지시 할 수 있기 때문에, ALINK 엘레멘트는 charset 애트리뷰트를 지원한다. 이 애트리뷰트는 제작자가 사용도구에게 연결 상대편 데이터에 대한 엔코딩 정보를 제공한다.

hreflang 애트리뷰트는 사용도구에게 연결 자원의 언어 정보를 제공한다. 이는 lang 애트리뷰트가 엘레멘트의 내용이나 애트리뷰트 값의 언어에 대한 정보를 제공하는 것과 같은 방식이다.

사용도구는 이 추가적인 정보를 보완하여 사용자에게 엉터리로 표시하는 것을 피해야 하고, 그 대신 문서의 바른 표현을 위한 자원을 제공하거나, 그와 같은 자원의 제공이 불가능하면, 최소한 그 문서가 잘 표현되지 않을수 있다는 점을 경고하고, 그 이유를 설명 해야 한다.

12.2 A 엘레멘트

<!ELEMENT A - - (%inline;)* -(A)     -- 앤커(anchor) -->
<!ATTLIST A
 %attrs;                             -- %coreattrs, %i18n, %events --
 charset     %Charset;      #IMPLIED -- 연결 자원의 글자 엔코딩(char encoding)--
 type        %ContentType;  #IMPLIED -- 안내적(advisory) 컨텐트(content) 타입 --
 name        CDATA          #IMPLIED -- 연결 이름(named link)의 목표 --
 href        %URI;          #IMPLIED -- 연결 된 자원의 URI --
 hreflang    %LanguageCode; #IMPLIED -- 언어 코드 --
 rel         %LinkTypes;    #IMPLIED -- 연결(link) 타입(type) 앞으로 --
 rev         %LinkTypes;    #IMPLIED -- 연결 타입 뒤로 --
 accesskey   %Character;    #IMPLIED -- 접속키(key) 글자 --
 shape       %Shape;        rect     -- 사용자측 이미지맵과 같이 사용 --
 coords      %Coords;       #IMPLIED -- 사용자측 이미지맵과 같이 사용 --
 tabindex    NUMBER         #IMPLIED -- 탭(tab)번호로 지정한 위치 --
 onfocus     %Script;       #IMPLIED -- 초점(focus) 마춤 엘레멘트 --
 onblur      %Script;       #IMPLIED -- 초점 없앰 엘레멘트 --
>

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

애트리뷰트의 정의

name = cdata [대소문자 구별: CS]
이 애트리뷰트는 현재 앤커(anchor)가 다른 연결과 구별되도록 하기 위한 이름을 지정하는 것이며, 이 앤커 이름은 한 번 만(unique) 있어야 하며, 현재의 문서에서 적용된다. 이 애트리뷰트는 id 애트리뷰트와 같은 자리를 사용한다.
href = uri [대소문자 타입 참조: CT]
이 애트리뷰트는 웹 자원의 위치를 지정하여 현재의 엘레멘트(source anchor)와 이 애트리뷰트가 지정한 목표 앤커(destination anchor)사이를 연결 시켜 준다.
hreflang = langcode [대소문자 구별 없이: CI]
이 애트리뷰트는 href가 지정 된 경우에 한해, href로 지정 된 자원의 기초 언어를 지정한다.
type = content-type [대소문자 구별 없이: CI]
이 애트리뷰트는 목표 주소에 연결 된 내용의 타입(컨텐트 타입 : content type)에 대한 안내적(advisory) 힌트(hint)를 제공한다. 이는 사용도구가, 만일 내용에 지원하지 않는 컨텐트 타입이 포함된다는 것이 알려지면, 그 내용을 가져오는 대신 적당한 기능을 사용하도록 한다.
이 애트리뷰트를 사용하는 제작자는, 이 것이 연결 된 목표 주소의 내용에서 일정하지(consistent) 않을 수 있슴에 대한 위험성에 대한 책임을 진다(일정하지 않을 수 있슴을 감안해야 한다)
현재의 컨텐트 타입들의 목록은 [MIMETYPES]를 참조하라.
rel = link-types [대소문자 구별 없이: CI]
이 애트리뷰트는 현재 문서와 href 애트리뷰트에 지정 된 앤커와의 관계를 지정한다. 이 애트리뷰트 값은 연결 타입 목록에서 빈칸으로 분리된다.
rev = link-types [대소문자 구별 없이: CI]
이 애트리뷰트는 현재 문서의 href 애트리뷰트로 지정 된 앤커로 부터 뒤로 연결(reverse link)을 기술하기 위하여 사용된다. 애트리뷰트의 값은 연결 타입 목록에서 빈칸으로 분리된다.
charset = charset [대소문자 구별 없이: CI]
이 애트리뷰트는 연결이 지정 한 자원의 글자 엔코딩 방식을 지정한다. 세부사항은 글자 엔코딩을 참조하라.
다른 곳에서 정의 된 애트리뷰트

A 엘레멘트(element)는 하나의 앤커(anchor)를 정의한다.

  1. A 엘레멘트의 내용은 앤커의 위치를 지정한다.
  2. name 애트리뷰트는 다른 연결들과 구별 할 수 있도록 앤커의 이름을 지정한다.(id에 의한 앤커도 참조).
  3. href 애트리뷰트는 하나의 연결을 위한 자원의 앤커를 만든다.

제작자는 앤커를 지정하지 않고도 A 엘레멘트로를 만들 수 있는데, 이는 href, name이나 id가 정의되지 않는 것이다. 이들 애트리뷰트의 값은 나중에 스크립트(script)를 통 해 설정 할 수 있다.

아래 예제에서 A 엘레멘트는 하나의 연결을 정의한다. 앤커의 위치는 텍스트 "W3C Web site"이고 목표 앤커(destination anchor)는 "http://www.w3.org/"이다.

 W3C에 대 한 추가적인 정보는
   <A href="http://www.w3.org/">W3C Web site</A>를 참조하라.

이 연결은 월드와이드웹(World Wide Web Consortium)의 홈페이지를 지정한다. 사용자가 사용도구에서 이 연결을 활성화 시키면 사용도구는 그 자원, 이런 경우, HTML 문서를 읽어 표현 할 것이다.

사용도구는 일반적으로 사용자에게 명확하게 할 수 있도록 밑줄을 긋던가 비데오를 뒤로 돌리던가 하는 등의 방식으로 연결을 표현한다. 추가적인 표현은 사용도구에 따라 다르다. 표현은 사용자가 그 연결을 이미 방문 했었는가 아닌가에 따라 다를 수 있다. 이미 방문 (안)했던 연결의 보는 표현은 다음과 같을 수 있다.

 W3C에 대 한 추가적인 정보는 W3C Web site를 참조하라.
                             ~~~~~~~~~~~~
귀하의 브라우저로
 W3C에 대 한 추가적인 정보는 영문 W3C Web site를 참조하라.

사용도구에게 정확하게 목표 서류의 글자 엔코딩 방식을 알려 주려면, charset 애트리뷰트로 설정한다.

 W3C에 대 한 추가적인 정보는
 <A href="http://www.w3.org/" charset="ISO-8859-1">W3C Web site</A> 참조.

화일 "one.html" 안의 "anchor-one" 으로 이름 주어진 앤커를 가정하면:

 ... 화일 one.html 중 앤커 전 문장 ...
 <A name="anchor-one">이 곳이 anchor one의 위치이다.</A>
 ... 앤커 다음 문장 ...

이는 텍스트 "이 곳이 anchor one의 위치이다."로 앤커를 만든다.

일반적으로 A가 앤커 만을 정의 했을 때는 A의 내용은 어떤 특별 한 방법으로도 표현 된지 않는다.

앤커가 지정되면 같은 문서 혹은 다른 앤커를 지정하는 URI가 "#" 글자를 가지면, 그 다음에 앤커 이름(anchor name)이 따라 나오는데, 이를 부분 지정자(fragment identifier)라한다.

아래 이런 URI의 예제가 있다.

"one.html"과 같은 디렉토리에 있는 화일 "two.html"에서 정의 된 연결은 다음과 같이 앤커를 참조한다.

 ... 화일 two.html 중 앤커 전 문장 ...
 추가 정보는 <A href="./one.html#anchor-one"> anchor one</A>을 참조하라.
 ... 앤커 다음 문장 ...

다음 예제에서 A 엘레멘트는 href로 연결을 지정하고, 동시에 name로 이름 지어 진 앤커를 만든다.

 나는 방금 휴가로 부터 돌아 왔다! 여기에 호수가에서의
 <A name="anchor-two"
	href="http://www.somecompany.com/People/Ian/vacation/family.png">
 우리 가족 사진</A>이 있다.

이 예제는 다른 타입의 웹 자원(PNG 이미지)을 연결하였다. 이 연결을 활성화 시키면 그 웹으로부터 이미지 지원을 읽어와 (시스템이 디스플레이하도록 구성되어 있으면) 읽어 보일 것이다.

주석: 사용도구는 A 엘레멘트에 의하여 생성 된 앤커들을 찾을 수 있어야 한다. 그러나 일부 사용도구는, 예를 들어 다음 HTML 부분 지정자(fragment identifier)에서 빈 앤커("empty-anchor")를 찾지 못하는등, 그렇지 못 한 경우가 있다.

 <A name="empty-anchor"></A>
 ... HTML 텍스트 ...
 <A href="#empty-anchor">empty-anchor에 연결</A>

12.2.1 앤커(anchor) 이름(name)의 문법

앤커 이름은 name 또는 id 애트리뷰트의 값이다. 앤커 이름은 다음 규칙을 따라야한다.

그래서 다음 예제는 문자열 일치의 견지에서 맞으며 사용도구는 일치로 인식한다.

 <P><A href="#xxx">...</A>
 ... 문서 다른 무분 ...
 <P><A name="xxx">...</A>

틀린 예제:
다음 예제는 대소문자 차이 이외에는 같은 이름이므로 유일성 견지에서 틀린 것이다.

 <P><A name="xxx">...</A>
 <P><A name="XXX">...</A>

다음 표현은 문법상 틀린 것은 아니지 만, 사용도구가 어떻게 할 것인가는 정의 되어 있지 않아, 일부 사용도구에서는 일치하는 것으로(틀리게) 인식하고, 다른 사용도구에서는 일치하지 않는 것으로 인식 할 수 있다.

 <P><A href="#xxx">...</A>
 ... 문서 다른 무분 ...
 <P><A name="XXX">...</A>

앤커 이름(anchor name)에는 ASCII 글자 만 사용할 수 있다. 추가 정보는 부록 URI 애트리뷰트 값에서 비아스키(non-ASCII) 글자을 참조하라.

12.2.2 네스트 된(nested) 연결(link)은 틀린 것이다.

A 엘레멘트로 정의 된 연결과 앤커(anchor)는 네스트 되어서는 않되는데, 그 의미는 A 엘레멘트는 다른 A 엘레멘트를 포함 할 수 없다는 뜻이다.

DTD는 LINK 엘레멘트가 비어(empty) 있도록 정의하므로, LINK 엘레멘트도 네스트 되면 않된다.

12.2.3 id 애트리뷰트를 갖는 앤커(anchor)

id 애트리뷰트는 앤커를 만들기 위해, A 엘레멘트를 포함 한 어떤 엘레멘트에서도 시작태그에 사용 될 수 있다.

H2 엘레멘트 안에서 앤커를 지정하기 위하여 사용 한 id 애트리뷰트의 예제이다. A 애트리뷰트를 통하여 앤커가 연결된다.

 추가 정보는 <A href="#section2">항목 2</A>를 참조하라.
 ... 문서의 뒤에
 <H2 id="section2">항목 2</H2>
 ... 문서의 뒤에
 <P>추가적인 세부사항은 위의 <A href="#section2">항목 2</A>를 참조하라.

다음 예제는 id 애트리뷰트로 목표 앤커의 이름을 지정한다.

 나는 방금 휴가로 부터 돌아 왔다!  여기에
 <A id="anchor-two">호수가에서 찍은 우리 가족 사진</A>이 있다.

idname 애트리뷰트는 같은 이름 자리를 사용한다. 이는 한 문서에서 앤커를 같은 이름으로 지정할 수 없다는 뜻이다. 이 두 애트리뷰트는 다음 엘레멘트들에는 같은 유일한 인식자(identifier)를 지정하기 위하여 사용 할 수 있다: A, APPLET, FORM, FRAME, IFRAME, IMG, MAP. 두 애트리뷰트가 단일 엘레멘트에 사용되려면 그 값들이 같아야 한다.

틀린 예제:
다음은 한 문장에서 이 애트리뷰트가 같은 이름으로 두번 지정되어 틀린 HTML이다.
 <A href="#a1">...</A>
 ...
 <H1 id="a1">
 ... 다른 문구들 ...
 <A name="a1"></A>

다음 예제는 idname이 엘레멘트 시작태그 안에 같이 나올 때 같아야 한다는 것을 설명한다:

<P><A name="a1" id="a1" href="#a1">...</A>

HTML DTD에서 규격에 의해 name 애트리뷰트는 글자 참조를 포함 할 수 있다. 그래서, 그 값 D&#xfc;rstD&uuml;rst 와 같이 모두 유효한 name 애트리뷰트의 값이다. 이와는 달리 id 애트리뷰트에는 글자 참조를 포함 할 수 없다.

제작자가 앤커의 이름으로 id 또는 name을 사용 할 것인가를 결정하는데는 다음 사항들을 고려하여야 한다.

12.2.4 자원이 없거나 인식 할 수 없는 자원의 경우

자원이 없거나(unavailable) 인식 할 수 없는(unidentifiable) 자원를 지정하는 것은 오류이다. 사용도구가 이와 같은 오류를 어떻게 처리 할 것인가 하는 것은 사용도구에 따라 다를 수 있는데, 다음과 같은 작동을 추천한다.

12.3 문서 관계: LINK 엘레멘트

<!ELEMENT LINK - O EMPTY         -- 메디아에 무관 한(media-independent) 연결 -->
<!ATTLIST LINK
 %attrs;                             -- %coreattrs, %i18n, %events --
 charset     %Charset;      #IMPLIED -- 연결 자원의 글자 엔코딩(char encoding)--
 href        %URI;          #IMPLIED -- 연결 자원의 URI --
 hreflang    %LanguageCode; #IMPLIED -- 언어 코드 --
 type        %ContentType;  #IMPLIED -- 참고 컨텐트 타입(content type) --
 rel         %LinkTypes;    #IMPLIED -- 연결(link) 타입(type) 앞으로 --
 rev         %LinkTypes;    #IMPLIED -- 연결 타입 뒤로 --
 media       %MediaDesc;    #IMPLIED -- 이 메디아(media)에 표현하기 위해 --
>

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

다른 곳에서 정의 된 애트리뷰트

이 엘레멘트는 연결을 정의한다. A와는 달리, 여러번 나올 수는 있으나, 단지 문서의 HEAD 항목에 만 나올 수 있다. LINK는 내용을 갖지 않지만, 사용도구에 의해 여러가지 방식(예: 연결 메뉴의 드롭다운도구)으로 표현 될 수 있는 관련 정보를 전달 할 수 있다.

이 예제는 문서의 HEAD 항목에 나타날 수 있는 여러개의 LINK 정의하는 방법을 설명한다. 현재 문서는 "Chapter2.html"이고, rel 애트리뷰트는 현재 문서와 연결 된 문서 사이의 관계를 지정한다. 그 값 "Index", "nrxt"와 "Prev"는 연결 타입 항목에 설명 되어있다.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
  "http://www.w3.org/TR/html4/strict.dtd">
<HTML>
<HEAD>
 <TITLE>Chapter 2</TITLE>
 <LINK rel="Index" href="../index.html">
 <LINK rel="next"  href="Chapter3.html">
 <LINK rel="Prev"  href="Chapter1.html">
</HEAD>
 ... 문서의 나머지 부분 ...

12.3.1 앞으로(forward)와 뒤로(reverse)의 연결

relrev 애트리뷰트는 임시적 임무를 수행하는데, rel 애트리뷰트는 앞으로(forward)의 연결을, rev 애트리뷰트는 뒤로(reverse)의 연결을 지정한다.

두 문서 A 와 B가 있다고 하자.

 문서 A:       <LINK href="docB" rel="foo">

는 아래와 꼭 같은 의미를 갖는다.

 문서 B:       <LINK href="docA" rev="foo">

이 두 애트리뷰트들은 동시에 지정 될 수 있다.

12.3.2 연결과 외부 스타일쉬트

LINK 엘레멘트가 외부 스타일쉬트를 문서에 연결 할 때, type 애트리뷰트은 스타일쉬트 언어를 지정하고 media 애트리뷰트은 의도한 표현 메디아(들)을 지정한다. 사용도구는 현재 장치에 적용되는 스타일쉬트의 경우에 만 네트워그(network)로 부터 읽어 표현하여 시간을 절약 할 수 있다.

메디아 타입(media type)들은 스타일쉬트(style sheet)에서 자세히 다룬다.

12.3.3 연결과 검색 엔진(search engine)

제작자는 LINK 엘레멘트를 사용하여 검색 엔진에 다음 사항을 포함하여 여러 가지 정보를 제공 할 수 있다.

예제는 언어 정보, 메디아 타입과 연결 타입을 어떻게 조합하여 검색 엔진의 문서 처리를 향상하는가를 설명하였다.

다음 예제에서 hreflang 애트리뷰트로 어디서 문서의 네델란드어, 폴튜갈어와 아랍어 버전을 찾을 수 있는가를 검색 엔진에 알려 준다. 아랍어 설명서를 위하여 dircharset 애트리뷰트를 사용한 것과, LINK 엘레멘트의 title 애트리뷰트의 값을 불어 설명서의 언어가 불어 임을 지정하기 위하여 lang 애트리뷰트를 사용했다.

<HEAD>
 <TITLE>영어 설명서</TITLE>
 <LINK 
	title="네델란드어 설명서" 
	type="text/html"	
	rel="alternate"
	hreflang="nl" 	
	href="http://someplace.com/manual/dutch.html">
 <LINK 
	title="폴튜갈어 설명서"      
	type="text/html"
	rel="alternate"
	hreflang="pt" 
	href="http://someplace.com/manual/portuguese.html">
 <LINK 
	title="아랍어 설명서"      
	type="text/html"
	rel="alternate"      	
	charset="ISO-8859-6"
	hreflang="ar" 	
	href="http://someplace.com/manual/arabic.html">
 <LINK 
	lang="fr"       
	title="(불어) La documentation en Français"
	type="text/html"	
	rel="alternate"
	hreflang="fr"	
	href="http://someplace.com/manual/french.html">
</HEAD>

다음 예제에서, 검색 엔진에게 설명서의 인쇄 된 버전이 어디에 있는가를 알려준다.

<HEAD>
 <TITLE>참고 매뉴얼</TITLE>
 <LINK 
	media="print" 
	title="The manual in postscript"
	type="application/postscript"	
	rel="alternate"
	href="http://someplace.com/manual/postscript.ps">
</HEAD>

다음 예제에서, 문서 집합체의 시작 페이지를 어디서 찾을 수 있는가를 검색 엔진에게 알려준다.

<HEAD>
 <TITLE>참고 매뉴얼 -- 현재 페이지 5</TITLE>	
 <LINK 
	rel="Start" 
	title="설명서의 첫번째 페이지"	
	type="text/html"
	href="http://someplace.com/manual/start.html">
</HEAD>

추가적인 정보는 부록의 주석 웹 사이트 색인으로 검색 엔진의 도움을 참조하라.

12.4 경로(path) 정보: BASE 엘레멘트

<!ELEMENT BASE - O EMPTY               -- 문서 기준 URI -->
<!ATTLIST BASE
 href        %URI;          #REQUIRED -- 기준 URI로 작용하는 URI --
>

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

애트리뷰트의 정의

href = uri [대소문자 타입 참조: CT]
이 애트리뷰트는 상대 URI를 찾아내는데 기준 URI로 작용하는 절대 URI를 지정한다.
다른 곳에서 정의 된 애트리뷰트

HTML에서, 외부 이미지, 야플렛(applet), 양식 형성 프로그램(form-processing program), 스타일쉬트(style sheet) 등에 대 한 연결이나 참조는 항상 URI로 지정된다. 상대 URI는 여러 곳으로 부터 올 수 있는 기준 URI에 따라 산정 된 것이다. 제작자는 BASE 엘레멘트로 명시적으로 문서의 기본 URI 지정 할 수 있다.

BASE 엘레멘트는 HTML 문서의 HEAD 항목에 있어야 하고, 다른 어떤 엘레멘트가 외부 자원을 참조하기 전에 있어야 한다. BASE 엘레멘트에 의 해 지정 된 경로(path) 정보는 문서 내에서 그 엘레멘트가 나타날 때에 한해서 URI에 영향을 준다.

다음 예제는, BASE 선언과 A 선언을 갖는다.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
  "http://www.w3.org/TR/html4/strict.dtd">
<HTML>
<HEAD>
  <TITLE>당사의 제품들</TITLE>
  <BASE href="http://www.aviary.com/products/intro.html">
</HEAD>
<BODY>
  <P>귀하는 당사의 <A href="../cages/birds.gif">새장들</A>를 보셨습니까?
</BODY>
</HTML>

상대 URI "../cages/birds.gif"는 다음과 같이 산정된다.

 http://www.aviary.com/cages/birds.gif

12.4.1 상대 URI의 산정(resolve)

사용도구는 [RFC1808], 항목 3에 의하여 상대 URI를 산정하기 위하여 기준 URI를 계산한다. 다음은 [RFC1808]가 구체적으로 어떻게 HTML에 적용하는가를 설명하였다.

사용도구는 다음과 같은 우선 순위(위 쪽 우선)에 의하여 기준 URI를 계산한다.

  1. BASE 엘레멘트에 의하여 기준 URI 설정. [[RFC2616]] 등
  2. 프로토콜(protocol) 작용 중(예: HTTP 헤더 등) 발견 된 메타 데이터에 의하여 기준 URI 제공.
  3. 디폴트로 현재 문서의 기준 URI. 모든 HTML 문서들이 기준 URI를 갖는 것은 아닌데, 예를 들면, 유효한 HTML 문서가 전자우편(email) 안에 나타날 수 있고, URI에 의하여 지정 되지 않을 수 있다. 만일 문서들이 상대 URI를 포함하며 디폴트인 기준 URI에 의존한다면, 이와 같은 HTML 문서들은 오류로 간주된다.

추가적으로, OBJECTAPPLET 엘레멘트에서의 정의는 BASE 애트리뷰트에서 설정 된 값보다 우선적으로 적용된다. 엘레번트의 URI의 문제에 대 한 추가 정보는 이들 엘레멘트의 정의를 참조하라.

주석. 연결 헤더(Link header)를 정의한 HTTP 버전에서, 사용도구는 이들 헤더(header)들을 이 문서의 LINK 엘레멘트들과 정확히 같이 처리해야 한다. [RFC2616]에 정의된 HTTP 1.1에는 연결 헤더(Link header) 필드를 정의되어 있지 않다 (19.6.3 항 참조).

RFC 2616는 연결(link) 헤더(header) 필드(field)를 포함하지 않으므로, "HTTP 헤더(header)들에 의하여 지정된 Link 엘레멘트들은 문서에서 명시적으로 나타나는 LINK 엘레멘트들과 정확히 같이 취급해야 한다."라는 기술은 HTTP 1.1의 이전 버전에 적용된다.

Trio 홈페이지 문서(http://trio.co.kr/webrefer/html/struct/links.html)는 자유로이 연결 사용이 가능함.