翻譯 Markdown 到 Document Object Model (DOM)
「要以程式方式讀取、處理和修改文件的內容和格式,您需要將其翻譯成 Aspose.Words Document Object Model (DOM)。」
與 Word 文檔不同,Markdown 不符合DOM於該Aspose.Words Document Object Model (DOM)篇文章所述的描述。 「不過,Aspose.Words 提供自己的機制來翻譯Markdown 文檔到DOM並回來,所以我們可以成功地與他們的元素如文字格式化、表格、標題和其他的元素合作。」
這篇文章說明了各種 markdown 功能如何翻譯成 Aspose.Words DOM 格式,以及反向轉為 Markdown 格式。
翻譯的複雜度 Markdown – DOM – Markdown
這機制的主要困難,不僅是將 Markdown 翻譯成 DOM ,而且也要進行反向轉換 – 以最少的損失將文件儲存回 Markdown 格式。 有些元素,例如多層引號,其逆轉換並不簡單。
「我們的翻譯引擎除了允許使用者可以在一個現有的 Markdown 文檔中操作複雜元素外,也讓使用者可以從原始結構開始,以 Markdown 格式創建自己的文檔。」 「要創作各種元素,你必須根據本篇文章稍後描述的特定規則,使用具特定名稱的樣式。」 這樣的風格可以程式方式來創造。
常見的翻譯原則
「我們使用 Font 格式化內聯方塊。」 「當 Markdown 功能沒有直接對應於 Aspose.Words 的 DOM 時,我們使用以一些特殊詞語開始的字符格式。」
「對容器塊,我們使用風格繼承來表示嵌套的 Markdown 特徵。」 「在這種情況下,即使沒有嵌套特徵,我們也會使用以特定字詞開頭的段落樣式。」
「項目標記和有序列表是 Markdown 中的容器塊。」 「他們的嵌套方式,以 DOM 的方式來表示,與所有其他容器塊使用風格傳承的方式相同。」 「然而,此外,在 DOM 中的清單有對應的數字格式化,無論是清單格式或段落格式。」
內聯塊
我們在翻譯「Bold」、「Italic」或「Strikethrough內嵌 Font」功能時使用「markdown」格式。
「Markdown功能」 | Aspose.Words |
---|---|
Bold{1} |
Font.Bold = true |
「Italic*italic text* 」 |
Font.Italic = true |
「Strikethrough~Strikethrough text~ 」 |
Font.StrikeThrough = true |
|
「我們使用一個以字元 InlineCode
開始,並接著可選點 (.)
和任意數量的反引號 (`)
來命名之字元風格,用於 InlineCode
特徵。」 「如果遺漏了幾個反引號,則一個反引號將默認使用。」
「Markdown 功能」 | Aspose.Words |
---|---|
「InlineCode {1} 」 |
Font.StyleName = “InlineCode[.][N]” |
「Autolink<scheme://domain.com> <email@domain.com> 」 |
「 FieldHyperlink 類別。」 |
Link{1} {2} {3} {4}) |
「FieldHyperlink 類別。」 |
「Image{1} {2} {3} {4}) 」 |
「Shape 類別。」 |
容器塊
文件是由標頭、段落、清單、引文等容器塊組成的序列。 容器塊可以分為 2 類:葉片塊與複雜容器。 葉塊只能包含內嵌內容。 「複雜容器可以包含其他容器的塊,包括葉塊。」
葉塊
下表列出了在 Aspose.Words 中使用 Markdown Leaf 塊的範例:
「Markdown功能」 | Aspose.Words |
---|---|
HorizontalRule----- |
「這是個簡單的段落,其對應的HorizontalRule形狀:DocumentBuilder.InsertHorizontalRule() 」 |
ATX Heading# H1, ## H2, ### H3… |
「ParagraphFormat.StyleName = “Heading N” ,其中 1 <= N <= 9」。這被翻譯成內建样式,且應完全符合指定模式(不允許有後綴或前綴)。 否則,它只是一個普通段落,具有相應的样式。 |
「Setext Heading=== (若為第1級標題),--- (若為第2級標題)」 |
「ParagraphFormat.StyleName = “SetextHeading[some suffix]” ,以 “Heading N” 樣式為基礎。若 (N >= 2),則使用 “Heading 2” ,否則使用 “Heading 1” 。允許任何尾數,但 Aspose.Words 進口器分別使用數字"1"和"2"。」 |
|
|
Indented Code | ParagraphFormat.StyleName = “IndentedCode[some suffix]” |
「Fenced Code
|
「ParagraphFormat.StyleName = “FencedCode[.][info string]” [.] 和 [info string] 是可選的。」 |
「複雜容器」
下面的表格顯示了 Markdown 複雜容器在 Aspose.Words 中的使用範例:
「Markdown功能」 | Aspose.Words |
---|---|
Quote> quote, >> nested quote |
「ParagraphFormat.StyleName = “Quote[some suffix]” 」在風格名稱中使用的後綴是可選的,「Aspose.Words」匯入器使用嵌套引號中的有序數字(1、2、3…)。 」嵌套定義透過遺傳風格來定義。 |
|
|
「BulletedList - Item 1 - Item 2 - Item 2a - Item 2b 」 |
「無序清單是以段落計數的方式來表示:ListFormat.ApplyBulletDefault() 無序清單有 3 種类型。」 「他們只是在第一層的數字格式上有所不同。」 這些是: ‘-’ 、‘+’ 或 ‘*’ 。 |
「OrderedList 1. Item 1 2. Item 2 1) Item 2a 2) Item 2b 」 |
「有序清單是使用段落計數來表示:ListFormat.ApplyNumberDefault() 可有 2 個數字格式記號: . 和 `)'。」 預設的標記是「.」 | |
|
「表」
「Aspose.Words 也讓您將表格翻譯成 DOM,如下所示:」
Markdown 功能 | Aspose.Words |
---|---|
Table a|b -|- `c|d' | 「Table、Row 和 Cell 課程。」 | |
|
|