我的pythonlibxml2使用默认属性对文件进行不同的处理,这取决于我想知道什么。该示例使用DITADTD(可以在www.dita-ot.org)公司名称:
import libxml2
import libxsltmod
s = """<!DOCTYPE map PUBLIC "-//OASIS//DTD XDITA Map//EN"
"file://.../dita-ot-2.2.1/plugins/org.oasis-open.dita.v1
_2/dtd/technicalContent/dtd/map.dtd">
<map title="Empty map">
</map>"""
libxml2.substituteEntitiesDefault(1)
xmldoc = libxml2.parseDoc(s)
print xmldoc
输出符合要求:
^{pr2}$但是如果我注释掉import libxsltmod
,结果是:
因此,libxsltmod做了一些事情来激活默认属性扩展。你能建议我怎样通过python激活这个功能吗?在
我不知道libxsltmod如何全局启用此设置,但通常,DTD默认属性是用parser option
XML_PARSE_DTDATTR
添加的。使用readDoc
而不是parseDoc
来提供解析器选项:或者,如果还想替换实体:
^{pr2}$我已经接受了@nwellnhof的回答,但也希望公布我的调查结果。在
{{cd2>设置全局变量的初始化:
我没有发现从
^{pr2}$libxml2
Python/C绑定代码访问此变量的任何可能性,但我发现该变量用于初始化默认的“parser context”,并且可以手动创建和使用解析器上下文:Python/C函数
readDoc
就是这样执行的(创建上下文、设置选项、解析)。手动创建上下文是冗长的,但在某些情况下可能是必要的。在相关问题 更多 >
编程相关推荐