在Python的lxml.etree中,如何将namesapce添加到节点的属性中,如下所示: 名称空间是:
XS_NS = 'http://www.w3.org/2001/XMLSchema'
寻找的结果是:
<xs:element name="label" type="xs:string"></xs:element>
我试过这个,但结果不是我想要的:
element = ET.SubElement(
sequence,
ET.QName(XS_NS, "element"),
name="label",
type=str(ET.QName(XS_NS, "string")),
)
给我:
<xs:element name="label" type="{http://www.w3.org/2001/XMLSchema}string"/>
答案 0 :(得分:2)
据我所知,虽然它自己的属性可能有一个命名空间,但该属性的值不考虑命名空间:
<!-- this attribute has namespace prefix -->
<dummy xs:foo="bar"/>
<!-- this attribute has value of string containing colon -->
<dummy foo="xs:bar"/>
所以你可以简单地将“前缀”和“值”作为单个字符串放在一起:
type="xs:string"
相关讨论:XML Schema. Processing namespace-aware attribute values。在那里隐含地声明属性值中的前缀不重要,只有实际名称空间的占位符。