Переводить 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 |
Italic*italic text* |
Font.Italic = true |
Strikethrough~Strikethrough text~ |
Font.StrikeThrough = true |
Мы используем стиль персонажа с именем, начинающимся от слова. <span notrans="<span notrans=" InlineCode
"="">"> с последующей факультативной точкой (.)
и ряд задних ходов (`)
для InlineCode
особенность. Если пропущено несколько бэктиков, то по умолчанию будет использоваться один бэктик.
Markdown особенность | Aspose.Words |
---|---|
InlineCode{1} |
Font.StyleName = “InlineCode[.][N]” |
Autolink<scheme://domain.com> <email@domain.com> |
The FieldHyperlink класс |
Link{1} {2} {3} {4}) |
The FieldHyperlink класс |
Image{1} {2} {3} {4}) |
The Shape класс |
Контейнерные блоки
Документ представляет собой последовательность контейнерных блоков, таких как заголовки, абзацы, списки, цитаты и другие. Блоки контейнеров можно разделить на 2 класса: Блоки листьев и сложные контейнеры. Блоки листьев могут содержать только встроенный контент. Сложные контейнеры, в свою очередь, могут содержать другие контейнерные блоки, в том числе блоки Leaf.
Блоки листьев
В приведенной ниже таблице приведены примеры использования 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 Импортер использует цифры “1” и “2” соответственно |
Indented Code | ParagraphFormat.StyleName = “IndentedCode[some suffix]” |
Fenced Code
|
ParagraphFormat.StyleName = “FencedCode[.][info string]” The [.] и [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 типа списков. Они диффундируют только в формате нумерации самого первого уровня. Это: ‘-’ , ‘+’ или ‘*’ соответственно |
OrderedList1. Item 1 2. Item 2 1) Item 2a 2) Item 2b |
Упорядоченные списки представлены с использованием нумерации пунктов:ListFormat.ApplyNumberDefault() Может быть 2 символа формата: “.” и “.” Маркер по умолчанию - “…” |
Таблицы
Aspose.Words позволяет переводить таблицы в DOM, Как показано ниже:
Markdown особенность | Aspose.Words |
---|---|
Table а) |
b<br /> - |