lxml xsi:schemaLocation 命名空间 URI 验证问题
lxml xsi:schemaLocation namespace URI validation issue
我正在尝试使用 lxml.etree
重现 CDA QuickStart Guide found here 中的 CDA 示例。
特别是,我 运行 遇到了尝试重新创建此元素的命名空间问题。
<ClinicalDocument xmlns="urn:hl7-org:v3" xmlns:mif="urn:hl7-org:v3/mif"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:hl7-org:v3 CDA.xsd">
我使用的代码如下
root = etree.Element('ClinicalDocument',
nsmap={None: 'urn:hl7-org:v3',
'mif': 'urn:hl7-org:v3/mif',
'xsi': 'http://www.w3.org/2001/XMLSchema-instance',
'{http://www.w3.org/2001/XMLSchema-instance}schemaLocation': 'urn:hl7-org:v3 CDA.xsd'})
问题出在 nsmap
中的 schemaLocation
条目。 lxml
似乎在尝试验证值并给出错误
ValueError: Invalid namespace URI u'urn:hl7-org:v3 CDA.xsd'
我是否错误地指定了 schemaLocation
值?有没有办法强制 lxml
接受任何字符串值?或者示例中的值只是作为一个占位符,我应该用其他东西替换它?
nsmap
是前缀到名称空间 URI 的映射。 urn:hl7-org:v3 CDA.xsd
是 xsi:schemaLocation
属性的有效值,但它不是有效的命名空间 URI。
类似问题 的解决方案也适用于此。使用 QName
创建 xsi:schemaLocation
属性。
from lxml import etree
attr_qname = etree.QName("http://www.w3.org/2001/XMLSchema-instance", "schemaLocation")
root = etree.Element('ClinicalDocument',
{attr_qname: 'urn:hl7-org:v3 CDA.xsd'},
nsmap={None: 'urn:hl7-org:v3',
'mif': 'urn:hl7-org:v3/mif',
'xsi': 'http://www.w3.org/2001/XMLSchema-instance',
})
我正在尝试使用 lxml.etree
重现 CDA QuickStart Guide found here 中的 CDA 示例。
特别是,我 运行 遇到了尝试重新创建此元素的命名空间问题。
<ClinicalDocument xmlns="urn:hl7-org:v3" xmlns:mif="urn:hl7-org:v3/mif"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:hl7-org:v3 CDA.xsd">
我使用的代码如下
root = etree.Element('ClinicalDocument',
nsmap={None: 'urn:hl7-org:v3',
'mif': 'urn:hl7-org:v3/mif',
'xsi': 'http://www.w3.org/2001/XMLSchema-instance',
'{http://www.w3.org/2001/XMLSchema-instance}schemaLocation': 'urn:hl7-org:v3 CDA.xsd'})
问题出在 nsmap
中的 schemaLocation
条目。 lxml
似乎在尝试验证值并给出错误
ValueError: Invalid namespace URI u'urn:hl7-org:v3 CDA.xsd'
我是否错误地指定了 schemaLocation
值?有没有办法强制 lxml
接受任何字符串值?或者示例中的值只是作为一个占位符,我应该用其他东西替换它?
nsmap
是前缀到名称空间 URI 的映射。 urn:hl7-org:v3 CDA.xsd
是 xsi:schemaLocation
属性的有效值,但它不是有效的命名空间 URI。
类似问题 QName
创建 xsi:schemaLocation
属性。
from lxml import etree
attr_qname = etree.QName("http://www.w3.org/2001/XMLSchema-instance", "schemaLocation")
root = etree.Element('ClinicalDocument',
{attr_qname: 'urn:hl7-org:v3 CDA.xsd'},
nsmap={None: 'urn:hl7-org:v3',
'mif': 'urn:hl7-org:v3/mif',
'xsi': 'http://www.w3.org/2001/XMLSchema-instance',
})