这让我疯了。我正在尝试为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中是唯一的。
先谢谢你们。
答案 0 :(得分:0)
首先,您要将您的元素声明为DataAutoNamespace
,但在实际文档中,找不到该命名空间中的元素。您需要使用xmlns
在XML文档中声明您的命名空间(并将其绑定到某个命名空间前缀)。