سؤال

أنا أكتب تطبيقًا أساسيًا لمعالجة النصوص وأحاول الاستقرار على تنسيق "داخلي" أصلي، وهو التنسيق الذي يوزعه الكود الخاص بي لعرضه على الشاشة.أود أن يكون هذا بتنسيق XML حتى أتمكن في المستقبل من كتابة XSLT لتحويله إلى ODF أو XHTML أو أي شيء آخر.

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

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

أم يجب عليّ فقط أن أعض الرصاصة وأنفذ ODF؟

يحرر:فيما يتعلق بالإجابة

كنت أعرف عن XSL-FO من قبل، ولكن نظرًا لثقل المواصفات لم أفكر فيه حقًا.لكنك على حق، مجموعة فرعية ستمنحني كل ما أحتاج للعمل معه ومساحة للنمو.شكرا جزيلا على التذكير.

بالإضافة إلى ذلك، من خلال تضمين مكتبة عرض مثل FOP أو RenderX، أحصل على إنشاء PDF مجانًا.ليس سيئًا...

هل كانت مفيدة؟

المحلول

لأنك متأكد من الحاجة إلى تمثيل التقديمية جانب من الأشياء، قد يكون من المفيد النظر في XSL-FO توصية W3C.هذه لغة وصف صفحة كاملة والنصف الآخر (غير العصري إلى حد كبير) من لغة XSLT المعروفة.

من الواضح أن الأمر برمته ليس سوى "خفيفة الخفيفة" ، ولكن إذا قمت للتو بدمج مجموعة فرعية محدودة للغاية - والتي يمكن أن تكون فقط (لتتناسب مع مواصفات "علامات الفقرة ، اختيار الخط ، حجم الخط والزينة") ل: كتلة و ال خصائص الخطوط المشتركة, ، شيء مثل:

<yourcontainer xmlns:fo="http://www.w3.org/1999/XSL/Format">
    <fo:block font-family="Arial, sans-serif" font-weight="bold"
        font-size="16pt">Example Heading</fo:block>
    <fo:block font-family="Times, serif"
        font-size="12pt">Paragraph text here etc etc...</fo:block>
</yourcontainer>

ربما يكون لهذا بعض المزايا مقارنة بمجرد التدحرج بنفسك.هناك مواصفات مفتوحة للعمل منها، وكل ما يتضمنه ذلك.فهو يعيد استخدام خصائص CSS كخصائص XML (بطريقة مشابهة لـ SVG)، لذلك ستبدو العديد من تفاصيل التنسيق مألوفة إلى حد ما.سيكون لديك مسار ترقية إذا قررت لاحقًا، على سبيل المثال، أن الترحيل الذكي هو ميزة لا بد منها - بما في ذلك المزيد من أقسام المواصفات عندما تصبح ذات صلة بتطبيقك.

هناك شيء آخر قد تحصل عليه من التحقيق في XSL-FO - وهو معرفة كيف يمكن أن يكون مجرد تنفيذ الفقرات والخطوط معقدًا بشكل رهيب.إن محاولة القيام بتخطيط النص وكسر الأسطر "بالطريقة الصحيحة" لمختلف اللغات وحالات الاستخدام المختلفة تبدو أمرًا شاقًا للغاية بالنسبة لي.

نصائح أخرى

إذا كان الأمر يتعلق فقط بمعالجة النصوص، فربما دوكبوك قد يكون أخف قليلا من ODF؟

ومع ذلك، فإن إدخال الويكي ينص على ما يلي:

DocBook هي لغة ترميزية دلالية للتوثيق الفني.كان الغرض منه في الأصل كتابة المستندات الفنية المتعلقة بأجهزة وبرامج الكمبيوتر ولكن يمكن استخدامه لأي نوع آخر من الوثائق.

إذن قد لا يكون مناسبًا جدًا لمعالج النصوص للأغراض العامة؟

تتمثل ميزة استخدام DocBook في حقيقة توفر عدد من DocBook -> محولات التنسيق الأخرى؟أتمنى أن يساعدك هذا.

أنا أحب DocBook، لكنه لا يناسبني حقًا.إنها تسعى جاهدة لتكون مستقلة عن العرض التقديمي، والقصد هو استخدام XSLT لعرضه في تنسيق عرض تقديمي.

في معالج النصوص، يقوم المستخدم بتحرير العرض التقديمي مع المحتوى.على سبيل المثال، لا يريد المستخدم وضع علامة على "كلمة رئيسية"، بالضرورة، يريد جعل بعض النص غامقًا.

سيكون محرر DocBook أمرًا لطيفًا للغاية (لست متأكدًا من وجود محرر جيد)، لكنه ليس ما أفعله حقًا.

حسنًا ، صحيح ...ولكن بما أنني بحاجة إلى أن أكون قادرًا على التحويل إلى XML على أي حال، فلماذا أحتفظ بكل من شجرة المستندات وشجرة DOM في الذاكرة، عندما لا يوجد شيء يمنعني من العمل مباشرة خارج شجرة DOM؟

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

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

XML هو خارجي الشكل، لا داخلي.

ما المشكلة في XHTML؟إنها بسيطة ومنتشرة في كل مكان (على الأقل HTML كذلك).سيكون تطبيقك سهل التصحيح، وسيكون المستخدمون لديك رائعين إلى الأبد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top