كيفية الحصول على إعادة هيكلة لإضافة فئة إلى كل علامة HTML

؟

StackOverflow https://stackoverflow.com/questions/1837308

  •  11-09-2019
  •  | 
  •  

سؤال

أنا أستخدم حزمة ترميز Django لتحويل إعادة هياكل إلى HTML. هل هناك طريقة لتخصيص كاتب HTML لإضافة سمة فئة لكل منهما <p> بطاقة شعار؟

أنا يمكن أن تستخدم توجيه الطبقة لكل فقرة، ولكن أود أتمتة هذه العملية.

على سبيل المثال، أريد هذا النص المعاد الهيكل:

hello
=====

A paragraph of text.

لتحويلها إلى هذا HTML.

<h1>hello</h1>
<p class="specialClass">A paragraph of text.</p>

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

شكرا للمساعدة،

جو

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

المحلول

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

CSS:

div.resttext p {
    /* all the styling you want... */
}

لغة البرمجة:

<div class='resttext'>
<p>Blah</p>
<p>Bloo</p>
</div>

تحديث: نظرا لأنك تحاول استخدام الواصلة.js، أود أن أقترح باستخدامها selectorfunction الإعداد لتحديد العناصر بشكل مختلف:

Hyphenator.config({
    selectorfunction: function () {
        /* Use jQuery to find all the REST p tags. */
        return $('div.resttext p');
        }
    });
Hyphenator.run();

نصائح أخرى

فئة Subclass المدمج html4css1 كاتب، باستخدام هذه كمرجع ..

from docutils.writers import html4css1

class MyHTMLWriter(html4css1.Writer):
  """
  This docutils writer will use the MyHTMLTranslator class below.
  """
  def __init__(self):
      html4css1.Writer.__init__(self)
      self.translator_class = MyHTMLTranslator

class MyHTMLTranslator(html4css1.HTMLTranslator):
  def visit_paragraph(self, node):
      self.section_level += 1
      self.body.append(self.starttag(node, 'p', CLASS='specialClass'))
  def depart_paragraph(self, node):
      self.section_level -= 1
      self.body.append('</p>\n')

ثم استخدمه مثل هذا:

from docutils.core import publish_string
print publish_string("*This* is the input text", writer=MyHTMLWriter())
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top