Переводить Markdown то Document Object Model ()DOM)
Чтобы программно читать, манипулировать и изменять содержание и форматирование документа, вам нужно перевести его на веб-сайт. Aspose.Words Document Object Model ()DOM).
В отличие от текстов, 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 или Strikethroughinline markdown особенности.
Markdown особенность | Aspose.Words | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Bold{1} |
Font.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* |
Font.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~ |
Font.StrikeThrough = true |
||||||||||||||
|
Мы используем стиль персонажа с именем, начинающимся от слова. InlineCode
с последующей факультативной точкой (.)
и несколько задних ходов (`)
для InlineCode
особенность. Если пропущено несколько бэктиков, то по умолчанию будет использоваться один бэктик.
Markdown особенность | Aspose.Words | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
InlineCode{1} |
Font.StyleName = “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> |
The 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{1} {2} {3} {4}) |
The 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{1} {2} {3} {4}) |
The 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 класса: Блоки листьев и сложные контейнеры. Блоки листьев могут содержать только встроенный контент. Сложные контейнеры, в свою очередь, могут содержать другие контейнерные блоки, в том числе блоки Leaf.
Блоки листьев
В приведенной ниже таблице приведены примеры использования Markdown Листья блокируют Aspose.Words:
Markdown особенность | Aspose.Words | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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… |
ParagraphFormat.StyleName = "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=== (если уровень 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]” |
||||||||||||||||||||||
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
|
ParagraphFormat.StyleName = “FencedCode[.][info string]” The [.] и [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 |
ParagraphFormat.StyleName = “Quote[some suffix]” Суффикс в названии стиля необязателен, но Aspose.Words Импортер использует упорядоченные номера 1, 2, 3, …. в случае вложенных котировок. Гнездо определяется через унаследованные стили |
||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||
BulletedList- Item 1 - Item 2 - Item 2a - Item 2b |
Бюллетени представлены с использованием нумерации пунктов:ListFormat.ApplyBulletDefault() Могут быть 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
|
|||||||||||||||||||||||||||||
OrderedList1. Item 1 2. Item 2 1) Item 2a 2) Item 2b |
Упорядоченные списки представлены с использованием нумерации пунктов:ListFormat.ApplyNumberDefault() Может быть 2 символа формата: “.” и “.” Маркер по умолчанию - “…” |
||||||||||||||||||||||||||||
|
Таблицы
Aspose.Words позволяет переводить таблицы в DOM, Как показано ниже:
Markdown особенность | Aspose.Words |
---|---|
Table а) |
b<br /> - |
|