!

Dette materialet blir ikke lenger vedlikeholdt. Du vil finne oppdatert materiale på siden: http://borres.hiof.no/wep/

lxml
XPATH
Børre Stenseth
Python > lxml >Validering

Validering med Schema

Hva
Validering med Schema

lxml gir mulighet for å validere XML

De aktuelle dataene er ordnet i en XML-fil med korrekte, validerbare data: all_results.xml

Kopier filer og pythonkoden nedenfor og eksperimenter. Eksperimenter med forskjellige varianter av filer som ikke validerer, brukt som XMLFILE_UNVALID='all_results_unvalid.xml' i koden nedenfor.

Eksempel

"""
validating with schema
"""
from lxml import etree
"""
testfiles
"""
XMLFILE_OK='all_results.xml'
XMLFILE_UNVALID='all_results_unvalid.xml'
SCHEMAFILE='olymp.xsd'
"""
valid
"""
def testing1():
    xml_tree=etree.parse(XMLFILE_OK)
    schema_tree=etree.parse(SCHEMAFILE)
    schema=etree.XMLSchema(schema_tree)
    result=schema.validate(xml_tree)
    print result #True
"""
not valid
"""
def testing2():
    xml_tree=etree.parse(XMLFILE_UNVALID)
    schema_tree=etree.parse(SCHEMAFILE)
    schema=etree.XMLSchema(schema_tree)
    result=schema.validate(xml_tree)
    print result #False
"""
not valid, with report
"""
def testing3():
    xml_tree=etree.parse(XMLFILE_UNVALID)
    schema_tree=etree.parse(SCHEMAFILE)
    schema=etree.XMLSchema(schema_tree)
    try:
        schema.assertValid(xml_tree)
    except:
        log = schema.error_log
        error = log.last_error
        print error
        
    
testing1()
testing2()
testing3()

Den siste metoden, testing3(), gir i mitt tilfelle følgende utskrift:

all_results_unvalid.xml:7:0:ERROR:SCHEMASV:SCHEMAV_ELEMENT_CONTENT: 
Element 'result': This element is not expected. Expected is ( nation ).
_olymp.xsd
Referanser
  1. lxml - XML and HTML with Python lxml.de/ 03-08-2011
Vedlikehold
Børre Stenseth, august 2011
( Velkommen ) Python > lxml >Validering ( ElementPath )