ترجمة Markdown لتوثيق نموذج الكائن (DOM)

لقراءة محتوى المستند وتنسيقه ومعالجتها وتعديله برمجيا، تحتاج إلى ترجمته إلى نموذج كائن المستند Aspose.Words (DOM).

على عكس مستندات ورد، Markdown لا يتوافق مع DOM الموضح في Aspose.Words نموذج كائن المستند (DOM) المادة. ومع ذلك، توفر Aspose.Words آليتها الخاصة لترجمة Markdown المستندات إلى DOM والعودة، حتى نتمكن من العمل بنجاح مع عناصرها مثل تنسيق النص والجداول والرؤوس وغيرها.

تشرح هذه المقالة كيف يمكن ترجمة ميزات markdown المختلفة إلى Aspose.Words DOM والعودة إلى تنسيق Markdown.

تعقيد الترجمة Markdown – DOM – Markdown

الصعوبة الرئيسية لهذه الآلية ليست فقط ترجمة Markdown إلى DOM، ولكن أيضا لإجراء التحويل العكسي – لحفظ المستند مرة أخرى إلى تنسيق Markdown بأقل خسارة. هناك عناصر، مثل الاقتباسات متعددة المستويات، والتي لا يكون التحويل العكسي لها تافها.

يسمح محرك الترجمة الخاص بنا للمستخدمين ليس فقط بالعمل مع العناصر المعقدة في مستند Markdown موجود، ولكن أيضا لإنشاء مستند خاص بهم بتنسيق Markdown مع الهيكل الأصلي من البداية. لإنشاء عناصر مختلفة، تحتاج إلى استخدام أنماط بأسماء محددة وفقا لقواعد معينة موضحة لاحقا في هذه المقالة. يمكن إنشاء هذه الأنماط برمجيا.

مبادئ الترجمة المشتركة

نستخدم Font التنسيق للكتل المضمنة. عندما لا تكون هناك مراسلات مباشرة لميزة Markdown في Aspose.Words DOM، نستخدم نمط حرف باسم يبدأ من بعض الكلمات الخاصة.

بالنسبة إلى كتل الحاويات، نستخدم وراثة النمط للإشارة إلى ميزات Markdown المتداخلة. في هذه الحالة، حتى في حالة عدم وجود ميزات متداخلة، نستخدم أيضا أنماط الفقرات باسم يبدأ من بعض الكلمات الخاصة.

القوائم النقطية والمرتبة هي كتل الحاويات في Markdown كذلك. يتم تمثيل تعشيشها في DOM بنفس الطريقة بالنسبة لجميع كتل الحاويات الأخرى باستخدام وراثة النمط. ومع ذلك، بالإضافة إلى ذلك، فإن القوائم في DOM تتوافق مع تنسيق الأرقام إما في نمط القائمة أو تنسيق الفقرة.

كتل مضمنة

نستخدم Font التنسيق عند ترجمة Bold، Italic أو Strikethrough مضمنة markdown الميزات.

Markdown ميزة 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، متبوعا بنقطة اختيارية (.) وعدد من العلامات الخلفية (`) لميزة InlineCode. إذا فات عدد من العلامات الخلفية، فسيتم استخدام علامة خلفية واحدة افتراضيا.

Markdown ميزة Aspose.Words
InlineCode
**inline code**
get_Font()->set_StyleName(u"InlineCode[.][N]")
Autolink
<scheme://domain.com>
<email@domain.com>
فئة FieldHyperlink.
Link
[link text](url)
[link text](<url>"title")
[link text](url 'title')
[link text](url (title))
فئة FieldHyperlink.
Image
![](url)
![alt text](<url>"title")
![alt text](url ‘title’)
![alt text](url (title))
فئة Shape.

كتل الحاويات

المستند عبارة عن سلسلة من كتل الحاويات مثل العناوين والفقرات والقوائم وعلامات الاقتباس وغيرها. يمكن تقسيم كتل الحاويات إلى فئات 2: كتل الأوراق والحاويات المعقدة. يمكن أن تحتوي كتل الأوراق على محتوى مضمن فقط. يمكن أن تحتوي الحاويات المعقدة بدورها على كتل حاويات أخرى، بما في ذلك كتل الأوراق.

كتل الأوراق

يوضح الجدول أدناه أمثلة على استخدام Markdown كتل الأوراق في Aspose.Words:

Markdown ميزة Aspose.Words
HorizontalRule
-----
هذه فقرة بسيطة ذات شكل HorizontalRule مطابق:
DocumentBuilder::InsertHorizontalRule()
ATX Heading
# H1, ## H2, ### H3…
get_ParagraphFormat()->set_StyleName(u"Heading N")، حيث (1<= ن <= 9).
يتم ترجمة هذا إلى نمط مدمج ويجب أن يكون بالضبط من النمط المحدد (لا يسمح باللواحق أو البادئات).
خلاف ذلك، سيكون مجرد فقرة عادية مع نمط المقابلة.
Setext Heading
=== (if Heading level 1),
--- (if Heading level 2)
get_ParagraphFormat->set_StyleName(u"SetextHeading[some suffix]")، على أساس "Heading N" نمط.
إذا (ن > = 2)، فسيتم استخدام "Heading 2"، وإلا "Heading 1".
يسمح بأي لاحقة، لكن المستورد Aspose.Words يستخدم الأرقام “1” و" 2 " على التوالي.
Indented Code get_ParagraphFormat->set_StyleName(u"IndentedCode[some suffix]")
Fenced Code
``` c#
if ()
then
else
```
get_ParagraphFormat()->set_StyleName(u"FencedCode[.][info string]")
[.] و [info string] اختيارية.

حاويات معقدة

يوضح الجدول أدناه أمثلة على استخدام Markdown حاويات معقدة في Aspose.Words:

Markdown ميزة Aspose.Words
Quote
> quote,
>> nested quote
get_ParagraphFormat()->set_StyleName(u"Quote[some suffix]")
اللاحقة في اسم النمط اختيارية، ولكن Aspose.Words المستورد يستخدم الأرقام المطلوبة1, 2, 3, …. في حالة الاقتباسات المتداخلة.
يتم تعريف التعشيش عبر الأنماط الموروثة.
BulletedList
- Item 1
- Item 2
- Item 2a
- Item 2b
يتم تمثيل القوائم النقطية باستخدام ترقيم الفقرات:
get_ListFormat()->ApplyBulletDefault()
يمكن أن يكون هناك 3 أنواع القوائم النقطية. هم فقط فرق في تنسيق ترقيم من المستوى الأول. هذه هي: ‘-’، ‘+’ أو ‘*’ على التوالي.
OrderedList
1. Item 1
2. Item 2
1) Item 2a
2) Item 2b
يتم تمثيل القوائم المرتبة باستخدام ترقيم الفقرات:
get_ListFormat()->ApplyNumberDefault()
يمكن أن يكون هناك 2 علامات تنسيق الأرقام: ‘.’ و ‘)’. العلامة الافتراضية هي ‘.’.

الجداول

Aspose.Words يسمح أيضا بترجمة الجداول إلى DOM، كما هو موضح أدناه:

Markdown ميزة Aspose.Words
Table
a|b
-|-
c|d
Table، Row و Cell الطبقات.

أنظر أيضا