gpt4 book ai didi

python - 展开默认 (dita) 属性

转载 作者:行者123 更新时间:2023-11-30 23:01:34 26 4
gpt4 key购买 nike

我的 python libxml2 以不同的方式处理具有默认属性的文件,具体取决于我想知道什么。使用 DITA DTD 的示例(该包可以在 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

输出符合要求:

<?xml version="1.0"?>
<!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 xmlns:ditaarch="http://dita.oasis-open.org/architecture/2005/"
title="Empty map" ditaarch:DITAArchVersion="1.2" domains="(topic delay-d)
(map mapgroup-d) (topic indexing-d)
(map glossref-d) (topic hi-d)
(topic ut-d) (topic hazard-d)
(topic abbrev-d) (topic pr-d)
(topic sw-d) (topic ui-d)
" class="- map/map ">
</map>

但是如果我注释掉import libxsltmod,结果是:

<?xml version="1.0"?>
<!DOCTYPE map PUBLIC "-//OASIS//DTD XDITA Map//EN"
"file://.../dita-ot-2.2.1/plugins/org.oasis-open.dita.v
1_2/dtd/technicalContent/dtd/map.dtd">
<map title="Empty map">
</map>

因此,libxsltmod 做了一些事情来激活默认属性扩展。您能否建议我如何通过 python 激活此功能?

最佳答案

我不知道libxsltmod如何全局启用此设置,但通常情况下,DTD 默认属性是用 parser option 添加的XML_PARSE_DTDATTR。使用 readDoc 而不是 parseDoc 来提供解析器选项:

xmldoc = libxml2.readDoc(s, None, None, libxml2.XML_PARSE_DTDATTR)

或者,如果您还想替换实体:

flags = libxml2.XML_PARSE_NOENT | libxml2.XML_PARSE_DTDATTR
xmldoc = libxml2.readDoc(s, None, None, flags)

关于python - 展开默认 (dita) 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34894664/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com