Traduire Markdown à Document Object Model (DOM)

Pour lire, manipuler et modifier programmatiquement le contenu et le formatage d’un document, vous devez le traduire au Aspose.Words Document Object Model (DOM).

Contrairement aux documents Word, Markdown ne sont pas conformes à la DOM décrit dans Aspose.Words Document Object Model (DOM) article. Toutefois, Aspose.Words fournit son propre mécanisme de traduction Markdown pour DOM et retour, afin que nous puissions travailler avec succès avec leurs éléments tels que le formatage de texte, les tables, les en-têtes, et d’autres.

Cet article explique comment les markdown les fonctionnalités peuvent être traduites en Aspose.Words DOM et retour à Markdown modèle.

La complexité de la traduction Markdown – DOM – Markdown

La principale difficulté de ce mécanisme n’est pas seulement de traduire Markdown à DOM, mais aussi pour faire la transformation inverse – pour sauvegarder le document Markdown format avec perte minimale. Il y a des éléments, comme les guillemets multiniveaux, pour lesquels la transformation inverse n’est pas banale.

Notre moteur de traduction permet non seulement aux utilisateurs de travailler avec des éléments complexes dans une Markdown mais aussi pour créer leur propre document dans Markdown format avec la structure originale à partir de zéro. Pour créer différents éléments, vous devez utiliser des styles avec des noms spécifiques selon certaines règles décrites plus loin dans cet article. Ces styles peuvent être créés de façon programmatique.

Traduction commune Principes

Nous utilisons Font formatage pour les blocs en ligne. Lorsqu’il n’y a pas de correspondance directe pour Markdown fonctionnalité dans Aspose.Words DOM, nous utilisons un style de caractère avec un nom qui commence par des mots spéciaux.

Pour les blocs de conteneurs, nous utilisons l’héritage style pour indiquer Markdown caractéristiques. Dans ce cas, même s’il n’y a pas de caractéristiques imbriquées, nous utilisons également des styles de paragraphes avec un nom qui commence par des mots spéciaux.

Les listes Bulleted et commandées sont des blocs de conteneurs dans Markdown aussi. Leur nidification est représentée dans DOM de la même manière que pour tous les autres blocs de conteneurs utilisant l’héritage de style. Toutefois, en outre, DOM ont correspondu au formatage de nombre dans le style de liste ou de paragraphe.

Blocs en ligne

Nous utilisons Font formatage lors de la traduction Bold, Italic ou ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ markdown caractéristiques.

Markdown Caractéristique Aspose.Words
Bold
{1}
Font.Bold = true
Italic
*italic text*
Font.Italic = true
Strikethrough
~Strikethrough text~
Font.StrikeThrough = true

Nous utilisons un style de caractère avec un nom qui commence par le mot <span notrans="<span notrans=" InlineCode"="">""> suivi d’un point facultatif (.) et un certain nombre de backticks (`) pour InlineCode Caractéristique. Si un certain nombre de backticks est manqué, alors un backtick sera utilisé par défaut.

Markdown Caractéristique Aspose.Words
InlineCode
{1}
Font.StyleName = “InlineCode[.][N]”
Autolink
<scheme://domain.com>
<email@domain.com>
Les FieldHyperlink En cours
Link
{1}
{2}
{3}
{4})
Les FieldHyperlink En cours
Image
{1}
{2}
{3}
{4})
Les Shape En cours

Blocs de conteneurs

Un document est une séquence de blocs de conteneurs tels que des titres, des paragraphes, des listes, des citations, etc. Les blocs de conteneurs peuvent être divisés en 2 classes: Blocs de feuilles et conteneurs complexes. Les blocs de feuilles ne peuvent contenir que du contenu en ligne. Les contenants complexes, à leur tour, peuvent contenir d’autres blocs de contenants, y compris les blocs de feuilles.

Blocs de feuilles

Le tableau ci-dessous donne des exemples de Markdown Blocs de feuilles Aspose.Words:

Markdown Caractéristique Aspose.Words
HorizontalRule
-----
Il s’agit d’un paragraphe simple avec une forme de règle horizontale correspondante:
DocumentBuilder.InsertHorizontalRule()
ATX Heading
# H1, ## H2, ### H3…
ParagraphFormat.StyleName = “Heading N”, où (1<= N <= 9).
Ceci est traduit dans un style intégré et devrait être exactement du modèle spécifié (aucun suffixe ou préfixe ne sont autorisés).
Sinon, ce ne sera qu’un paragraphe régulier avec un style correspondant
Setext Heading
=== (si la rubrique 1 est utilisée),
--- (si le niveau de la rubrique 2)
ParagraphFormat.StyleName = “SetextHeading[some suffix]”, sur la base “Heading N” style.
Si (N >= 2), alors “Heading 2” sera utilisé, sinon “Heading 1”.
Tout suffixe est autorisé, mais Aspose.Words l’importateur utilise respectivement les numéros “1” et “2”
Indented Code ParagraphFormat.StyleName = “IndentedCode[some suffix]”
Fenced Code
``` java
if ()
then
else
```
ParagraphFormat.StyleName = “FencedCode[.][info string]”
Les [.] et [info string] sont facultatifs

Conteneurs complexes

Le tableau ci-dessous donne des exemples de Markdown Contenants complexes en Aspose.Words:

Markdown Caractéristique Aspose.Words
Quote
> quote,
>> nested quote
ParagraphFormat.StyleName = “Quote[some suffix]”
Le suffixe dans le nom de style est facultatif, mais Aspose.Words l’importateur utilise les numéros commandés 1, 2, 3, …. en cas de devis imbriqués.
La nidification est définie par les styles hérités
BulletedList
- Item 1
- Item 2
- Item 2a
- Item 2b
Les listes de balles sont représentées en utilisant la numérotation des paragraphes:
ListFormat.ApplyBulletDefault()
Il peut y avoir 3 types de listes par balles. Ils ne sont diff que dans un format de numérotation du tout premier niveau. Ce sont: ‘-’, ‘+’ ou ‘*’ respectivement
OrderedList
1. Item 1
2. Item 2
1) Item 2a
2) Item 2b
Les listes commandées sont représentées en utilisant la numérotation des paragraphes:
ListFormat.ApplyNumberDefault()
Il peut y avoir 2 marqueurs de format de nombre: ‘. Le marqueur par défaut est ‘

Tableaux

Aspose.Words permet également de traduire les tableaux en DOM, comme suit:

Markdown Caractéristique Aspose.Words
Table
“a
b<br />- Oui

Voir aussi