PHP5.0.3だと、DOMのsaveXML()とsave()がバグってる。createElement()で作られたエレメントノードは名前空間がnullになるはずなのに、親要素のデフォルト名前空間を引き継いでしまっている。
$dom = new DomDocument();
$rootNode = $dom->appendChild($dom->createElementNS("http://www.arielworks.com/", "root"));
$rootNode->appendChild($dom->createElement("child"));
print $dom->saveXML();
このようなコードを書いた場合、本来は次のようになるはずだ(見やすいように整形してある)。
<?xml version="1.0">
<root xmlns="http://www.arielworks.com/">
<child xmlns="">
</root>
しかし、実際には、強調した部分が抜け落ちてしまい、child要素の名前空間URIが「http://www.arielworks.com/」になってしまっている。
どうやら内部処理的には、きちんと「null」を保持しているようで、save()系のメソッドを使わなければ特に問題ない。恐らく、DOMツリーを文字列に変換する処理に何か問題があるのだろう。
<link rel="permanent"/>で良いのかな。rdf:aboutがめんどいんだよな。sdf:bodyをrdf:parseType="Literal"にしちゃうと、サブセクションが再帰処理できなくなる?link要素だけって言うのも辛いかな。