Перетворити Markdown в об'єктну модель документа (DOM)
Щоб програмно зчитувати вміст і форматування документа, маніпулювати ним і змінювати їх, Вам необхідно перетворити його в об’єктну модель документа Aspose.Words (DOM).
На відміну від документів Word, Markdown не відповідає DOM, описаним в об’єктній моделі документа Aspose.Words (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 вбудованих функцій markdown.
Markdown особливість | Aspose.Words | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Bold**bold text** |
get_Font()->set_Bold(true) |
||||||||||||||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
|
|||||||||||||||
Italic*italic text* |
get_Font()->set_Italic(true) |
||||||||||||||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
|
|||||||||||||||
Strikethrough~Strikethrough text~ |
get_Font()->set_StrikeThrough(true) |
||||||||||||||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
|
Ми використовуємо стиль символів з іменем, яке починається зі слова InlineCode
, за яким слідує необов’язкова точка (.)
та кілька зворотних міток (`)
для елемента InlineCode
. Якщо пропущено кілька зворотних міток, то за замовчуванням буде використовуватися одна зворотна мітка.
Markdown особливість | Aspose.Words | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
InlineCode**inline code** |
get_Font()->set_StyleName(u"InlineCode[.][N]") |
||||||||||||||||||||||||||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
|
|||||||||||||||||||||||||||
Autolink<scheme://domain.com> <email@domain.com> |
Клас FieldHyperlink. | ||||||||||||||||||||||||||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
|
|||||||||||||||||||||||||||
Link[link text](url) [link text](<url>"title") [link text](url 'title') [link text](url (title)) |
Клас FieldHyperlink. | ||||||||||||||||||||||||||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
|
|||||||||||||||||||||||||||
Image   ) |
Клас Shape. | ||||||||||||||||||||||||||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
|
Контейнерні блоки
Документ являє собою послідовність блоків-контейнерів, таких як заголовки, абзаци, списки, цитати та інші. Блоки-контейнери можна розділити на 2 класи: кінцеві блоки і складні контейнери. Кінцеві блоки можуть містити лише вбудований вміст. Складні контейнери, у свою чергу, можуть містити інші блоки контейнерів, включаючи кінцеві блоки.
Листові блоки
У таблиці нижче наведено приклади використання кінцевих блоків Markdown в Aspose.Words:
Markdown особливість | Aspose.Words | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
HorizontalRule----- |
Це простий абзац із відповідною формою HorizontalRule:DocumentBuilder::InsertHorizontalRule() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ATX Heading# H1, ## H2, ### H3… |
get_ParagraphFormat()->set_StyleName(u"Heading N") , де (1< = N < = 9).Це перекладається у вбудований стиль і має точно відповідати вказаному шаблону (суфікси та префікси заборонені). В іншому випадку це буде просто звичайний абзац із відповідним стилем. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Setext Heading=== (if Heading level 1),--- (if Heading level 2) |
get_ParagraphFormat->set_StyleName(u"SetextHeading[some suffix]") , заснований на стилі “Заголовок N”.Якщо (N > = 2), то буде використано “Heading 2”, інакше “Heading 1”. Допускається використання будь-якого суфікса, але Aspose.Words імпортер використовує цифри “1” і “2” відповідно. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Indented Code | get_ParagraphFormat->set_StyleName(u"IndentedCode[some suffix]") |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Fenced Code
|
get_ParagraphFormat()->set_StyleName(u"FencedCode[.][info string]") значення [.] та [info string] є необов’язковими. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
|
Складні контейнери
У таблиці нижче наведено приклади використання Markdown складних контейнерів у Aspose.Words:
Markdown особливість | Aspose.Words | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Quote> quote, >> nested quote |
get_ParagraphFormat()->set_StyleName(u"Quote[some suffix]") суфікс у назві стилю необов’язковий, але Aspose.Words імпортер використовує впорядковані номери 1, 2, 3,…. у разі вкладених лапок. Вкладеність визначається за допомогою успадкованих стилів. |
||||||||||||||||||||||||||||||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
|
|||||||||||||||||||||||||||||||
BulletedList- Item 1 - Item 2 - Item 2a - Item 2b |
Марковані списки представлені з використанням нумерації абзаців:get_ListFormat()->ApplyBulletDefault() марковані списки можуть бути трьох типів. Вони розрізняються тільки в форматі нумерації самого першого рівня. Це: ‘-’ , ‘+’ або ‘*’ відповідно. |
||||||||||||||||||||||||||||||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
|
|||||||||||||||||||||||||||||||
OrderedList1. Item 1 2. Item 2 1) Item 2a 2) Item 2b |
Упорядковані списки представлені за допомогою нумерації абзаців:get_ListFormat()->ApplyNumberDefault() може бути 2 маркери числового формату: ‘.’ і ‘)’. За замовчуванням використовується маркер ‘.’. |
||||||||||||||||||||||||||||||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
|
Таблиця
Aspose.Words також дозволяє перетворити таблиці на DOM, Як показано нижче:
Markdown особливість | Aspose.Words | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Table a|b -|- c|d |
класи Table, Row і Cell. | ||||||||||||||||||||||||||||||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
|