温馨提示:本文翻译自stackoverflow.com,查看原文请点击:python - reading regex from xsd file with xpath, string value
python xml xpath xsd

python - 使用xpath,字符串值从xsd文件读取正则表达式

发布于 2020-04-21 14:40:27

我有一个带有此类元素的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}'

您能告诉我这里发生了什么吗?

查看更多

提问者
Malvinka
被浏览
35
Michael Kay 2020-02-06 06:51

你的路径表达式是不是非常有选择性的,尤其是它不符合xs:element[@name='orcid']因此,我怀疑您正在使用其他元素声明。由于您使用的是Python,因此您可能正在使用XPath 1.0,它通常会为您提供第一个匹配的节点,而不是警告您有多个节点。