Bir Markdown Document Object Model'a çevirin (DOM)

Belgenin içeriğini ve biçimlendirmesini programlı olarak okumak, değiştirmek ve değiştirmek için, bunu Aspose.Words Document Object Model ( DOM ) ‘e çevirmek gerekir.

Word belgeleriyle çelişkili olarak, Markdown makale Aspose.Words Document Object Model (DOM) içinde açıklanan DOM’ü takip etmez. Bununla birlikte, Aspose.Words kendi mekanizmasını çevirerek Markdown belgeleri için DOM ve geri çevirme, bu nedenle metin biçimlendirme, tablolar, başlıklar vb. gibi öğeleri ile başarıyla çalışabiliriz.

Bu makale, çeşitli markdown özelliklerinin nasıl Aspose.Words DOM ve geri Markdown formatına çevrildiğini gösterir.

Çevirinin karmaşıklığı Markdown – DOM – Markdown

Bu mekanizmanın ana zorluğu yalnızca Markdown’i DOM’e çevirmek değil, aynı zamanda ters dönüşümü gerçekleştirmektir – belgenin en az kaybıyla Markdown formatına geri dönüştürülmesini sağlamaktır. Ters dönüşüm için üçgen alıntılar gibi bazı elemanlar söz konusudur ve bu elemanların ters dönüşümü kolay değildir.

Çeviri motorumuz kullanıcıların var olan bir Markdown belgesinde karmaşık öğelerle çalışmasına olanak verir, ancak aynı zamanda orijinal yapısından başlayarak kendi Markdown biçimindeki belgelerini sıfırdan oluşturmasına da izin verir. Çeşitli öğeler oluşturmak için belirli kurallar daha sonra bu makalede açıklanan belirli adlara sahip stilleri kullanmanız gerekir. Bu stiller programatik olarak oluşturulabilir.

Ortak Çeviri İlkeleri

Çizgili bloklar için Font biçimlendirme kullanıyoruz. Bir özelliğin doğrudan karşılığı olmadığında bir Markdown özelliği var Aspose.Words DOM, bir karakter stilini kullanırız, adı bazı özel kelimelerden başlar.

Kapsayıcı bloklar için, iç içe geçmiş Markdown özellikleri göstermek için stil devralma kullanırız. Bu durumda, iç içe geçmiş özelliklerin bile olmaması durumunda bile, özel kelimelerle başlayan bir ad ile paragraf stilleri de kullanırız.

Girintili ve sıralı liste Markdown içinde de kaplama bloklarıdır. Onların iç içe geçmesi stil kalıtımı kullanarak diğer tüm kaplama blokları gibi DOM’de aynı şekilde temsil edilir. Bununla birlikte, ek olarak, DOM’deki listeler liste tarzında ya da paragraf biçimlendirmesi ile uyumlu sayısal bir biçimlendirme kullanır.

İnline Bloklar

Bu, çevirirken Font biçimlendirme kullanırız, Bold ve Italic veya ~Döndürme~ iç içe geçmiş markdown özellikleri.

Markdown özelliğini Aspose.Words
Bold
{1}
Font.Bold = true
Italic
*italic text*
Font.Italic = true
Strikethrough
~Strikethrough text~
Font.StrikeThrough = true

Bir karakter stilimiz var, adı InlineCode kelimesiyle başlar, ardından isteğe bağlı bir nokta (.) ve birkaç ters tırnak (`) ile birlikte kullanılır InlineCode özelliği. Ters tırnak sayısı eksikse varsayılan olarak tek bir ters tırnak kullanılır.

Markdown özelliği Aspose.Words
InlineCode
{1}
Font.StyleName = “InlineCode[.][N]”
Autolink
<scheme://domain.com>
<email@domain.com>
The FieldHyperlink sınıfı.
Link
{1}
{2}
{3}
{4})
FieldHyperlink sınıfı.
Image
{1}
{2}
{3}
{4})
Shape sınıfı.

Konteyner Blokları

Bir belge başlıklar, paragraflar, listeler, alıntılar ve diğerleri gibi kapsayıcı blokların bir dizisidir. Kapsayıcı bloklar 2 sınıfa ayrılabilir: Yaprak blokları ve Karmaşık Kapsayıcılar. Yaprak bloklar sadece iç içe geçmiş içeriği içerebilir. Karmaşık kapsayıcılar ise diğer kapsayıcı blokları, yaprak blokları dahil olmak üzere içerebilir.

Yaprak Blokları

Aşağıdaki tablo Aspose.Words ‘da kullanılan Markdown Leaf bloklarının örneklerini göstermektedir:

Markdown özelliği Aspose.Words
HorizontalRule
-----
Bu, karşılık gelen bir HorizontalRule şekline sahip basit bir paragraftır:
DocumentBuilder.InsertHorizontalRule()’’
ATX Heading< br / > # H1, ## H2, ### H3… ParagraphFormat.StyleName = “Heading N”, burada (1<= N <= 9).
Bu yerleşik bir stil ile çevrilir ve kesinlikle belirtilen kalıba uymalıdır (son ekleri veya öneki izin verilmez).
aksi takdirde, sadece normal bir paragrafla eşleşen bir stile sahip olacaktır.
Setext Heading
=== (eğer Başlık Düzeyi 1),
--- (eğer Başlık Düzeyi 2)
ParagraphFormat.StyleName = “SetextHeading[some suffix]”, “Heading N”'e dayalı stil.
Eğer (N >= 2), o zaman “Heading 2” kullanılacak, aksi takdirde “Heading 1”.
Herhangi bir sonek izin verilir fakat Aspose.Words içeri aktarıcı sırasıyla “1” ve “2” sayılarını kullanır.
Indented Code
<br/>if ()<br/>then<br/>else<br/>```
ParagraphFormat.StyleName = “IndentedCode[some suffix]”

Karma Kapsayıcılar

Aşağıdaki tabloda, Markdown Karma Kapsayıcıların Aspose.Words’da kullanımının örnekleri gösterilmektedir:

Markdown özelliği Aspose.Words
0Quote
1> quote,
2>> nested quote
ParagraphFormat.StyleName = “Quote[some suffix]”
Stilin adı için sonek isteğe bağlıdır, ancak Aspose.Words iç içe geçmiş alıntılar durumunda düzgün numaralar 1, 2, 3, …. kullanır.
İç içe geçme, miras alınan stiller aracılığıyla tanımlanır.
BulletedList
- Item 1
- Item 2
- Item 2a
- Item 2b
Puanlı listeler paragraf numaralandırma kullanılarak temsil edilir:
ListFormat.ApplyBulletDefault()
There can be 3 types of bulleted lists. They are only diff in a numbering format of the very first level. These are: ‘-’, ‘+’ or ‘*’ respectively.
OrderedList
1. Item 1
2. Item 2
1) Item 2a
2) Item 2b
Numaralı sıralı listeler paragraf numaralandırması ile gösterilir:
ListFormat.ApplyNumberDefault()
İki numara biçimi işareti kullanılabilir: ‘.’ ve ‘)’. Varsayılan işaret ‘.’dir.

Masalar

Aspose.Words ayrıca aşağıda gösterildiği gibi tabloları DOM’e çevirmenizi sağlar:

Markdown özellik Aspose.Words
Table
a | b
- | -
c | d
Table, Row ve Cell sınıfları.

Ayrıca bakınız