RELAX NG構造でxmlを検証しようとしています。
私は次のようなバリエーションを試しました:
<grammar ns="" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<start>
<element name="rss" version="2.0" xmlns:g="http://base.google.com/ns/1.0">
<element name="channel">
<element name="title">
<data type="token"/>
</element>
<element name="description">
<data type="token"/>
</element>
<element name="link">
<data type="anyURI"/>
</element>
<oneOrMore>
<element name="item">
<element name="g:id">
<data type="long"/>
</element>
<element name="title">
<data type="token"/>
</element>
最初の問題は、タグ "g:id" を解釈するときです。たとえば、rss要素にxmlns:g="http://base.google.com/ns/1.0"を入れて解決しました。
しかし、マニュアルでわかるように、rss 要素タグにもversion="2.0"を配置する必要があります。しかし、私が使用しようとすると
<element name="rss" version="2.0" xmlns:g="http://base.google.com/ns/1.0">
エラーが発生します:
PHP Warning: DOMDocument::relaxNGValidate(): Unknown attribute version on element in ...
私が使用する場合
<element name="rss" xmlns:g="http://base.google.com/ns/1.0">
エラーはありませんが、マニュアルではversion="2.0"が必要です。
どうすればこれを解決できますか?