lxml : xsd:datetime 型は認識されない

(op)hdknr@debuniid:~/.virtualenvs/op/src/Contract-Exchange-Extension/cx-doc/py$ 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)

(op)hdknr@debuniid:~/.virtualenvs/op/src/Contract-Exchange-Extension/cx-doc/py$ grep Datetime ../xml/cx.datetime.xsd
        <xs:element ref="Datetime" minOccurs="1" maxOccurs="1" />
  <xs:element name="Datetime" type="xs:datetime" />

(op)hdknr@debuniid:~/.virtualenvs/op/src/Contract-Exchange-Extension/cx-doc/py$ python xsd.py  ../xml/sample_contract.xml ../xml/cx.datetime.xsd
Traceback (most recent call last):
  File "xsd.py", line 7, in <module>
    print etree.XMLSchema(xsd).validate(doc)
  File "xmlschema.pxi", line 103, in lxml.etree.XMLSchema.__init__ (src/lxml/lxml.etree.c:116069)
lxml.etree.XMLSchemaParseError: element decl. ‘Datetime’, attribute ‘type’: The QName value ‘{http://www.w3.org/2001/XMLSchema}datetime’ does not resolve to a(n) type definition., line 18

xs:string にすれば通る。

(op)hdknr@debuniid:~/.virtualenvs/op/src/Contract-Exchange-Extension/cx-doc/py$ grep Datetime ../xml/cx.xsd
        <xs:element ref="Datetime" minOccurs="1" maxOccurs="1" />
  <xs:element name="Datetime" type="xs:string" />

(op)hdknr@debuniid:~/.virtualenvs/op/src/Contract-Exchange-Extension/cx-doc/py$ python xsd.py  ../xml/sample_contract.xml ../xml/cx.xsd
True
None

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

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中