Przetłumacz Markdown do Document Object Model (DOM)
Aby programowo czytać, manipulować i modyfikować zawartość i formatowanie dokumentu, należy przetłumaczyć go na Aspose.Words Document Object Model (DOM).
W przeciwieństwie do dokumentów Worda, Markdown nie jest zgodny z DOM opisane w Aspose.Words Document Object Model (DOM) Artykuł. Jednakże, Aspose.Words zapewnia własny mechanizm tłumaczenia Markdown dokumenty DOM i z powrotem, abyśmy mogli z powodzeniem pracować z ich elementami, takimi jak formatowanie tekstu, tabele, nagłówki i inne.
Ten artykuł wyjaśnia, jak różne markdown funkcje można przetłumaczyć na Aspose.Words DOM i powrót do Markdown format.
Kompleksowość tłumaczenia Markdown - DOM - Markdown
Główną trudnością tego mechanizmu jest nie tylko tłumaczenie Markdown do DOM, ale także zrobić odwrotną transformację - zapisać dokument z powrotem do Markdown format z minimalną stratą. Istnieją elementy, takie jak cytaty wielopoziomowe, dla których transformacja odwrotna nie jest trywialna.
Nasz silnik tłumaczeniowy pozwala użytkownikom nie tylko pracować z skomplikowanymi elementami w istniejących Markdown dokument, ale także do tworzenia własnego dokumentu w Markdown format z oryginalną strukturą od podstaw. Aby stworzyć różne elementy, musisz używać stylów z konkretnymi nazwami zgodnie z niektórymi zasadami opisanymi później w tym artykule. Style takie mogą być tworzone programowo.
Wspólne tłumaczenie Zasady
Używamy Font formatowanie bloków wewnętrznych. W przypadku braku bezpośredniej korespondencji Markdown funkcja w Aspose.Words DOM, Używamy stylu postaci o nazwie, która zaczyna się od specjalnych słów.
Dla bloków kontenerowych, używamy stylu dziedziczenia do określenia gniazda Markdown funkcje. W tym przypadku, nawet jeśli nie ma zagnieżdżonych funkcji, używamy również stylów paragrafów z nazwą, która zaczyna się od niektórych słów specjalnych.
Wystawione i zamówione listy są bloki kontenerowe w Markdown Jak również. Ich gniazda są reprezentowane w DOM w ten sam sposób jak dla wszystkich innych bloków kontenerowych przy użyciu stylu dziedziczenia. Jednakże, dodatkowo, wykazy w DOM mają odpowiadający numer formatowania w stylu listy lub w formacie paragrafu.
Bloki wewnętrzne
Używamy Font formatowanie podczas tłumaczenia Bold, Italic lub ~ ~ Strikethrough ~ ~ inline markdown funkcje.
Markdown funkcja | Aspose.Words |
---|---|
Bold{1} |
Font.Bold = true |
Italic*italic text* |
Font.Italic = true |
Strikethrough~Strikethrough text~ |
Font.StrikeThrough = true |
Używamy stylu znaków z nazwą, która zaczyna się od słowa <span notrans="<span notrans=" InlineCode
"="">", > po której następuje opcjonalna kropka (.)
i kilka tyłków (`)
dla InlineCode
funkcja. W przypadku pominięcia pewnej liczby typków, domyślnie zostanie użyty jeden.
Markdown funkcja | Aspose.Words |
---|---|
InlineCode{1} |
Font.StyleName = “InlineCode[.][N]” |
Autolink<scheme://domain.com> <email@domain.com> |
W FieldHyperlink Klasa |
Link{1} {2} {3} {4}) |
W FieldHyperlink Klasa |
Image{1} {2} {3} {4}) |
W Shape Klasa |
Bloki kontenerów
Dokument jest sekwencją bloków kontenerowych, takich jak nagłówki, paragrafy, listy, cytaty i inne. Bloki kontenerów można podzielić na 2 klasy: Bloki liści i złożone kontenery. Bloki liści mogą zawierać tylko zawartość inline. Z kolei złożone pojemniki mogą zawierać inne bloki kontenerowe, w tym bloki Leaf.
Bloki liści
Poniższa tabela przedstawia przykłady stosowania Markdown Bloki liści w Aspose.Words:
Markdown funkcja | Aspose.Words |
---|---|
HorizontalRule----- |
Jest to prosty akapit o odpowiednim kształcie horyzontalnej zasady:DocumentBuilder.InsertHorizontalRule() |
ATX Heading# H1, ## H2, ### H3… |
ParagraphFormat.StyleName = “Heading N” , gdzie (1 < = N < = 9).To jest przetłumaczone na built- w stylu i powinno być dokładnie określonego wzoru (nie są dozwolone przyrostki lub przedrostki). W przeciwnym razie będzie to zwykły akapit o odpowiednim stylu |
Setext Heading=== (jeżeli zakres 1),--- (jeżeli zakres 2) |
ParagraphFormat.StyleName = “SetextHeading[some suffix]” , w oparciu o “Heading N” Styl.Jeśli (N > = 2), to “Heading 2” zostaną wykorzystane, w przeciwnym razie “Heading 1” .Każdy przyrostek jest dozwolony, ale Aspose.Words Importer stosuje odpowiednio numery “1” i “2” |
Indented Code | ParagraphFormat.StyleName = “IndentedCode[some suffix]” |
Fenced Code
|
ParagraphFormat.StyleName = “FencedCode[.][info string]” W [.] oraz [info string] są opcjonalne |
Kontenery złożone
Poniższa tabela przedstawia przykłady stosowania Markdown Kompleksowe pojemniki w Aspose.Words:
Markdown funkcja | Aspose.Words |
---|---|
Quote> quote, >> nested quote |
ParagraphFormat.StyleName = “Quote[some suffix]” Przyrostek w nazwie stylu jest opcjonalny, ale Aspose.Words Importer stosuje zamówione numery 1, 2, 3,…. w przypadku zagnieżdżonych cytatów. Zagnieżdżenie jest zdefiniowane poprzez odziedziczone style |
BulletedList- Item 1 - Item 2 - Item 2a - Item 2b |
Listy zbiorcze są reprezentowane przy użyciu numeracji paragrafów:ListFormat.ApplyBulletDefault() Mogą być 3 rodzaje list bulletowanych. Są one tylko diff w formacie numeracji pierwszego poziomu. Są to: ‘-’ , ‘+’ lub ‘*’ odpowiednio |
OrderedList1. Item 1 2. Item 2 1) Item 2a 2) Item 2b |
Zamówione listy są reprezentowane przy użyciu numeracji paragrafów:ListFormat.ApplyNumberDefault() Mogą być 2 znaczniki formatu liczb: ‘.’ i') ‘. Domyślny znacznik to’ .' |
Tabele
Aspose.Words pozwala również na tłumaczenie tabel na DOM, jak przedstawiono poniżej:
Markdown funkcja | Aspose.Words |
---|---|
Table “a |
b<br /> - |