Python:节点属性上的QName,lxml

时间:2014-08-18 09:35:31

标签: python xml elementtree

在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"/>

1 个答案:

答案 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。在那里隐含地声明属性值中的前缀不重要,只有实际名称空间的占位符。