HTML-Zwischenablageformat

Die Anforderungen für die Übertragung von HTML-Text über die Zwischenablage unterscheiden sich je nach Szenario. In diesem Artikel wird das Ausschneiden und Einfügen von Fragmenten eines HTML-Dokuments behandelt. Möglicherweise müssen ganze HTML-Dokumente über die Zwischenablage übertragen werden. Dieser Artikel wird jedoch durch die Anforderung zum Übertragen von Fragmenten des ausgewählten HTML-Texts gesteuert. Daher wird eine Methode, bei der das gesamte HTML-Dokument in die Zwischenablage kopiert werden musste, als zu stark bezeichnet.

Das CF HTML-Zwischenablageformat ermöglicht das Speichern eines Fragments von unformatiertem HTML-Text und dessen Kontext in der Zwischenablage _ als ASCII. Dadurch kann der Kontext des HTML-Fragments, das aus allen vorangehenden umgebenden Tags besteht, von einer Anwendung untersucht werden, sodass die umgebenden Tags des HTML-Fragments mit ihren Attributen notiert werden können. Obwohl anwendungen entscheiden müssen, wie solche Fragmente interpretiert werden sollen, sind hier einige grundlegende Richtlinien enthalten, die auf IE4/MSHTML-Implementierungen basieren.

Der offizielle Name der Zwischenablage (die von RegisterClipboardFormat verwendete Zeichenfolge) ist HTML-Format.

Beschreibung

CF HTML ist ein vollständig text-Format (u.a. im HTML-Format und verwendet _ UTF-8) und enthält ein , ein optionales und im Kontext description context das fragment .

Im Folgenden finden Sie ein Beispiel für eine Zwischenablage:

Version:0.9
    StartHTML:71
    EndHTML:170
    StartFragment:140
    EndFragment:160
    StartSelection:140
    EndSelection:160
    <!DOCTYPE>
    <HTML>
    <HEAD>
    <TITLE> The HTML Clipboard</TITLE>
    <BASE HREF="https://sample/specs">
    </HEAD>
    <BODY>
    <UL>
    <!--StartFragment -->
    <LI> The Fragment </LI>
    <!--EndFragment -->
    </UL>
    </BODY>
    </HTML>

Die Beschreibung enthält die Versionsnummer und offsets der Zwischenablage, die angeben, wo der Kontext und das Fragment beginnen und enden. Die Beschreibung ist eine Liste von ASCII-Textschlüsselwörtern (min/list ist nicht sinnvoll), gefolgt von einer Zeichenfolge und getrennt durch einen Doppelpunkt (:).

Version: vv-Versionsnummer der Zwischenablage. Die Startversion ist 0.9.

StartHTML: bytecount vom Anfang der Zwischenablage bis zum Anfang des Kontexts oder -1, wenn kein Kontext angezeigt wird.

EndHTML: bytecount vom Anfang der Zwischenablage bis zum Ende des Kontexts oder -1, wenn kein Kontext angezeigt wird.

StartFragment: bytecount vom Anfang der Zwischenablage bis zum Anfang des Fragments.

EndFragment: bytecount vom Anfang der Zwischenablage bis zum Ende des Fragments.

StartSelection: bytecount vom Anfang der Zwischenablage bis zum Anfang der Auswahl.

EndSelection: bytecount vom Anfang der Zwischenablage bis zum Ende der Auswahl.

Die Schlüsselwörter StartSelection und EndSelection sind optional und müssen ausgelassen werden, wenn die Anwendung diese Informationen nicht generieren soll.

Weitere Informationen dieser Art können später hier hinzugefügt werden, da der HTML-Code am StartHTMLoffset beginnt. Beispielsweise könnten später mehrere Paare von StartFragment/EndFragment hinzugefügt werden, um die nicht zusammenhängende Auswahl von Fragmenten zu unterstützen.

Zur Vereinfachung der Programme, die die Bytecounts generieren, können Bytezählungen durch Nullen aufschlossen werden. Programme, die die Bytecounts generieren, könnten z. B. beliebig zehn (10) Nullen für jedes Schlüsselwort (StartHTML: 0000000000) beeinflussen. Wenn dann die genaue StartHTML-Byteanzahl bekannt ist (z.B. 71), kann das Programm die entsprechende Anzahl von Nullen durch die Byteanzahl ersetzen (StartHTML: 0000000071).

Der einzige Zeichensatz, der von der Zwischenablage unterstützt wird, ist Unicode in seiner UTF-8-Codierung. Da die ersten Zeichen von UTF-8 und ASCII übereinstimmen, ist die Beschreibung immer ASCII, aber die Bytes des Kontexts (ab StartHTML) können alle anderen Zeichen verwenden, die in UTF-8 codiert sind.

Das Ende der Zeilen im Formatheader der Zwischenablage kann CR oder CR/LF oder LF sein.

Das Fragment enthält reinen, gültigen HTML-Code, der den bereich darstellt, den der Benutzer ausgewählt hat (z. B. zum Kopieren). Dieser enthält den ausgewählten Text sowie die öffnenden Tags und Attribute jedes Elements, das ein Endtag innerhalb des ausgewählten Texts enthält, und Endtags am Ende des Fragments für jedes enthaltene Starttag. Dies sind alle Informationen, die für das einfache Einfügen eines HTML-Fragments erforderlich sind.

Dem Fragment sollten die HTML-Kommentare vorangehende und gefolgt werden. und (Kein Leerzeichen zwischen dem !-- und dem Text), um bequem anzugeben, wo das Fragment beginnt und endet. Daher werden der Anfang und das Ende des Fragments durch das Vorhandensein dieser Kommentare und durch die Byteanzahl StartFragment und EndFragment in der Beschreibung angegeben. Von Tools wird erwartet, dass diese Informationen erzeugt werden. Diese Redundanz wurde eingeführt, um schnell den Anfang des Fragments (aus der Byteanzahl) zu finden und die Position des Fragments direkt in der HTML-Struktur zu markieren.

Die Auswahl gibt innerhalb des Fragments den genauen HTML-Bereich an, den der Benutzer ausgewählt hat (z. B. zum Kopieren). Dadurch werden dem Fragment weitere Informationen hinzugefügt, indem der genau ausgewählte Text ohne die öffnenden Tags und Endtags angegeben wird, die hinzugefügt wurden, um sicherzustellen, dass das Fragment wohlgeformter HTML-Code ist.

Die Auswahl ist optional, da im Fragment genügend Informationen für das einfache Einfing enthalten sind. Wenn die Auswahl nicht gespeichert ist, werden sowohl StartSelection als auch EndSelection nicht im Header gespeichert.

Der Kontext ist ein gültiges, vollständiges HTML-Dokument. Dieser Artikel enthält das Fragment und alle vorangehenden umgebenden Tags (Start- und Endtags; diese vorangehenden umgebenden Tags stellen alle übergeordneten Knoten des Fragments bis zum HTML-Knoten dar). Der Artikel enthält auch den vollständigen HEAD und ermöglicht beispielsweise das Ein- und Ausliefern der BASE- und TITLE-Elemente, damit diese zusätzlichen Informationen erhalten werden können. Eine Anwendung, die ein HTML-Fragment in die Zwischenablage kopiert, kann ein BASE-Element erstellen, das in den Kontext eingefügt werden soll, wenn ein solches Element nicht bereits vorhanden ist, damit partielle URLs im Fragment aufgelöst werden können.

Der Kontext ist optional, da genügend Informationen im Fragment enthalten sind, damit ein HTML-Fragment einfach einfügen kann. Wenn der Kontext nicht gespeichert wird, wird nur das Fragment und StartHTML=EndHTML=-1 gespeichert.

Szenarien

In den folgenden Szenarien wird beschrieben, wie der IE4/MSHTML-HTML-Editor das Ausschneiden und Einfügen von HTML behandelt. Andere Anwendungen folgen diesen Szenarien möglicherweise oder nicht. Das hier beschriebene Zwischenablageformat soll Flexibilität bei der Funktionsweise einer Anwendung ermöglichen. (Diese Szenarien zeigen nur guten HTML-Code, d. h. keine überlappenden Tags.)

  1. Einfaches HTML-Fragment.

      • HTML-Text:

        <BODY > This is normal This is bold This is bold italic This is italic < /BODY>

      • Wird wie hier angezeigt:

        This is normal This is bold This is bold italic This is italic

      • Der Text zwischen dem * * wird ausgewählt und in die Zwischenablage kopiert:

        This is normal This is * * bold This is bold italic This is * * italic

      • Dies wird in der Zwischenablage angezeigt (beachten Sie, dass dies die Interpretation von IE4/MSHTML ist):

        Version:0.9

        StartHTML:71

        EndHTML:160

        StartFragment:130

        EndFragment:150

        StartSelection:130

        EndSelection:150

        <KÖRPER>

        >

        boldDies ist fett italischThis

        </BODY>

        </HTML>

      • In diesem Szenario werden nur das BODY-Tag und das HTML-Tag im Kontext vor dem ausgewählten Fragment angezeigt. Beachten Sie, dass Starttags und Endtags im Kontext enthalten sind. Die Auswahl, wie durch StartSelection und EndSelection getrennt, wird fett dargestellt.

  2. Fragment einer Tabelle in HTML.

      • HTML-Text:

        <KÖRPER>

        Head1Element 1Item 2Element 3Element 4
        Element 5Element 6Element 7Element 8
        Head2Element 9Element 10Element 11Element 12
        </BODY>

      • Wird als angezeigt: >

        Head1Element 1Item 2Element 3Element 4
        Element 5Element 6Element 7Element 8
        Head2Element 9Element 10Element 11Element 12
        <! [ CDATA[]]>

      • Die Elemente Item 6, Item7, Item 10 und Item 11 der Tabelle werden als Block ausgewählt und in die Zwischenablage kopiert.

      • Dies wird in der Zwischenablage angezeigt (beachten Sie, dass dies die Interpretation von IE4/MSHTML ist):

        <> < HTML-TEXT>

        Element 6 Element 7
        Element 10 Element 11

        </BODY > < /HTML Die Durch StartSelection und EndSelection getrennte Auswahl > wird fett dargestellt.

  3. Ein Fragment einer geordneten Liste wird in Nur-Text eingefügt.

      • HTML-Text:

        <KÖRPER>

        1. Element 1
        2. Item 2
        3. Element 3
        4. Element 4
        5. Element 5
        6. Element 6
        </BODY>

      • Wird wie hier angezeigt:

        1. Element 1
        2. Item 2
        3. Element 3
        4. Element 4
        5. Element 5
        6. Element 6
      • Der Benutzer wählt die Elemente 3 bis 5 aus und kopiert sie in die Zwischenablage. Der folgende HTML-Code befindet sich in der Zwischenablage:

        <DOCTYPE...>< > < HTML-TEXT>

        1. Element 3
        2. Element 4
        3. Element 5

        </BODY></HTML>

        Die Auswahl, wie durch StartSelection und EndSelection getrennt, wird fett angezeigt.

      • Wenn dieses Fragment jetzt in ein leeres Dokument einfügen wird, wird der folgende HTML-Code erstellt:

        <KÖRPER>

        1. Element 3
        2. Element 4
        3. Element 5
        </BODY>

      • Wird angezeigt als:

        1. Element 3
        2. Element 4
        3. Element 5
  4. Ein- und Ausdingen eines teilweise ausgewählten Region.

      • HTML-Text:

        IE4/MSHTML ist ein WYSIWYG-Editor, der unterstützt:

        • Ausschneiden
        • Kopieren
        • Einfügen

        Dies ist ein großartiges Tool!

      • Wird als:IE4/MSHTML angezeigt und ist ein WYSIWYG-Editor, der unterstützt:

          • Ausschneiden
          • Kopieren
          • Einfügen
      • Der Benutzer wählt von "WYSIWYG" bis "Cop" aus. Der folgende HTML-Code befindet sich in der Zwischenablage:

        <DOCTYPE...>< > < HTML-TEXT>

        WYSIWYG-Editor, der unterstützt

        • Cut
        • Cop

        </BODY > < /HTML Die Durch StartSelection und EndSelection getrennte Auswahl > wird fett dargestellt.

      • Der Benutzer wählt von "opy" bis "Great" aus.

        Der folgende HTML-Code befindet sich in der Zwischenablage:

        <DOCTYPE...>< > < HTML-TEXT>

        • opy

        • Paste This is a

        Great

        </BODY > < /HTML>

        Die Auswahl, wie durch StartSelection und EndSelection getrennt, wird fett dargestellt.