首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误:属性"xsi:schemaLocation“的前缀"xsi”未绑定

错误:属性"xsi:schemaLocation“的前缀"xsi”未绑定
EN

Stack Overflow用户
提问于 2015-08-03 23:38:35
回答 3查看 19.7K关注 0票数 7

我在用XSD验证XML时遇到了困难。验证器抛出

与元素类型"mpreader“关联的属性"xsi:schemaLocation”的前缀"xsi“不绑定。

这是一个XML剪辑

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<mpreader xmlns="C:\Users\Dallan\Desktop\Mpreader\" xmlns:xs="http://www.w3.org/20one/XMLSchema-instance" 
 xsi:schemaLocation="C:\Users\Dallan\Desktop\Mpreader\mpreaderschemafinal.xsd"> 
                <firmware>"3.4.16"</firmware>  

                <hardware>"2.3.53"</hardware>  

                <sn>"234-1three5"</sn>

                <devices> 
            </devices>
        </mpreader>

这是XSD剪辑

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="C:Users/Dallan/Desktop/Mpreader/" elementFormDefault="qualified" targetNamespace="C:\Users\Dallan\Desktop\Mpreader\">

<xs:element name="mpreader">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
    <xs:element name="firmware" type="xs:string"/>
    <xs:element name="hardware" type="xs:string"/>
    <xs:element name="sn" type="xs:string"/>
    <xs:element name="devices">
        <xs:complexType>
        <xs:sequence maxOccurs="unbounded">
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
EN

回答 3

Stack Overflow用户

发布于 2015-08-04 07:26:11

与元素类型"mpreader“关联的属性"xsi:schemaLocation”的前缀"xsi“不绑定。

把它绑起来,亲爱的达兰,亲爱的达兰.

只需添加一个名称空间声明,将前缀xsi绑定到命名空间http://www.w3.org/2001/XMLSchema-instance

(Bucket)

票数 9
EN

Stack Overflow用户

发布于 2015-08-03 23:44:56

您的XML应该为xsi声明名称空间,例如xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance

票数 6
EN

Stack Overflow用户

发布于 2015-08-04 02:03:55

快速回答:修复您使用xsi:schemaLocation的方式

代码语言:javascript
复制
<mpreader xmlns="C:\Users\Dallan\Desktop\Mpreader\"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xsi:schemaLocation="C:\Users\Dallan\Desktop\Mpreader\
                              C:\Users\Dallan\Desktop\Mpreader\mpreaderschemafinal.xsd">

详细信息

  • 声明一个xsi (not xs)命名空间前缀以匹配它在xsi:schemaLocation中的使用。
  • xsihttp://www.w3.org/2001/XMLSchema-instance而不是 http://www.w3.org/20one/XMLSchema-instance声明正确的命名空间。
  • xsi:schemaLocation的值更改为命名空间位置
  • 删除devices中的空格(尽管这可能只是剪枝的一个工件)。

XSD中也缺少一个关闭xs:sequence标记(但是,这可能只是一个修剪错误):

然后,整个,下面的XSD,

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           elementFormDefault="qualified"
           targetNamespace="C:\Users\Dallan\Desktop\Mpreader\">

  <xs:element name="mpreader">
    <xs:complexType>
      <xs:sequence maxOccurs="unbounded">
        <xs:element name="firmware" type="xs:string"/>
        <xs:element name="hardware" type="xs:string"/>
        <xs:element name="sn" type="xs:string"/>
        <xs:element name="devices">
          <xs:complexType>
            <xs:sequence maxOccurs="unbounded">
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

将验证以下XML:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<mpreader xmlns="C:\Users\Dallan\Desktop\Mpreader\"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xsi:schemaLocation="C:\Users\Dallan\Desktop\Mpreader\
                              C:\Users\Dallan\Desktop\Mpreader\mpreaderschemafinal.xsd">
  <firmware>"3.4.16"</firmware>  
  <hardware>"2.3.53"</hardware>  
  <sn>"234-1three5"</sn>
  <devices/> 
</mpreader>
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31798449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档