我有一个带有此类元素的XSD文件:
<xs:element name="orcid" minOccurs="0" maxOccurs="1">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="https://orcid\.org/[0-9]{4}-[0-9]{4}-[0-9]{4}-\d{3}[\dX]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
我想从该值读取模式,然后执行以下操作:
with open(app.config.get("schema")) as xsd:
doc = etree.parse(xsd)
data = doc.xpath(ORCID_XPATH, namespaces=doc.getroot().nsmap)[0]
哪里
ORCID_XPATH = '/xs:element/xs:simpleType/xs:restriction[@base="xs:string"]/xs:pattern/@value
但是结果是我不明白一个字符串:
'[d0-9]{4}-{0,1}[0-9]{3}[0-9xX]{1}'
您能告诉我这里发生了什么吗?
你的路径表达式是不是非常有选择性的,尤其是它不符合xs:element
用[@name='orcid']
。因此,我怀疑您正在使用其他元素声明。由于您使用的是Python,因此您可能正在使用XPath 1.0,它通常会为您提供第一个匹配的节点,而不是警告您有多个节点。