- - PR -
XercesのXMLスキーマチェックパフォーマンス向上
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-11-01 17:04
はじめまして。
Xerces2.6.2を使用したアプリケーションを作成しているのですが、 以下のようなスキーマを作り、スキーマチェックを実行したところ、 OutOfMemoryエラーとなりました。 ----- Hoge.xsd <?xml version="1.0" encoding="Shift_JIS"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:include schemaLocation="HogeType.xsd" /> <xsd:element name="HogeMainSet"> <xsd:complexType> <xsd:sequence> <xsd:element name = "HogeSubSet" minOccurs = "1" maxOccurs = "5000" > <xsd:complexType> <xsd:sequence> <xsd:element name = "Hoge1" type="HogeType" /> <xsd:element name = "Hoge2" type="HogeType" /> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> HogeType.xsd <?xml version="1.0" encoding="Shift_JIS" ?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:simpleType name="HogeType"> <xsd:restriction base="xsd:string"> <xsd:maxLength value="256"/> </xsd:restriction> </xsd:simpleType> </xsd:schema> ----- このとき、「maxOccurs = "5000"」と記述しているところを 「maxOccurs = "unbounded"」と書き直すと、 OutOfMemoryエラーが発生しませんでした。 色々と調べたつもりですが、maxOccursに大きい値を使うべきではない というような話はどこにもありませんでした。 なぜ、上限値を設定しただけでメモリがパンクするのか、 いまいち分からないです。 ちなみに「maxOccurs = "10"」としても、 OutOfMemoryエラーが発生しませんでした。 3桁を超えたあたりからメモリがパンクするようです。 どなたか理由をご存知の方はいらっしゃいますでしょうか。 よろしくご返信お待ちしております。 |
1