Traducir Markdown a Document Object Model (G)DOM)

Para leer, manipular y modificar programáticamente el contenido y formato de un documento, necesita traducirlo al documento Aspose.Words Document Object Model (G)DOM).

En contraste con los documentos de Word, Markdown no se ajusta a DOM descrito en el Aspose.Words Document Object Model (DOM) artículo. Sin embargo, Aspose.Words proporciona su propio mecanismo para traducir Markdown documentos a DOM y atrás, para que podamos trabajar con éxito con sus elementos como el formato de texto, tablas, encabezados y otros.

Este artículo explica cómo los diversos markdown características se pueden traducir Aspose.Words DOM y volver a Markdown formato.

Complejidad de la traducción Markdown – DOM – Markdown

La principal dificultad de este mecanismo no es sólo traducir Markdown a DOM, pero también para hacer la transformación inversa – para guardar el documento de nuevo a Markdown formato con mínima pérdida. Hay elementos, como las citas multinivel, para los cuales la transformación inversa no es trivial.

Nuestro motor de traducción permite a los usuarios no sólo trabajar con elementos complejos en un Markdown documento, pero también para crear su propio documento en Markdown formato con la estructura original desde cero. Para crear varios elementos, es necesario utilizar estilos con nombres específicos según ciertas reglas descritas más adelante en este artículo. Tales estilos se pueden crear programáticamente.

Traducción común Principios

Usamos Font formato para bloques de línea. Cuando no hay correspondencia directa para una Markdown característica en Aspose.Words DOM, usamos un estilo de carácter con un nombre que comienza de algunas palabras especiales.

Para bloques de contenedores, utilizamos herencia estilo para denotar anidado Markdown características. En este caso, incluso cuando no hay características anidadas, también utilizamos estilos de párrafo con un nombre que comienza de algunas palabras especiales.

Listas embotadas y ordenadas son bloques de contenedores en Markdown también. Su anidación está representada en DOM de la misma manera que para todos los demás bloques de contenedores usando la herencia estilo. Sin embargo, además, en las listas DOM han correspondido el formato número en el estilo de lista o el formato del párrafo.

Bloqueos de línea

Usamos Font formato al traducir Bold, Italic ################################################################################################################################################################################################################################################################ markdown características.

Markdown función Aspose.Words
Bold
{1}
Font.Bold = true
Italic
*italic text*
Font.Italic = true
Strikethrough
~Strikethrough text~
Font.StrikeThrough = true

Usamos un estilo de carácter con un nombre que comienza desde la palabra <span notrans="<span notrans=" InlineCode"="">," seguido de un punto opcional (.) y una serie de backticks (`) para el InlineCode función. Si un número de backticks se pierde, entonces un backtick se utilizará por defecto.

Markdown función Aspose.Words
InlineCode
{1}
Font.StyleName = “InlineCode[.][N]”
Autolink
<scheme://domain.com>
<email@domain.com>
El FieldHyperlink clase
Link
{1}
{2}
{3}
{4})
El FieldHyperlink clase
Image
{1}
{2}
{3}
{4})
El Shape clase

Bloques de contenedores

Un documento es una secuencia de bloques de contenedores tales como encabezados, párrafos, listas, citas y otros. Los bloques de contenedores se pueden dividir en 2 clases: Bloques de hoja y contenedores complejos. Los bloques de hoja sólo pueden contener contenido en línea. Los contenedores complejos, a su vez, pueden contener otros bloques de contenedores, incluidos los bloques de hoja.

Bloques de hoja

El cuadro que figura a continuación muestra ejemplos de utilización Markdown Bloques de hoja en Aspose.Words:

Markdown función Aspose.Words
HorizontalRule
-----
Este es un párrafo simple con una forma HorizontalRule correspondiente:
DocumentBuilder.InsertHorizontalRule()
ATX Heading
# H1, ## H2, ### H3…
ParagraphFormat.StyleName = “Heading N”, donde (1 0 = 0 0 = 9).
Esto se traduce en un estilo incorporado y debe ser exactamente del patrón especificado (no se permiten sufijos o prefijos).
De lo contrario, será sólo un párrafo regular con un estilo correspondiente
Setext Heading
=== (si nivel de dirección 1),
--- (si nivel de dirección 2)
ParagraphFormat.StyleName = “SetextHeading[some suffix]”, basado en “Heading N” estilo.
Si (N >= 2), entonces “Heading 2” se utilizará, de lo contrario “Heading 1”.
Cualquier sufijo está permitido, pero Aspose.Words importador utiliza números “1” y “2” respectivamente
Indented Code ParagraphFormat.StyleName = “IndentedCode[some suffix]”
Fenced Code
``` java
if ()
then
else
```
ParagraphFormat.StyleName = “FencedCode[.][info string]”
El [.] y [info string] son opcionales

Contenedores complejos

El cuadro que figura a continuación muestra ejemplos de utilización Markdown Contenedores complejos en Aspose.Words:

Markdown función Aspose.Words
Quote
> quote,
>> nested quote
ParagraphFormat.StyleName = “Quote[some suffix]”
El sufijo en nombre de estilo es opcional, pero Aspose.Words importador utiliza los números ordenados 1, 2, 3, …. en caso de cotizaciones anidadas.
El anidaje se define a través de los estilos heredados
BulletedList
- Item 1
- Item 2
- Item 2a
- Item 2b
Las listas torcidas están representadas utilizando el número de párrafo:
ListFormat.ApplyBulletDefault()
Puede haber 3 tipos de listas de balas. Son sólo diff en un formato numeral del primer nivel. Estos son: ‘-’, ‘+’ o ‘*’ respectivamente
OrderedList
1. Item 1
2. Item 2
1) Item 2a
2) Item 2b
Las listas ordenadas están representadas mediante numeración del párrafo:
ListFormat.ApplyNumberDefault()
Puede haber 2 marcadores de formato número: ‘.’ y ‘)’. El marcador predeterminado es ‘.’

Cuadros

Aspose.Words también permite traducir tablas en DOM, como se muestra a continuación:

Markdown función Aspose.Words
Table
a|b
-|-
c|d
Table, Row y Cell clases

Vea también