Описание


CF_HTML - полностью текстовый формат (чтобы быть среди других документов в духе HTML и использовать UTF-8) и включает в себя описание фрагмента с дополнительным содержанием и без него.

Ниже следует  пример буфера обмена:

Version:0.9
    StartHTML:71
    EndHTML:170
    StartFragment:140
    EndFragment:160
    StartSelection:140
    EndSelection:160
    <!DOCTYPE>
    <HTML>
    <HEAD>
    <TITLE> Буфер обмена HTML</TITLE>
    <BASE HREF="http://sample/specs">
    </HEAD>
    <BODY>
    <UL>
    <!--StartFragment -->
    <LI> The Fragment </LI>
    <!--EndFragment -->
    </UL>
    </BODY>
    </HTML>

 

Описание включает в себя номер версии буфера обмена и смещений, указывающих, где контекст и фрагмент начинаются и заканчиваются. Описание - это список ключевых слов текста ASCII (min/maj - не существенны) сопровождаемые строкой и отделением двоеточием (:).

Version:  номер версии буфера обмена. Начальная версия - 0.9.

StartHTML: количество байтов от начала буфера обмена до начала контекста, или - (минус)1, если никакого содержания нет.

EndHTML: количество байтов от начала буфера обмена до конца контекста, или - (минус)1, если никакого контекста нет.

StartFragment: количество байтов от начала буфера обмена до начала фрагмента.

EndFragment: количество байтов от начала буфера обмена до конца фрагмента.

StartSelection: количество байтов от начала буфера обмена до начала выбора.

EndSelection: количество байтов с начала буфера обмена до конца выбора.

Ключевые слова StartSelection и EndSelection  являются дополнительными и должны оба быть опущены, если Вы не хотите, чтобы в приложении создавалась эта информация.

Другая информация этого сорта может быть добавлена сюда позже, начиная от начала в HTML  StartHTMLoffset. Например, несколько пар StartFragment / EndFragment могут добавиться позже, чтобы поддержать выбор, состоящий из нескольких несмежных участков фрагментов.

Для удобства программ, создающих подсчет байтов, поле количества байтов может быть оставлено заполненным нулями. Например, программы делающие подсчет байтов могут произвольно приписать десять (10) нулей к каждому ключевому слову (StartHTML: 0000000000), а затем, когда известно точное количество байтов для StartHTML   (объявлено 71), программа может заменить соответствующее число нулей цифрами количества байтов (StartHTML: 0000000071).

Единственный набор символов, поддерживаемый буфером обмена является Unicode в его кодировке UTF-8. Поскольку первые символы UTF-8 и ASCII соответствуют друг другу, описание - всегда ASCII, но байты контекста (начинающиеся от StartHTML) могут использовать любые другие символы, кодировки UTF-8.

Конец строк в заголовке формата буфера обмена может быть возвратом каретки (CR, или ВОЗВРАТОМ КАРЕТКИ (CR)/ПЕРЕВОДОМ СТРОКИ (LF), или переводом строки (LF).

Фрагмент содержит чистую правильную область, обозначающую HTML, которую пользователь выбрал ( например, чтобы скопировать). Он содержит выбранный текст плюс открывающие тэги и атрибуты любого элемента, который имеет конечный тэг в пределах выбранного текста, и конечные тэги в конце фрагмента для любого включенного начального тэга. Это является всей той информацией, которая необходима как база для вставки фрагмента HTML.

Желательно , чтобы фрагмент предварялся и сопровождался соответствующими комментариями HTML <!--StartFragment --> и <!--EndFragment --> (не допускается пробел  между !--  и текстом), чтобы удобно было обозначать, где фрагмент начинается и заканчивается. В соответствии с этим в описании начало и конец фрагмента указываются  присутствием этих комментариев, а StartFragment и EndFragment итоговыми числами байтов . Предполагается, что инструментальные средства создают эту информацию. Эта избыточность вводится для того, чтобы получить возможность быстро найти начало фрагмента (для подсчета байтов) и отметить позицию фрагмента непосредственно на дереве HTML.

Выбор указывает во фрагменте точную область HTML, которую пользователь выбрал (например, чтобы копировать). Это добавляет подробную информацию к фрагменту, обозначая точный выбранный текст, без открывающих и конечных тэгов, которые добавляются, чтобы гарантировать, что фрагмент - правильно построенный фрагмент HTML.

Выбор является необязательным, поскольку достаточная информация включается во фрагменте для основной вставки. Если выбор не сохраняется, и StartSelection, и EndSelection не сохраняются в заголовке.

Контекст является допустимым, когда документ HTML завершенный . Эта статья содержит фрагмент и все предшествующие окружающие тэги (начальные и конечные тэги; эти предшествующие окружающие тэги обозначают все родительские узлы фрагмента, кончая узлом HTML). Статья также содержит полный заголовок HEAD и позволяет элементам BASE и TITLE, например, включать туда, эту дополнительную информацию, которая может быть получена. Приложение, копирующее фрагмент HTML в буфер обмена может выбрать для создания элемент BASE, чтобы включить  в контекст, если такой элемент еще не присутствует  для того, чтобы во фрагменте могли быть внедрены неполные унифицированные указатели ресурсов (URL).

Контекст является необязательным, поскольку во фрагмент включается достаточная информация  для основы, чтобы произошла вставка фрагмента HTML. Если контекст не сохраняется, сохраняется только фрагмент, а StartHTML=EndHTML = -1.

Назад в оглавление темы
На главную страницу темы

Hosted by uCoz