• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHP5でRSS1.0のネームスペースを記述する方法が分かりません)

PHP5でRSS1.0のネームスペースを記述する方法が分かりません

このQ&Aのポイント
  • PHP5のdomを使ってRSS1.0用のxmlファイルを自動生成しようと試みていますが、ネームスペースの記述がうまくいきません。
  • 現時点では『xmlns="http://purl.org/rss/1.0/"』が表示できません。
  • setAttributeNSで試してみたものの、『xmlns=』という形式になりません。

質問者が選んだベストアンサー

  • ベストアンサー
  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.5

<?php //とりあえず出ればいいんかな..? v5.2.8 $doc = new DOMDocument('1.0', 'utf-8'); $root = $doc->createElement('rdf:RDF'); $doc->appendChild($root); $doc->createAttributeNS('http://purl.org/rss/1.0/', 'xmlns'); $root->setAttribute('xmlns:rdf', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'); $root->setAttribute('xmlns:dc', 'http://purl.org/dc/elements/1.1/'); $root->setAttribute('xml:lang', 'ja'); print '<xmp>' . $doc->saveXML($root);

ragwo1024
質問者

お礼

createElementで『rdf:RDF』を作ってしまえばいいんですね。 盲点でした。 本当に、ありがとうございます!

その他の回答 (4)

回答No.4

しつこくてすまんが,一応バグ報告出してみた。(俺がおかしければ,指摘が入るだろう) http://bugs.php.net/bug.php?id=49463

ragwo1024
質問者

お礼

ご協力有難う御座いました。 PHPのバグの可能性もあるという事なのですね… ちょっと別のやり方も試して見ます。 本当に感謝致します。 _(._.) _

回答No.3

多分PHPのバグです。名前空間URIとして空文字列を指定した場合,xmlns属性が付与できました。 同じことをJavaでやると,DOMの仕様どおり NAMESPACE_ERRが投げられます。

回答No.2

#適当に決め打って,#1の回答したけど,それが原因ではないようだ。 ちょっと再調査中。

ragwo1024
質問者

補足

回答ありがとう御座います。 私の方でも現在調査中です。

回答No.1

メモ: http://www.w3.org/TR/xml-names/#ns-decl Namespace constraint: Reserved Prefixes and Namespace Names The prefix xml is by definition bound to the namespace name http://www.w3.org/XML/1998/namespace. It MAY, but need not, be declared, and MUST NOT be bound to any other namespace name. Other prefixes MUST NOT be bound to this namespace name, and it MUST NOT be declared as the default namespace. The prefix xmlns is used only to declare namespace bindings and is by definition bound to the namespace name http://www.w3.org/2000/xmlns/. It MUST NOT be declared . Other prefixes MUST NOT be bound to this namespace name, and it MUST NOT be declared as the default namespace. Element names MUST NOT have the prefix xmlns. All other prefixes beginning with the three-letter sequence x, m, l, in any case combination, are reserved. This means that: *users SHOULD NOT use them except as defined by later specifications *processors MUST NOT treat them as fatal errors. =========================== http://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-ElSetAttrNS NAMESPACE_ERR: Raised if the qualifiedName is malformed, if the qualifiedName has a prefix and the namespaceURI is null, if the qualifiedName has a prefix that is "xml" and the namespaceURI is different from "http://www.w3.org/XML/1998/namespace", or 【if the qualifiedName is "xmlns" and the namespaceURI is different from "http://www.w3.org/2000/xmlns/"】.

関連するQ&A

専門家に質問してみよう