Превод 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 са отговаряли на форматиране на номера в стил на списъка или форматиране на параграф.
Входни блокове
Ние използваме Font форматиране при превод Bold, Italic или ~ ~ Strikethrough ~ ~ inline markdown особености.
Markdown функция | Aspose.Words |
---|---|
Bold{1} |
Font.Bold = true |
Italic*italic text* |
Font.Italic = true |
Strikethrough~Strikethrough text~ |
Font.StrikeThrough = true |
|
Използваме стил на героя с име, което започва от думата InlineCode
последвано от незадължителна точка (.)
и редица подпори (`)
за InlineCode
функция. Ако се пропусне определен брой backticks, тогава един backtick ще се използва по подразбиране.
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 класа: Листни блокове и комплексни контейнери. Листните блокове могат да съдържат само в линия съдържание. Комплексните контейнери от своя страна могат да съдържат други контейнери, включително Листни блокове.
Листни блокове
Таблицата по- долу показва примери за използване Markdown Листни блокове в Aspose.Words:
Markdown функция | Aspose.Words |
---|---|
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 Вносителят използва номера съответно …. .. .. .. |
|
|
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 вида списъци с куршуми. Те са само diff в номерационен формат на първото ниво. Това са: ‘-’ , ‘+’ или ‘*’ съответно |
OrderedList1. Item 1 2. Item 2 1) Item 2a 2) Item 2b |
Поръчаните списъци се представят с номерация на параграфа:ListFormat.ApplyNumberDefault() Може да има 2 маркери за формат на номера: гот.. и) Подразбиращият се маркер е .. |
|
Таблици
Aspose.Words също така позволява да се превежда таблици в DOM, както е показано по-долу:
Markdown функция | Aspose.Words |
---|---|
Table год |
b<br /> - |
|