【发布时间】:2014-10-10 20:05:05
【问题描述】:
我正在尝试为员工创建 XML 数据库,但架构有问题。
对于每个员工,我有四个元素:姓名、身份证和电子邮件。如何将 ID 设置为主键并将电子邮件设置为唯一?
我试过这个作为主键:
<xs:key msdata:PrimaryKey="true" type="xs:string" name="ID"/>
但它不起作用。 这是我所有的 XML 代码:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="employees">
<xs:complexType>
<xs:sequence>
<xs:element name="employee">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="Name"/>
<xs:element type="xs:string" name="Surname"/>
<xs:element type="xs:string" name="ID"/>
<xs:element type="xs:string" name="e-mail"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:key name="empl-key">
<xs:selector xpath="employee"/>
<xs:field xpath="@ID"/>
</xs:key>
</xs:element>
</xs:schema>
提前致谢。
【问题讨论】:
-
你确定这是 all 架构吗?您粘贴的 XML 格式不正确(至少您在
elementFormDefault="qualified之后缺少引号),并且在没有targetNamespace的架构中包含elementFormDefault似乎很奇怪。 -
我很抱歉,elementFormDefault=" 之后的引号限定了它的丢失,因为我将它粘贴在这里时出现了错误。它就在我的代码上。我是 XML 新手,所以我使用的东西我不完全理解它们的含义。
-
另外,您当前的架构需要 恰好一个
employee元素在employees中,您需要添加 minOccurs 和/或 maxOccurs 以允许更多(或更少)一。 -
好的,我现在添加了,谢谢。
标签: xml xsd schema primary-key