Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
发现以元素开头的XML无效内容。一个';{}';预计_Xml_Xsd_Xsd Validation_Xml Validation - Fatal编程技术网

发现以元素开头的XML无效内容。一个';{}';预计

发现以元素开头的XML无效内容。一个';{}';预计,xml,xsd,xsd-validation,xml-validation,Xml,Xsd,Xsd Validation,Xml Validation,我正在根据XML文档验证XSD,出现以下错误: cvc复杂类型.2.4.a:发现以开头的内容无效 元素“artspend: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.de

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

cvc复杂类型.2.4.a:发现以开头的内容无效 元素“artspend: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>   

肉
2.

您的XSD和XML文件都存在一些问题,但导致您在问题中引用的直接错误的具体问题是由于您没有在
targetNamespace=”中正确地建立
名称
元素http://www.dei.isep.ipp.pt/lprog“
管理XSD的。请参见下面的工作示例中我是如何做到这一点的

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

XSD

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>   

肉
2.
使用显式命名空间前缀:

<?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>   

肉
2.

但是我确实需要在XML中有一个名称空间,所以我选择在name和stock中使用我上面显示的XML中的所有元素实际上都在
http://www.dei.isep.ipp.pt/lprog默认情况下,
。通过名称空间前缀将它们显式放置在该名称空间中会有帮助吗?是的。。。请我对名称空间有点困惑,我已经更新了答案,以显示XML的等效形式。两者对相同的XSD都有效。两者都有
http://www.dei.isep.ipp.pt/lprog
名称空间。