【发布时间】:2013-06-01 11:44:35
【问题描述】:
我正在尝试使用 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”时,例如,我解决了将 xmlns:g="http://base.google.com/ns/1.0" 放在rss 元素。
但是正如我们在manual 看到的那样,我们也需要将 version="2.0" 放在 rss 元素标记处。但是如果我尝试使用
<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"。
我该如何解决这个问题?
【问题讨论】:
标签: php xml validation relaxng