Übersetzung Markdown bis Document Object Model (DOM)

Um den Inhalt und die Formatierung eines Dokuments programmatisch zu lesen, zu manipulieren und zu modifizieren, müssen Sie es in die Aspose.Words Document Object Model (DOM)

Im Gegensatz zu Word-Dokumenten, Markdown nicht mit der DOM in der Aspose.Words Document Object Model (DOM) Artikel. Allerdings Aspose.Words einen eigenen Mechanismus zur Übersetzung Markdown Dokumente DOM und zurück, so dass wir mit ihren Elementen wie Textformatierung, Tabellen, Header und andere erfolgreich arbeiten können.

Dieser Artikel erklärt, wie die verschiedenen markdown Funktionen können in Aspose.Words DOM und zurück zu Markdown Format.

Komplexität der Übersetzung Markdown – DOM – Markdown

Die Hauptschwierigkeit dieses Mechanismus ist nicht nur zu übersetzen Markdown bis DOM, aber auch die umgekehrte Transformation zu tun – das Dokument zurück zu speichern Markdown Format mit minimalem Verlust. Es gibt Elemente, wie mehrstufige Zitate, für die die umgekehrte Transformation nicht trivial ist.

Unsere Übersetzungsmaschine ermöglicht es Benutzern nicht nur, mit komplexen Elementen in einem bestehenden zu arbeiten Markdown dokument, aber auch um ein eigenes Dokument zu erstellen Markdown Format mit der ursprünglichen Struktur von Grund auf. Um verschiedene Elemente zu erstellen, müssen Sie Stile mit bestimmten Namen nach bestimmten Regeln verwenden, die später in diesem Artikel beschrieben werden. Solche Stile können programmatisch erstellt werden.

Englische Übersetzung Grundsätze

Wir verwenden Font Formatierung für Inline-Blöcke. Wenn es keine direkte Korrespondenz für eine Markdown Funktion in Aspose.Words DOM, wir verwenden einen Charakterstil mit einem Namen, der von einigen speziellen Wörtern beginnt.

Für Containerblöcke verwenden wir Stilerbung, um geschachtelt zu bezeichnen Markdown Merkmale. In diesem Fall, auch wenn es keine geschachtelten Funktionen gibt, verwenden wir auch Paragraph-Stile mit einem Namen, der von einigen speziellen Wörtern beginnt.

Geprägte und bestellte Listen sind Containerblöcke in Markdown auch. Ihr Nest ist in DOM die gleiche Weise wie für alle anderen Containerblöcke mit Stil Erbe. Jedoch zusätzlich Listen in DOM haben die Nummernformatierung in entweder Listenstil oder Absatzformatierung entsprechen.

Inline-Blöcke

Wir verwenden Font Formatierung beim Übersetzen Bold, Italic oder markdown Merkmale.

Markdown Funktion Aspose.Words
Bold
{1}
Font.Bold = true
Italic
*italic text*
Font.Italic = true
Strikethrough
~Strikethrough text~
Font.StrikeThrough = true

Wir verwenden einen Charakterstil mit einem Namen, der von dem Wort abgeht <span notrans="<span notrans=" InlineCode"="">,"> gefolgt von einem optionalen Punkt (.) und eine Reihe von Backticks (`) für die InlineCode Funktion. Wird eine Anzahl von Backticks verpasst, wird standardmäßig ein Backtick verwendet.

Markdown Funktion Aspose.Words
InlineCode
{1}
Font.StyleName = “InlineCode[.][N]”
Autolink
<scheme://domain.com>
<email@domain.com>
Die FieldHyperlink Klasse
Link
{1}
{2}
{3}
{4})
Die FieldHyperlink Klasse
Image
{1}
{2}
{3}
{4})
Die Shape Klasse

Containerblöcke

Ein Dokument ist eine Folge von Containerblöcken wie Überschriften, Absätze, Listen, Zitate und andere. Containerblöcke können in 2 Klassen unterteilt werden: Blattblöcke und komplexe Container. Blattblöcke können nur Inline-Inhalte enthalten. Komplexe Behälter können wiederum andere Containerblöcke enthalten, einschließlich Blattblöcke.

Blattblöcke

Die folgende Tabelle zeigt Beispiele für die Verwendung Markdown Blattblöcke Aspose.Words:

Markdown Funktion Aspose.Words
HorizontalRule
-----
Dies ist ein einfacher Absatz mit einer entsprechenden HorizontalRule-Form:
DocumentBuilder.InsertHorizontalRule()
ATX Heading
# H1, ## H2, ### H3…
ParagraphFormat.StyleName = “Heading N”, wobei (1<= N <= 9)
Dies wird in einen eingebauten Stil übersetzt und sollte genau vom angegebenen Muster sein (keine Suffixes oder Präfixe sind erlaubt).
Andernfalls wird es nur ein regelmäßiger Absatz mit einem entsprechenden Stil sein
Setext Heading
=== (wenn Rubrik 1)
--- (wenn Rubrik 2)
ParagraphFormat.StyleName = “SetextHeading[some suffix]”, basierend auf “Heading N” Stil.
Wenn (N >= 2), dann “Heading 2” wird verwendet, ansonsten “Heading 1”.
Jeder Suffix ist erlaubt, aber Aspose.Words Einführer verwendet die Nummern “1” bzw. “2”
Indented Code ParagraphFormat.StyleName = “IndentedCode[some suffix]”
Fenced Code
``` java
if ()
then
else
```
ParagraphFormat.StyleName = “FencedCode[.][info string]”
Die [.] und [info string] sind optional

Komplexe Container

Die folgende Tabelle zeigt Beispiele für die Verwendung Markdown Komplexe Container in Aspose.Words:

Markdown Funktion Aspose.Words
Quote
> quote,
>> nested quote
ParagraphFormat.StyleName = “Quote[some suffix]”
Der Suffix im Stil ist optional, aber Aspose.Words Einführer verwendet die bestellten Nummern 1, 2, 3, … bei geschachtelten Angeboten.
Das Nesting wird über die geerbten Stile definiert
BulletedList
- Item 1
- Item 2
- Item 2a
- Item 2b
Geringe Listen werden mit Absatznummerierung dargestellt:
ListFormat.ApplyBulletDefault()
Es gibt 3 Arten von geschossenen Listen. Sie sind nur in einem nummerierenden Format der ersten Ebene diff. Das sind: ‘-’, ‘+’ oder ‘*’ bzw
OrderedList
1. Item 1
2. Item 2
1) Item 2a
2) Item 2b
Die bestellten Listen werden mit Absatznummerierung dargestellt:
ListFormat.ApplyNumberDefault()
Es können 2 Nummernformatmarker vorhanden sein: “.” und “). Der Standardmarker ist “.”

Tabellen

Aspose.Words ermöglicht auch Tabellen in DOM, wie unten gezeigt:

Markdown Funktion Aspose.Words
Table
a | B.
- Ja | - Ja.
c) | dgl.
Table, Row und Cell Klassen

Siehe auch