【问题标题】:XML & XML Schema validationXML 和 XML 模式验证
【发布时间】:2013-05-22 18:06:33
【问题描述】:

在验证器网站上上传时会显示以下错误: 1) s4s-elt-must-match.1: 'pizza' 的内容必须匹配 (annotation?, (simpleType | complexType)?, (unique | key | keyref)*))。发现问题始于:complexType。 2)cvc-complex-type.2.4.a:发现以元素“名称”开头的无效内容。应为“{pizza}”之一。

代码如下: XML:

<?xml version="1.0"?>
<pizzamenu xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:noNamespaceSchemaLocation="schemasnippet.xsd"> 
   <pizza id = "0011"/>   
  <name> Tal Fenek </name>
  <price>  9.95 </price> 
<description>The application of Web protocols to Biology</description> 

</pizzamenu>

架构:

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="pizzamenu">
  <xs:complexType>
    <xs:sequence maxOccurs="unbounded">
      <xs:element name="pizza">
        <xs:complexType>
                <xs:attribute name="id" type="xs:string" />

              </xs:complexType>
        <xs:complexType>
          <xs:sequence>
            <xs:element name="name">

            </xs:element> <!-- name -->
            <xs:element name="price">

            </xs:element> <!-- price -->
            <xs:element name="description">
            </xs:element> <!-- description -->
          </xs:sequence>
        </xs:complexType>
      </xs:element> <!-- pizza -->
    </xs:sequence>
  </xs:complexType>
</xs:element> <!-- pizzamenu -->
</xs:schema>

请帮忙

【问题讨论】:

    标签: xml schema validation


    【解决方案1】:

    您的架构和 xml 似乎都有问题。

    您的架构似乎试图指定名称、价格和描述标签必须包含在比萨标签内。在您的 xml 中,它们不是。

    xml 很可能应该更像:

    <?xml version="1.0"?>
    <pizzamenu xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:noNamespaceSchemaLocation="schemasnippet.xsd"> 
       <pizza id = "0011">   
          <name> Tal Fenek </name>
          <price>  9.95 </price> 
          <description>The application of Web protocols to Biology</description> 
       </pizza>
    </pizzamenu>
    

    但是您的架构使用两个 &lt;xs:complexType&gt; 标记来定义一个类型,这是行不通的。只要属性放在最后,就可以使用单个&lt;xs:complexType&gt; 来定义&lt;pizza&gt; 标记的属性和内容。这意味着您的架构应如下所示:

    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
        <xs:element name="pizzamenu">
            <xs:complexType >
                <xs:sequence maxOccurs="unbounded">
                    <xs:element name="pizza">
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="name">
    
                                </xs:element> <!-- name -->
                                <xs:element name="price">
    
                                </xs:element> <!-- price -->
                                <xs:element name="description">
                                </xs:element> <!-- description -->
                            </xs:sequence>
                            <xs:attribute name="id" type="xs:string" />
                        </xs:complexType>
                    </xs:element> <!-- pizza -->
                </xs:sequence>
            </xs:complexType>
        </xs:element> <!-- pizzamenu -->
    </xs:schema>
    

    【讨论】:

    • 我仍然得到相同的错误 =/ xml 是有效的,架构似乎是问题...
    • 确实还有schema问题。请参阅我编辑的答案。
    猜你喜欢
    • 2011-06-02
    • 2010-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-23
    • 2010-10-25
    • 2023-03-27
    相关资源
    最近更新 更多