Переводить 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
``` java
if ()
then
else
```
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 типа списков. Они диффундируют только в формате нумерации самого первого уровня. Это: ‘-’, ‘+’ или ‘*’ соответственно
OrderedList
1. Item 1
2. Item 2
1) Item 2a
2) Item 2b
Упорядоченные списки представлены с использованием нумерации пунктов:
ListFormat.ApplyNumberDefault()
Может быть 2 символа формата: “.” и “.” Маркер по умолчанию - “…”

Таблицы

Aspose.Words позволяет переводить таблицы в DOM, Как показано ниже:

Markdown особенность Aspose.Words
Table
а)
b<br />-

Смотрите также