2014-10-09 3 views
0

Я пытаюсь создать базу данных XML для сотрудников, и у меня проблемы со схемой.Первичный ключ XML-схемы

Для каждого сотрудника у меня есть четыре элемента: имя, фамилия, идентификатор и адрес электронной почты. Как я могу установить идентификатор как первичный ключ и адрес электронной почты как уникальный?

Я попытался это для первичного ключа:

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

Спасибо заранее.

+0

Вы уверены, что это _all_ схема? XML, который вы вставили, не является корректным (по крайней мере, вам не хватает цитаты после 'elementFormDefault =" qualified'), и кажется странным иметь 'elementFormDefault' в схеме без' targetNamespace'. –

+0

Я рою, цитата после elementFormDefault = "квалифицировала ее отсутствующую из-за ошибки, когда я вставлял ее здесь. Это верно в моем коде. Я новичок в XML, поэтому я использую вещи, которые я не понимаю точно их значение. –

+0

Кроме того, ваша текущая схема требует _быстро одного элемента 'employee' в' employees', вам нужно добавить minOccurs и/или maxOccurs, чтобы разрешить больше (или меньше) одного. –

ответ

0

Основная идея заключается в том, что если вы хотите, чтобы каждый сотрудник в компании имел уникальный идентификатор, вы создаете определение ключа xs: на уровне элемента Company, в котором путь селектора xs: выбирает узел Employee из элемента Company, а путь xs: field выбирает узел ID из узла Employee. Что-то вроде

<xs:element name="Company"> 
    .... 
    <xs:key name="empl-key"> 
    <xs:selector xpath="Employee"/> 
    <xs:field xpath="@ID"/> 
    </xs:key> 
</xs:element> 
+0

Я пробовал, но, к сожалению, кажется, что он не работает. Кроме того, я попытался сделать это следующим образом: Но ничего не происходит. –

+0

Ну, тогда ты сделал это неправильно. Возможно, вы определили, что вы используете ключ в неправильном месте или ошиблись. Возможно, есть пространство имен. Невозможно отладить от такого скудного фрагмента кода. –

+0

Я отредактирую свой вопрос и вставьте туда свой xml-код. –

Смежные вопросы