Markdown'i Document Object Model'ye (DOM) çevir
Bir belgenin içeriğini ve biçimlendirmesini programlı olarak okumak, değiştirmek ve değiştirmek için onu Aspose.Words Document Object Model’ye (DOM) çevirmeniz gerekir.
Markdown, Word belgelerinin aksine, Aspose.Words Document Object Model (DOM) makalesinde açıklanan DOM’ye uymuyor. Ancak Aspose.Words, Markdown belgelerini DOM’ye ve geriye çevirmek için kendi mekanizmasını sağlar, böylece metin biçimlendirmesi, tablolar, başlıklar ve diğerleri gibi öğeleriyle başarılı bir şekilde çalışabiliriz.
Bu makalede, çeşitli markdown özelliklerinin Aspose.Words DOM’e ve tekrar Markdown biçimine nasıl çevrilebileceği açıklanmaktadır.
Markdown – DOM – Markdown Çevirisinin Karmaşıklığı
Bu mekanizmanın ana zorluğu yalnızca Markdown’i DOM’ye çevirmek değil, aynı zamanda ters dönüşümü de yapmaktır; yani belgeyi minimum kayıpla tekrar Markdown formatına kaydetmektir. Çok düzeyli tırnak işaretleri gibi ters dönüşümün önemsiz olmadığı öğeler vardır.
Çeviri motorumuz, kullanıcıların yalnızca mevcut bir Markdown belgesindeki karmaşık öğelerle çalışmasına değil, aynı zamanda orijinal yapıyla sıfırdan Markdown formatında kendi belgelerini oluşturmalarına da olanak tanır. Çeşitli öğeler oluşturmak için bu makalenin ilerleyen kısımlarında açıklanan belirli kurallara göre belirli adlara sahip stiller kullanmanız gerekir. Bu tür stiller programlı olarak oluşturulabilir.
Ortak Çeviri İlkeleri
Satır içi bloklar için Font formatını kullanıyoruz. Aspose.Words DOM’de bir Markdown özelliğinin doğrudan karşılığı olmadığında, bazı özel kelimelerden başlayan bir isme sahip karakter stili kullanırız.
Konteyner blokları için, iç içe geçmiş Markdown özelliklerini belirtmek üzere stil mirasını kullanırız. Bu durumda iç içe geçmiş özellikler olmasa bile adı bazı özel kelimelerden başlayan paragraf stillerini de kullanıyoruz.
Madde işaretli ve sıralı listeler Markdown’te de kapsayıcı bloklardır. Yuvalanmaları, stil kalıtımını kullanan diğer tüm konteyner bloklarıyla aynı şekilde DOM’de temsil edilir. Bununla birlikte, ek olarak, DOM’deki listeler, liste stilinde veya paragraf biçiminde karşılık gelen sayı biçimlendirmesine sahiptir.
Satır İçi Bloklar
Bold, Italic veya Strikethrough satır içi markdown özelliklerini çevirirken Font formatını kullanırız.
Markdown özelliği | Aspose.Words |
---|---|
Bold{1} |
Font.Bold = true |
Italic*italic text* |
Font.Italic = true |
Strikethrough~Strikethrough text~ |
Font.StrikeThrough = true |
|
InlineCode
özelliği için InlineCode
kelimesinden başlayan bir isme ve ardından isteğe bağlı bir nokta (.)
‘ye ve bir dizi geri tırnak (`)
‘ine sahip bir karakter stili kullanırız. Bir dizi geri tıklama kaçırılırsa, varsayılan olarak bir geri tıklama kullanılacaktır.
Markdown özelliği | Aspose.Words |
---|---|
InlineCode{1} |
Font.StyleName = “InlineCode[.][N]” |
Autolink<scheme://domain.com> <email@domain.com> |
FieldHyperlink sınıfı |
Link{1} {2} {3} {4}) |
FieldHyperlink sınıfı |
Image{1} {2} {3} {4}) |
Shape sınıfı |
Konteyner Blokları
Belge, başlıklar, paragraflar, listeler, alıntılar ve diğerleri gibi bir dizi kapsayıcı bloktan oluşur. Konteyner blokları 2 sınıfa ayrılabilir: Yaprak bloklar ve Kompleks Konteynerler. Yaprak blokları yalnızca satır içi içerik içerebilir. Karmaşık kaplar ise Yaprak bloklar dahil diğer kap bloklarını içerebilir.
Yaprak Blokları
Aşağıdaki tablo Aspose.Words’de Markdown Yaprak bloklarının kullanımına ilişkin örnekleri göstermektedir:
Markdown özelliği | Aspose.Words |
---|---|
HorizontalRule----- |
Bu, karşılık gelen HorizontalRule şekline sahip basit bir paragraftır:DocumentBuilder.InsertHorizontalRule() |
ATX Heading# H1, ## H2, ### H3… |
ParagraphFormat.StyleName = "Heading N" , burada (1≤ N ≤ 9).Bu, yerleşik bir stile dönüştürülür ve tam olarak belirtilen modelde olmalıdır (hiçbir sonek veya öneklere izin verilmez). Aksi takdirde, karşılık gelen stile sahip sıradan bir paragraf olacaktır |
Setext Heading=== (Başlık düzeyi 1 ise),--- (Başlık düzeyi 2 ise) |
ParagraphFormat.StyleName = “SetextHeading[some suffix]” , ‘Heading N’ stilini temel alır.(N ≥ 2) ise ‘Heading 2’ kullanılacaktır, aksi takdirde ‘Heading 1’ kullanılacaktır. Herhangi bir son eke izin verilir, ancak Aspose.Words içe aktarıcısı sırasıyla “1” ve “2” rakamlarını kullanır |
|
|
Indented Code | ParagraphFormat.StyleName = “IndentedCode[some suffix]” |
Fenced Code
|
ParagraphFormat.StyleName = “FencedCode[.][info string]” [.] ve [info string] isteğe bağlıdır |
Karmaşık Konteynerler
Aşağıdaki tablo Aspose.Words’de Markdown Karmaşık Kapsayıcıların kullanımına ilişkin örnekleri göstermektedir:
Markdown özelliği | Aspose.Words |
---|---|
Quote> quote, >> nested quote |
ParagraphFormat.StyleName = “Quote[some suffix]” Stil adındaki son ek isteğe bağlıdır, ancak Aspose.Words içe aktarıcısı 1, 2, 3, … sıralı sayıları kullanır. iç içe geçmiş tırnaklar durumunda. Yuvalama, devralınan stillerle tanımlanır |
|
|
BulletedList- Item 1 - Item 2 - Item 2a - Item 2b |
Madde işaretli listeler paragraf numaralandırması kullanılarak temsil edilir:ListFormat.ApplyBulletDefault() 3 tip madde imli liste olabilir. Bunlar yalnızca ilk düzeyin numaralandırma biçiminde farklılık gösterir. Bunlar: sırasıyla ‘-’ , ‘+’ veya ‘*’ |
OrderedList1. Item 1 2. Item 2 1) Item 2a 2) Item 2b |
Sıralı listeler paragraf numaralandırması kullanılarak temsil edilir:ListFormat.ApplyNumberDefault() 2 sayı biçimi işaretçisi olabilir: ‘.’ Ve ‘)’. Varsayılan işaretleyici ‘.‘dir |
|
Tablolar
Aspose.Words ayrıca aşağıda gösterildiği gibi tabloların DOM’ye çevrilmesine de olanak tanır:
Markdown özelliği | Aspose.Words |
---|---|
Table ‘bir |
b<br /> - |
|