2 Stimmen

Xml-Validierung: Überprüfung eines URI-Typs

Ich benutze lxml von Python, um XMLs gegen ein Schema zu validieren. Ich habe ein Schema mit einem Element:

und ich teste zum Beispiel dieses (Teil eines) XML:

Ich möchte, dass dieser Test FEHLERSCHLAGT, weil das link-url nicht mit http:// beginnt. Ich habe versucht, anyURI durch anyURL zu ersetzen, aber das führt zu einer Ausnahme - es ist kein gültiges Tag.

Ist das mit lxml möglich? Ist es überhaupt mit der Schema-Validierung möglich?

3voto

kennytm Punkte 488916

(Ich bin mir ziemlich sicher, dass xs:anyURL ungültig ist. Der XML Schema Standard nennt es anyURI. Und da link-url ein Attribut ist, sollten Sie nicht eher xs:attribute anstelle von xs:element verwenden?)

Sie könnten die URIs einschränken, indem Sie ein neues simpleType basierend darauf erstellen und eine restriction auf das pattern setzen. Zum Beispiel,

#!/usr/bin/env python2.6

from lxml import etree
from StringIO import StringIO

schema_doc = etree.parse(StringIO('''

''')) #/
schema = etree.XMLSchema(schema_doc)

schema.assertValid(etree.parse(StringIO('')))
assert not schema(etree.parse(StringIO('')))

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X