【问题标题】:How to validate Google Shopping XMLs with RELAX NG?如何使用 RELAX NG 验证 Google 购物 XML?
【发布时间】: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


    【解决方案1】:

    我自己找到了解决办法

    下面的例子:

    <grammar ns="" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
        <start>
            <element name="rss" xmlns:g="http://base.google.com/ns/1.0">
                <attribute name="version">
                    <data type="decimal"/>
                </attribute>
                <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>
    

    【讨论】:

      猜你喜欢
      • 2010-12-05
      • 2011-09-13
      • 1970-01-01
      • 2012-10-15
      • 2012-07-11
      • 1970-01-01
      • 2013-01-30
      • 2012-11-30
      • 1970-01-01
      相关资源
      最近更新 更多