在Docutils document tree中,title
节点可能出现在某个部分内部或文档内部。
对于我正在创建的特定Docutils NodeVisitor
,我需要能够区分当前title
节点是文档的标题,还是在以下几个部分之一中该文件:如果它实际上是整个文件的标题,我只想跳过这个标题继续前进。
我希望能够在Visitor.visit_title
中执行此操作:
class DocumentTitleSkippingVisitor:
# …
def visit_title(self, node):
document_node = section_node.parent
if section_node is document_node:
# This title is actually the document's top level title.
raise self._docutils.nodes.SkipNode
但这并不起作用:访问者在另一个section
节点内遇到文档的顶级标题。因此,上述检查(正确)表明title
的父级不 document
节点。
如何在NodeVisitor
内告诉title
实际上是特殊文件标题?或者,我如何挂钩到Docutils以使title
实际上处于文档级别,以便更容易将其与section
标题区分开来?
答案 0 :(得分:0)
您可以添加depart_section
和class DocumentTitleSkippingVisitor:
def __init__(self):
self.in_section = False
def visit_section(self, node):
self.in_section = True
def depart_section(self,node):
self.in_section = False
def visit_title(self, node):
if self.in_section:
pass # do something
:
<message t="{{TIME_STAMP}}" from="{{CONTACT_JID}}"
offline="{{OFFLINE}}" type="text" id="{{MESSAGE_ID}}" notify="{{NOTIFY_NAME}}">
<media
latitude="52.52393"
type="location"
longitude="13.41747"
name="Location Name"
url="http://www.foursquare.com/XXXX"
encoding="raw"
>{{THUMBNAIL_RAWDATA}}</media>
</message>
对于reStructuredText,无法明确指定文档标题和副标题。在这种情况下: