Markdown öğesini Belge Nesne Modeline Çevir (DOM)

Bir belgenin içeriğini ve biçimlendirmesini programlı olarak okumak, değiştirmek ve değiştirmek için belgeyi Aspose.Words Belge Nesne Modeline (DOM) çevirmeniz gerekir.

Word belgelerinin aksine, Markdown, belgede açıklanan DOM belgesine uymaz. Aspose.Words Belge Nesne Modeli (DOM) makale. Ancak Aspose.Words, metin biçimlendirme, tablolar, üstbilgiler ve diğerleri gibi öğeleriyle başarılı bir şekilde çalışabilmemiz için Markdown belgelerini DOM ‘e ve geriye çevirmek için kendi mekanizmasını sağlar.

Bu makalede, çeşitli markdown özelliklerin Aspose.Words DOM biçimine ve Markdown biçimine nasıl çevrilebileceği açıklanmaktadır.

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

Bu mekanizmanın temel zorluğu sadece Markdown ‘ı DOM ‘e çevirmek değil, aynı zamanda ters dönüşümü yapmaktır – belgeyi en az kayıpla Markdown biçimine geri kaydetmek. Ters dönüşümün önemsiz olmadığı çok düzeyli alıntılar gibi öğeler vardır.

Çeviri motorumuz, kullanıcıların yalnızca mevcut bir Markdown belgedeki karmaşık öğelerle çalışmasına değil, aynı zamanda orijinal yapısıyla sıfırdan Markdown biçiminde kendi belgelerini oluşturmasına da olanak tanır. Çeşitli öğeler oluşturmak için, bu makalenin ilerleyen bölümlerinde açıklanan belirli kurallara göre belirli adlara sahip stilleri kullanmanız gerekir. Bu tür stiller programlı olarak oluşturulabilir.

Ortak Çeviri İlkeleri

Satır içi bloklar için Font biçimlendirme kullanıyoruz. Aspose.Words DOM içindeki bir Markdown özelliği için doğrudan bir yazışma olmadığında, bazı özel kelimelerden başlayan bir ada sahip bir karakter stili kullanırız.

Konteyner blokları için, iç içe Markdown özellikleri belirtmek için stil kalıtımını kullanırız. Bu durumda, iç içe geçmiş özellikler olmasa bile, bazı özel kelimelerden başlayan bir ada sahip paragraf stilleri de kullanırız.

Madde işaretli ve sıralı listeler Markdown içindeki kapsayıcı bloklarıdır. İç içe geçmeleri, stil kalıtımını kullanan diğer tüm kapsayıcı bloklarda olduğu gibi DOM ile temsil edilir. Bununla birlikte, ek olarak, DOM içindeki listeler, liste stilinde veya paragraf biçimlendirmesinde karşılık gelen sayı biçimlendirmesine sahiptir.

Satır İçi Bloklar

Bold, Italic veya Strikethrough satır içi markdown özelliklerini çevirirken Font biçimlendirme kullanıyoruz.

Markdown özellik Aspose.Words
Bold
**bold text**
get_Font()->set_Bold(true)
Italic
*italic text*
get_Font()->set_Italic(true)
Strikethrough
~Strikethrough text~
get_Font()->set_StrikeThrough(true)

InlineCode kelimesinden başlayan bir ada sahip bir karakter stili, ardından InlineCode özelliği için isteğe bağlı bir nokta (.) ve bir dizi geri işaret (`) kullanıyoruz. Bir dizi backtick kaçırılırsa, varsayılan olarak bir backtick kullanılır.

Markdown özellik Aspose.Words
InlineCode
**inline code**
get_Font()->set_StyleName(u"InlineCode[.][N]")
Autolink
<scheme://domain.com>
<email@domain.com>
FieldHyperlink sınıfı.
Link
[link text](url)
[link text](<url>"title")
[link text](url 'title')
[link text](url (title))
FieldHyperlink sınıfı.
Image
![](url)
![alt text](<url>"title")
![alt text](url ‘title’)
![alt text](url (title))
Shape sınıfı.

Konteyner Blokları

Belge, başlıklar, paragraflar, listeler, alıntılar ve diğerleri gibi bir kapsayıcı blokları dizisidir. Konteyner blokları 2 sınıflarına ayrılabilir: Yaprak blokları ve Karmaşık Kaplar. Yaprak blokları yalnızca satır içi içerik içerebilir. Karmaşık kaplar, sırayla, Yaprak blokları da dahil olmak üzere başka kap blokları içerebilir.

Yaprak Blokları

Aşağıdaki tablo, Aspose.Words içinde Markdown Yaprak bloklarının kullanımına ilişkin örnekleri göstermektedir:

Markdown özellik Aspose.Words
HorizontalRule
-----
Bu, karşılık gelen HorizontalRule şekline sahip basit bir paragraftır:
DocumentBuilder::InsertHorizontalRule()
ATX Heading
# H1, ## H2, ### H3…
get_ParagraphFormat()->set_StyleName(u"Heading N"), nerede (1<= N <= 9).
Bu, yerleşik bir stile çevrilir ve tam olarak belirtilen desende olmalıdır (soneklere veya öneklere izin verilmez).
Aksi takdirde, karşılık gelen bir stile sahip normal bir paragraf olacaktır.
Setext Heading
=== (if Heading level 1),
--- (if Heading level 2)
get_ParagraphFormat->set_StyleName(u"SetextHeading[some suffix]"), "Heading N" stiline göre.
Eğer (N> = 2), o zaman "Heading 2" kullanılacaktır, aksi takdirde "Heading 1".
Herhangi bir son eke izin verilir, ancak Aspose.Words içe aktarıcı sırasıyla “1” ve “2” numaralarını kullanır.
Indented Code get_ParagraphFormat->set_StyleName(u"IndentedCode[some suffix]")
Fenced Code
``` c#
if ()
then
else
```
get_ParagraphFormat()->set_StyleName(u"FencedCode[.][info string]")
[.] ve [info string] isteğe bağlıdır.

Karmaşık Konteynerler

Aşağıdaki tablo, Aspose.Words içinde Markdown Karmaşık Kapsayıcıları kullanma örneklerini göstermektedir:

Markdown özellik Aspose.Words
Quote
> quote,
>> nested quote
get_ParagraphFormat()->set_StyleName(u"Quote[some suffix]")
Stil adındaki sonek isteğe bağlıdır, ancak Aspose.Words içe aktarıcı sıralı numaraları kullanır 1, 2, 3, …. iç içe geçmiş alıntılar durumunda.
Yuvalama, devralınan stiller aracılığıyla tanımlanır.
BulletedList
- Item 1
- Item 2
- Item 2a
- Item 2b
Madde işaretli listeler paragraf numaralandırması kullanılarak temsil edilir:
get_ListFormat()->ApplyBulletDefault()
3 madde işaretli liste türleri olabilir. Bunlar yalnızca ilk seviyenin numaralandırma biçiminde farklılık gösterir. Bunlar: sırasıyla ‘-’, ‘+’ veya ‘*’.
OrderedList
1. Item 1
2. Item 2
1) Item 2a
2) Item 2b
Sıralı listeler paragraf numaralandırması kullanılarak temsil edilir:
get_ListFormat()->ApplyNumberDefault()
2 sayı biçimi belirteçleri olabilir: ‘.’ ve ‘)’. Varsayılan belirteç ‘.’ ‘dir.

Masalar

Aspose.Words ayrıca aşağıda gösterildiği gibi tabloların DOM ‘e çevrilmesine de izin verir:

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

Ayrıca bakınız