代码之家  ›  专栏  ›  技术社区  ›  Mark

发现以元素开头的XML无效内容。应为“{}”之一

  •  2
  • Mark  · 技术社区  · 8 年前

    我正在根据XML文档验证XSD,收到以下错误:

    cvc complex type.2.4.a:发现以开头的无效内容 元素“artSpent:name”。什么之中的一个 '{"http://www.dei.isep.ipp.pt/lprog":name}' 应为。[467]

    这是一个XSD示例

    <?xml version="1.0" encoding="utf-8"?>
    <xsd:schema version="1.0"
                xmlns:lprog="http://www.dei.isep.ipp.pt/lprog"
                xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                targetNamespace="http://www.dei.isep.ipp.pt/lprog" 
                elementFormDefault="qualified">
    
        <xsd:element name="warehouse">
            <xsd:complexType>
                <xsd:sequence>
                    <xsd:element name="ListSpent" 
                                 type="lprog:TListSpent" 
                                 maxOccurs="unbounded"/>
                </xsd:sequence>
            </xsd:complexType>
        </xsd:element>       
    
           <xsd:complexType name="ListSpent">
            <xsd:sequence >
                <xsd:element name="Spent" 
                             type="lprog:TSpent" 
                             maxOccurs="unbounded"/>
            </xsd:sequence>
        </xsd:complexType>  
    
           <xsd:complexType name="TSpent">
            <xsd:sequence >
                <xsd:element name="name" type="xsd:string" />
                <xsd:element name="stock" type="lprog:TQtdArtigo" />
            </xsd:sequence>
        </xsd:complexType>     
    </xsd:schema>
    

    和我的XML示例

     <?xml version="1.0" encoding="UTF-8"?>
       <warehouse xmlns="http://www.dei.isep.ipp.pt/lprog"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://www.dei.isep.ipp.pt/lprog 
                                 TraXSD.xsd">
    
         <ListSpent xmlns:artSpent="http://www.w3.org/2001/XMLSchema-instance" 
                    artSpent:noNamespaceSchemaLocation="TraXSD.xsd">
            <Spent>
                <artSpent:name>Meat</artSpent:name>
                <artSpent:stock>2</artSpent:stock>
            </Spent>    
        </ListSpent>
    </warehouse>   
    
    1 回复  |  直到 8 年前
        1
  •  3
  •   kjhughes    8 年前

    XSD和XML文件都有几个问题,但导致您在问题中引用的即时错误的原因是您没有建立 name 元素正确位于 targetNamespace="http://www.dei.isep.ipp.pt/lprog" 管理XSD的。在下面的工作示例中查看我是如何做到的。。。

    以下更正的XSD将成功验证以下更正的XML文件。

    XSD公司

    <?xml version="1.0" encoding="utf-8"?>
    <xsd:schema version="1.0"
                xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                xmlns:lprog="http://www.dei.isep.ipp.pt/lprog"
                targetNamespace="http://www.dei.isep.ipp.pt/lprog" 
                elementFormDefault="qualified">
    
      <xsd:element name="warehouse">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="ListSpent" type="lprog:ListSpent"
                         maxOccurs="unbounded"/>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>       
    
      <xsd:complexType name="ListSpent">
        <xsd:sequence >
          <xsd:element name="Spent" type="lprog:TSpent" maxOccurs="unbounded"/>
        </xsd:sequence>
      </xsd:complexType>  
    
      <xsd:complexType name="TSpent">
        <xsd:sequence >
          <xsd:element name="name" type="xsd:string" />
          <xsd:element name="stock" type="xsd:integer" />
        </xsd:sequence>
      </xsd:complexType>
    
    </xsd:schema>
    

    XML格式

    使用默认命名空间声明:

    <?xml version="1.0" encoding="UTF-8"?>
    <warehouse xmlns="http://www.dei.isep.ipp.pt/lprog"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="http://www.dei.isep.ipp.pt/lprog TraXSD.xsd">
      <ListSpent>
        <Spent>
          <name>Meat</name>
          <stock>2</stock>
        </Spent>    
      </ListSpent>
    </warehouse>
    

    使用显式命名空间前缀:

    <?xml version="1.0" encoding="UTF-8"?>
    <lprog:warehouse xmlns:lprog="http://www.dei.isep.ipp.pt/lprog"
                     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                     xsi:schemaLocation="http://www.dei.isep.ipp.pt/lprog TraXSD.xsd">
      <lprog:ListSpent>
        <lprog:Spent>
          <lprog:name>Meat</lprog:name>
          <lprog:stock>2</lprog:stock>
        </lprog:Spent>    
      </lprog:ListSpent>
    </lprog:warehouse>