Generating Text Fragment Directives
This section is non-normative.
This section contains recommendations for UAs automatically generating URLs with a text fragment directive. These recommendations aren’t normative but are provided to ensure generated URLs result in maximally stable and usable URLs.

4.1. Prefer Exact Matching To Range-based
The match text can be provided either as an exact string "text=foo%20bar%20baz" or as a range "text=foo,bar".

Prefer to specify the entire string where practical. This ensures that if the destination page is removed or changed, the intended destination can still be derived from the URL itself.

Suppose we wish to craft a URL to https://en.wikipedia.org/wiki/History\_of\_computing quoting the sentence:
The first recorded idea of using digital electronics for computing was the
1931 paper "The Use of Thyratrons for High Speed Automatic Counting of
Physical Phenomena" by C. E. Wynn-Williams.
We could create a range-based match like so:

https://en.wikipedia.org/wiki/History\_of\_computing#:~:text=The%20first%20recorded,Williams

Or we could encode the entire sentence using an exact match term:

https://en.wikipedia.org/wiki/History\_of\_computing#:~:text=The%20first%20recorded%20idea%20of%20using%20digital%20electronics%20for%20computing%20was%20the%201931%20paper%20%22The%20Use%20of%20Thyratrons%20for%20High%20Speed%20Automatic%20Counting%20of%20Physical%20Phenomena%22%20by%20C.%20E.%20Wynn-Williams

The range-based match is less stable, meaning that if the page is changed to include another instance of "The first recorded" somewhere earlier in the page, the link will now target an unintended text snippet.

The range-based match is also less useful semantically. If the page is changed to remove the sentence, the user won’t know what the intended target was. In the exact match case, the user can read, or the UA can surface, the text that was being searched for but not found.

Range-based matches can be helpful when the quoted text is excessively long and encoding the entire string would produce an unwieldy URL.

Text snippets shorter than 300 characters are encouraged to be encoded using an exact match. Above this limit, the UA can encode the string as a range-based match.

TODO: Can we determine the above limit in some less arbitrary way?
4.2. Use Context Only When Necessary
Context terms allow the text fragment directive to disambiguate text snippets on a page. However, their use can make the URL more brittle in some cases. Often, the desired string will start or end at an element boundary. The context will therefore exist in an adjacent element. Changes to the page structure could invalidate the text fragment directive since the context and match text will no longer appear to be adjacent.

Suppose we wish to craft a URL for the following text:
HEADER
Text to quote
We could craft the text fragment directive as follows:

text=HEADER-,Text%20to%20quote
However, suppose the page changes to add a "[edit]" link beside all section headers. This would now break the URL.

Where a text snippet is long enough and unique, a UAs are encouraged to avoid adding superfluous context terms.

Use context only if one of the following is true:

The UA determines the quoted text is ambiguous
The quoted text contains 3 or fewer words
TODO: Determine the numeric limit above in less arbitrary way.
4.3. Determine If Fragment Id Is Needed
When the UA navigates to a URL containing a text fragment directive, it will fallback to scrolling into view a regular element-id based fragment if it exists and the text fragment isn’t found.

This can be useful to provide a fallback, in case the text in the document changes, invalidating the text fragment directive.

Suppose we wish to craft a URL to https://en.wikipedia.org/wiki/History\_of\_computing quoting the sentence:
The earliest known tool for use in computation is the Sumerian abacus
By specifying the section that the text appears in, we ensure that, if the text is changed or removed, the user will still be pointed to the relevant section:

https://en.wikipedia.org/wiki/History\_of\_computing#Early\_computation:~:text=The%20earliest%20known%20tool%20for%20use%20in%20computation%20is%20the%20Sumerian%20abacus

However, UAs should take care that the fallback element-id fragment is the correct one:

Suppose the user navigates to https://en.wikipedia.org/wiki/History\_of\_computing#Early\_computation. They now scroll down to the Symbolic Computations section. There, they select a text snippet and choose to create a URL to it:
By the late 1960s, computer systems could perform symbolic algebraic
manipulations
Even though the current URL of the page is: https://en.wikipedia.org/wiki/History\_of\_computing#Early\_computation, using #Early\_computation as a fallback is inappropriate. If the above sentence is changed or removed, the page will load in the #Early\_computation section which could be quite confusing to the user.

If the UA cannot reliably determine an appropriate fragment to fallback to, it should remove the fragment id from the URL:

https://en.wikipedia.org/wiki/History\_of\_computing#:~:text=By%20the%20late%201960s,%20computer%20systems%20could%20perform%20symbolic%20algebraic%20manipulations
텍스트 조각 지시문 생성이 섹션은 규범이 아닙니다.이 섹션에는 텍스트 조각 지시문을 사용하여 URL을 자동으로 생성하는 UA에 대한 권장 사항이 포함되어 있습니다. 이러한 권장 사항은 규범적인 것은 아니지만 생성된 URL이 최대한 안정적이고 사용 가능한 URL이 되도록 보장하기 위해 제공됩니다.4.1. 범위 기반보다 정확한 일치 선호일치 텍스트는 "text=foo%20bar%20baz"와 같은 정확한 문자열 또는 "text=foo,bar"와 같은 범위로 제공될 수 있습니다.가능하면 전체 문자열을 지정하는 것이 좋습니다. 이렇게 하면 대상 페이지가 제거되거나 변경되더라도 URL 자체에서 의도한 대상을 계속 도출할 수 있습니다.이 문장을 인용하여 https://en.wikipedia.org/wiki/History\_of\_컴퓨팅에 대한 URL을 만들고자 한다고 가정해 보겠습니다:컴퓨팅에 디지털 전자 장치를 사용한다는 최초의 기록된 아이디어는1931년 논문 "고속 자동 계산을 위한 사이라트론의 사용"입니다.물리적 현상의 고속 자동 계산을 위한 사이라트론의 사용"입니다.다음과 같이 범위 기반 일치를 만들 수 있습니다:https://en.wikipedia.org/wiki/History\_of\_computing#:~:text=The%20first%20recorded%20,Williams또는 정확히 일치하는 용어를 사용하여 전체 문장을 인코딩할 수도 있습니다:https://en.wikipedia. org/wiki/History\_of\_computing#:~: text=The%20first%20recorded%20idea%20of%20using%20digital%20electronics%20for%20computing%20was%20the%201931%20paper%20%22The%20Use%20of%20Thyratrons%20for%20High%20Speed%20Automatic%20Counting%20of%20Physical%20Phenomena%22%20by%20C. %20E.%20Wynn-Williams범위 기반 일치는 안정성이 떨어지므로 페이지의 앞부분에 "첫 번째 기록"의 다른 인스턴스를 포함하도록 페이지가 변경되면 링크가 의도하지 않은 텍스트 스니펫을 대상으로 지정됩니다.범위 기반 일치는 의미론적으로도 유용성이 떨어집니다. 페이지가 변경되어 문장이 제거되면 사용자는 의도한 타겟이 무엇인지 알 수 없습니다. 정확히 일치하는 경우, 사용자는 검색 중이었지만 찾을 수 없었던 텍스트를 읽거나 UA가 표시할 수 있습니다.범위 기반 검색은 따옴표로 묶인 텍스트가 지나치게 길어서 전체 문자열을 인코딩하면 다루기 힘든 URL이 생성될 때 유용할 수 있습니다.300자보다 짧은 텍스트 스니펫은 정확히 일치 검색을 사용하여 인코딩하는 것이 좋습니다. 이 제한을 초과하는 경우 UA는 문자열을 범위 기반 일치로 인코딩할 수 있습니다.할 일: 위의 제한을 덜 자의적인 방법으로 결정할 수 있을까요?4.2. 필요한 경우에만 컨텍스트 사용문맥 용어를 사용하면 텍스트 조각 지시문이 페이지의 텍스트 조각을 모호하지 않게 할 수 있습니다. 그러나 컨텍스트 용어를 사용하면 경우에 따라 URL이 더 취약해질 수 있습니다. 원하는 문자열이 요소 경계에서 시작하거나 끝나는 경우가 많습니다. 따라서 컨텍스트는 인접한 요소에 존재하게 됩니다. 페이지 구조를 변경하면 컨텍스트와 일치하는 텍스트가 더 이상 인접한 것으로 표시되지 않으므로 텍스트 조각 지시문이 무효화될 수 있습니다.다음 텍스트에 대한 URL을 만들려고 한다고 가정해 보겠습니다:HEADER인용할 텍스트다음과 같이 텍스트 조각 지시문을 작성할 수 있습니다:text=HEADER-,Text%20to%20quote하지만 페이지가 변경되어 모든 섹션 헤더 옆에 '[편집]' 링크가 추가된다고 가정해 보겠습니다. 이제 URL이 끊어집니다.텍스트 스니펫이 충분히 길고 고유한 경우에는 불필요한 문맥 용어를 추가하지 않는 것이 좋습니다.다음 중 하나에 해당하는 경우에만 컨텍스트를 사용합니다:UA가 인용된 텍스트가 모호하다고 판단하는 경우인용된 텍스트에 3개 이하의 단어가 포함된 경우할 일: 위의 숫자 제한을 덜 자의적인 방식으로 결정합니다.4.3. 조각 ID가 필요한지 결정하기UA가 텍스트 조각 지시어가 포함된 URL로 이동할 때 텍스트 조각이 존재하지만 찾을 수 없는 경우 일반 요소 ID 기반 조각을 보기 위해 스크롤하는 것으로 폴백합니다.이는 문서의 텍스트가 변경되어 텍스트 조각 지시문이 무효화되는 경우에 대비하여 폴백을 제공하는 데 유용할 수 있습니다.문장을 인용하는 https://en.wikipedia.org/wiki/History\_of\_컴퓨팅에 대한 URL을 만들고 싶다고 가정해 봅시다:계산에 사용되는 가장 초기에 알려진 도구는 수메르 주판입니다.텍스트가 표시되는 섹션을 지정하면 텍스트가 변경되거나 제거되더라도 사용자가 관련 섹션으로 이동하도록 할 수 있습니다:https://en.wikipedia.org/wiki/History\_of\_컴퓨팅#초기\_컴퓨팅:~:text=계산에 사용되는 것으로 알려진 가장 초기의 도구는 수메르의 주판입니다.그러나 UA는 폴백 요소 ID 조각이 올바른 것인지 주의해야 합니다:사용자가 https://en.wikipedia.org/wiki/History\_of\_computing#Early\_computation으로 이동한다고 가정해 보겠습니다. 이제 심볼릭 계산 섹션까지 아래로 스크롤합니다. 거기서 텍스트 스니펫을 선택하고 URL을 생성하도록 선택합니다:1960년대 후반에 컴퓨터 시스템은 기호 대수 연산을 수행할 수 있었습니다.조작을 수행할 수 있었습니다.페이지의 현재 URL은 https://en.wikipedia.org/wiki/History\_of\_computing#Early\_computation이지만 #Early\_computation을 대체 URL로 사용하는 것은 부적절합니다. 위의 문장이 변경되거나 제거되면 #Early\_computation 섹션에 페이지가 로드되어 사용자에게 매우 혼란을 줄 수 있습니다.UA가 다음을 안정적으로 판단할 수 없는 경우 