※ ChatGPTを利用し、要約された質問です(原文:PHPでXMLデータ生成、スキーマで失敗)
PHPでXMLデータ生成、スキーマで失敗
2011/11/15 18:47
このQ&Aのポイント
PHPのDOMDocumentを使用してXMLデータを生成する際に、スキーマでエラーが発生しています。
エラーメッセージは、「The document has no document element.」です。
スキーマを使用してのXMLデータ出力が初めてなので、解決方法やエラーの原因を知っている方からアドバイスをいただきたいです。
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データ吐き出しは初めてなのでいろいろと戸惑っています。
何か解決方法もしくはエラーが出てしまう原因をご存知の方がいらっしゃいましたらアドバイスをいただけないでしょうか。
よろしくお願いいたします。
質問の原文を閉じる
質問の原文を表示する
お礼
ありがとうございます! 仰る通り、検証すべきドキュメントがなかったようです。 schemaValidateを実行するタイミングが、値を入れる前だったためエラーが発生していました。 xmlスキーマは初心者のため、初歩的ミスを犯してしまったようです。ご指摘ありがとうございました!!