dポイントプレゼントキャンペーン実施中!

PHPのDOMDocumentを使ってXMLデータを生成しています。
$dom->schemaValidate('xsdファイル');
で失敗してしまします。
どうしても原因がわからないので吐き出すデータを最小限にして試してみましたが状況が変わりませんでした。
スキーマは以下のようになっています。
<?xml version="1.0" encoding="Shift_JIS" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="Response">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="user" type="user_type" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="user_type">
<xsd:sequence>
<xsd:element name="developerID" type="xsd:string" />
<xsd:element name="operation" type="xsd:string" />
<xsd:element name="User-Agent" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>

そして吐き出されるxml形式のデータは、
<?xml version="1.0" encoding="Shift-JIS"?>
<Response>
<user>
<developerID>testdeveloperID</developerID>
<operation>testoperation</operation>
<User-Agent>Mozilla/5.0 (Windows NT 6.0; rv:7.0.1) Gecko/20100101 Firefox/7.0.1</User-Agent>
</user>
</Response>

出てしまうエラーは、
Warning: DOMDocument::schemaValidate() [<a href='domdocument.schemavalidate'>domdocument.schemavalidate</a>]: The document has no document element. in "実行しているphpファイルのパス" on line 12
ちなみに実行phpの12行目には、
$dom->schemaValidate('xsdファイル');
があります。
スキーマを使用してのxmlデータ吐き出しは初めてなのでいろいろと戸惑っています。
何か解決方法もしくはエラーが出てしまう原因をご存知の方がいらっしゃいましたらアドバイスをいただけないでしょうか。
よろしくお願いいたします。

A 回答 (1件)

DOMドキュメント($dom)の生成時や、コード12行までに至るまでの処理途中に問題があり、DOMドキュメントの中身が空になっているということはないでしょうか?



あと、参考URLの内容もチェックされてみてください。

※それでも解決しない場合は、よろしければ、コードも差し支えない範囲で補足に記載されると、他の方のご回答の参考になるかもしれませんよ。

ご参考まで。

参考URL:http://atamoco.boy.jp/php5/dom/libxml_use_intern …
    • good
    • 0
この回答へのお礼

domdocumentをインスタンス化してすぐにスキーマを適用させてしまったため、発生したエラーのようでした。
全て値を入れsaveXML()を呼ぶ直前にschemaValidateを実行したらうまくいきました。
ご回答ありがとうございました。

お礼日時:2011/11/16 15:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!