XML没有引用XSD,命名空间问题

时间:2013-07-17 14:27:42

标签: xml xsd

这让我疯了。我正在尝试为xml文档创建架构。我认为我非常接近,但出于某种原因,我无法弄清楚如何命名命名空间。在网上查看了十几篇文章并尝试了一切,但Visual Studio似乎没有得到它。

这是我要为其创建XSD的xml文件:

<?xml version="1.0" encoding="utf-8" ?>
<data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="DataAutoNamespace dataautostructure.xsd" >
 <set id="HLM">
   <!-- Download page -->
   <item tag="Tabs" value="tabs"/>
   <item tag="HoldingsListTab" value="holdingsListTab"/>
   <item tag="BackLink" value="back"/>

   <!-- Holdings List Section -->
   <item tag="HoldingsList" value="holdingsList"/>
   <item tag="SubText" value="subText"/>
   <item tag="Format" value="format"/>
   <item tag="Contents" value="contents"/>
   <item tag="HoldingsFileName" value="fileName"/>
   <item tag="FileNameHeader" value="header"/>
   <item tag="Textbox" value="textbox"/>
   <item tag="InputBox" value="inputBox"/>
   <item tag="TextButton" value="textButton"/>
   <item tag="TextButton" value="textButton"/>

 </set>
</data>

我为此xml设计的架构如下:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="DataAutoNamespace" xmlns="DataAutoNamespace" elementFormDefault="qualified">
  <xs:element name="item" type="itemType">
        <xs:unique name="UniqueItem">
            <xs:selector xpath="set/item"/>
            <xs:field xpath="@tag"/>
        </xs:unique>
    </xs:element>
  <xs:element name="data">
    <xs:complexType>
      <xs:all>
      <xs:element name="set" type ="setType"></xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>
    <xs:complexType name="itemType">
        <xs:attribute name="tag" type="xs:token" use="required"/>
        <xs:attribute name="value" type="xs:token" use="required"/>
    </xs:complexType>
  <xs:complexType name="setType">
    <xs:sequence>
      <xs:element ref="item" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attribute name="id" type="xs:string" use="required"/>
  </xs:complexType>
</xs:schema>

有人可以指导一下这个命名空间有什么问题吗?我收到'无法找到属性'标签'的架构信息。等等'id和'value'。

另外,当我检查对模式的入站引用时,我没有得到任何内容。我想确保标记属性在XML中是唯一的。

先谢谢你们。

1 个答案:

答案 0 :(得分:0)

首先,您要将您的元素声明为DataAutoNamespace,但在实际文档中,找不到该命名空间中的元素。您需要使用xmlns在XML文档中声明您的命名空间(并将其绑定到某个命名空间前缀)。