lxml : XML Schema verifier

import sys
from StringIO import StringIO
from lxml import etree
#
if __name__ == ‘__main__’:
    (doc,xsd) = [ etree.parse( StringIO( open(f).read())) for f in  sys.argv[1:] ]
    print etree.XMLSchema(xsd).validate(doc)

 

$ python xsd.py ../xml/sample_proposal.xml ../xml/cx.xsd
False

これだと内容がわからないので、

$ more xsd.py
import sys
from StringIO import StringIO
from lxml import etree
#
if __name__ == ‘__main__’:
    (doc,xsd) = [ etree.parse( StringIO( open(f).read())) for f in  sys.argv[1:] ]
#    print etree.XMLSchema(xsd).validate(doc)
    print etree.XMLSchema(xsd).assertValid(doc)

$ python xsd.py ../xml/sample_proposal.xml ../xml/cx.xsd
Traceback (most recent call last):
  File "xsd.py", line 8, in <module>
    print etree.XMLSchema(xsd).assertValid(doc)
  File "lxml.etree.pyx", line 2757, in lxml.etree._Validator.assertValid (src/lxml/lxml.etree.c:113432)
lxml.etree.DocumentInvalid: Element ‘Contract’, attribute ‘id’:

‘742955dce66911de9c140800272c981e’ is not a valid value of the atomic type ‘xs:NCName’., line 2

カテゴリー: 未分類 パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中