чтение регулярных выражений из файла xsd с помощью xpath, строковое значение - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть 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}'

Не могли бы вы объяснить мне, что здесь происходит?

1 Ответ

0 голосов
/ 06 февраля 2020

Ваше выражение пути не очень избирательно, в частности оно не соответствует xs:element с [@name='orcid']. Так что я подозреваю, что вы берете другое объявление элемента. Поскольку вы находитесь в Python, вы, вероятно, используете XPath 1.0, который обычно дает вам первый соответствующий узел, а не предупреждает, что их больше одного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...