3
我正在尝试使用lxml创建XML模式。对于的游戏内是这样的:如何使用lxml在属性值中设置命名空间前缀?
<xs:schema xmlns="http://www.goo.com" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.goo.com">
<xs:element type="xs:string" name="name"/>
<xs:element type="xs:positiveInteger" name="age"/>
</xs:schema>
我已经做到了这种方式 - 通过putthing XS:前值,但我认为这是可以做到更好。
def schema():
SCHEMA_NAMESPACE = "http://www.w3.org/2001/XMLSchema"
XS = "{%s}" % SCHEMA_NAMESPACE
NSMAP = {None: "http://www.goo.com"}
schema = etree.Element(XS+"schema",
nsmap = NSMAP,
targetNamespace="http://www.goo.com",
elementFormDefault="qualified")
element = etree.Element(XS+"element",
attrib = {"name" : "name",
"type" : "xs:string"})
schema.append(element)
element = etree.Element(XS+"element",
attrib = {"name" : "age",
"type" : "xs:positiveInteger"})
schema.append(element)
return etree.tostring(schema, pretty_print=True)
它可以以某种方式写得更好吗?