Проверка схемы с LXML в Python: как получить ошибки проверки?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Проверка схемы с LXML в Python: как получить ошибки проверки?

Сообщение Anonymous »

Я пытаюсь сделать некоторую проверку схемы с LXML. Для конкретного приложения, над которым я работаю, важно, чтобы любые тесты, которые провалили проверку, сообщались. В документации LXML упоминается наличие объекта Validation_Report свойства. Я думаю, что это должно содержать информацию, которую я ищу, но я просто не могу понять, как с ней работать. Вот какой-то пример кода, который демонстрирует мою проблему (адаптирован с http://lxml.de/validation.html#id2; протестирован с помощью Python 2.7.4):

Код: Выделить всё

import StringIO
from lxml import isoschematron
from lxml import etree

def main():

# Schema
f = StringIO.StringIO('''\


Sum equals 100%.

Sum is not 100%.



''')

# Parse schema
sct_doc = etree.parse(f)
schematron = isoschematron.Schematron(sct_doc, store_report = True)

# XML to validate - validation will fail because sum of numbers
# not equal to 100
notValid = StringIO.StringIO('''\

30
30
50

''')
# Parse xml
doc = etree.parse(notValid)

# Validate against schema
validationResult = schematron.validate(doc)

# Validation report (assuming here this is where reason
# for validation failure is stored, but perhaps I'm wrong?)
report = isoschematron.Schematron.validation_report

print("is valid: " + str(validationResult))
print(dir(report.__doc__))

main()
Теперь, из значения ValidationResult Я вижу, что проверка не удалась (как и ожидалось), поэтому далее я хотел бы знать почему . Результат второго оператора печати дает мне: < /p>

['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__
format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__get
slice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mo
d__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__',
'__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook
__', '_formatter_field_name_split', '_formatter_parser', 'capitalize', 'center',
'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'index
', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper',
'join', 'ljust', 'lower', 'lstrip', 'partition', 'replace', 'rfind', 'rindex', '
rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', '
strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
< /code>

, который, насколько я получаю, на основе документации и этого связанного вопроса. Может быть, может быть что -то действительно очевидное, что я упускаю из виду?


Подробнее здесь: https://stackoverflow.com/questions/271 ... ion-errors
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»