Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Просьба проверить мой код по XSD-схемкам / 6 сообщений из 6, страница 1 из 1
11.01.2005, 20:25
    #32860063
Max Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просьба проверить мой код по XSD-схемкам
Привет, друзья. Мне после собеседования в одной конторе скинули задачку. Решить-то я её решил, но не уверен, что правильно. Гляньте, пожалуйста:

Условие задачи:

1. Допустим, есть схема данных Tables1.xsd, в которой описан элемент PREDS (контрагенты) с полями:
PRED_ID, NAME, ADDRESS, PHONE, INN, OKPO ... (+другие поля) .
2. Есть вторая схема данных Tables2.xsd, в которой описан элемент SDOCS (товарный документ) c полями:
SDOC_ID, AGENT_ID, ... (+другие поля).

ЗАДАЧА: Необходимо указать, что поле SDOCS.AGENT_ID ссылается (FOREIGN KEY) на поле PREDS.PRED_ID,
которое описано в другой схеме данных. Как это сделать?

Решение:

Я в VS создал две схемы. При работе с Visual Studio я не нашёл возможности визуально мышью провести связь. Пришлось вручную добавить.

В схему table2.xsd я добавил строку:

Код: plaintext
<xs:include schemaLocation="table1.xsd" />

Эта строка позволяет ссылаться на схему из файла table1.xsd

В схему tables2.xsd я добавил ключ:

Код: plaintext
1.
2.
3.
<xs:keyref name="PREDS_SDOCS_FK" refer="Pred_ID_PK"> 
<xs:selector xpath="." /> 
<xs:field xpath="mstns:Pred_ID_PK" /> 
</xs:keyref>




Визуально этой связи в Студии увидеть нельзя.

Вот коды файлов XSD:

table2.xsd

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
<?xml version="1.0" encoding="utf-8" ?> 
<xs:schema targetNamespace="http://tempuri.org/XMLSchema.xsd" elementFormDefault="qualified" 
xmlns="http://tempuri.org/XMLSchema.xsd" xmlns:mstns="http://tempuri.org/XMLSchema.xsd" 
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" 
id="table2"> 
<xs:include schemaLocation="table1.xsd" /> 
<xs:element name="SDOCS"> 
<xs:complexType> 
<xs:sequence> 
<xs:element name="SDOC_ID" type="xs:int" /> 
<xs:element name="AGENT_ID" type="xs:int" /> 
</xs:sequence> 
</xs:complexType> 
<xs:key name="SDOC_ID_PK" msdata:PrimaryKey="true"> 
<xs:selector xpath="." /> 
<xs:field xpath="mstns:SDOC_ID" /> 
</xs:key> 
<xs:keyref name="PREDS_SDOCS_FK" refer="Pred_ID_PK"> 
<xs:selector xpath="." /> 
<xs:field xpath="mstns:Pred_ID_PK" /> 
</xs:keyref> 
</xs:element> 
</xs:schema> 

table1.xsd

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<?xml version="1.0" encoding="utf-8" ?> 
<xs:schema elementFormDefault="qualified" xmlns="http://tempuri.org/XMLSchema.xsd" xmlns:mstns="http://tempuri.org/XMLSchema.xsd" 
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" 
id="table1"> 
<xs:element name="PREDS"> 
<xs:complexType> 
<xs:sequence> 
<xs:element name="PRED_ID" type="xs:int" /> 
<xs:element name="NAME" type="xs:string" /> 
<xs:element name="ADDRESS" type="xs:string" /> 
<xs:element name="PHONE" type="xs:string" /> 
<xs:element name="INN" type="xs:long" /> 
<xs:element name="OKPO" type="xs:long" /> 
</xs:sequence> 
</xs:complexType> 
<xs:key name="Pred_ID_PK" msdata:PrimaryKey="true"> 
<xs:selector xpath="." /> 
<xs:field xpath="PRED_ID" /> 
</xs:key> 
</xs:element> 
</xs:schema> 

Буду рад любым Вашим комментариям.
Max Pro
...
Рейтинг: 0 / 0
13.01.2005, 13:14
    #32863079
Роман Дынник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просьба проверить мой код по XSD-схемкам
пробуй создать типизированный датасет с двумя таблицами и связью между ними.
и посмотри на XSD которая будет сгенерирована для этого случая.
Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
13.01.2005, 15:54
    #32863525
Max Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просьба проверить мой код по XSD-схемкам
Зачем? Я и в студии могу. Создать таблицы и посмотреть. Тут фенька в том, что не между таблицами надо, а между схемами при условии, что в каждой схеме таблицы разные.
Да ладно, хрен с ними. Если работать придётся с этим - разберёмся, не велика беда. А если меня не возьмут в ту контору, то пускай сами колупаются со своими схемами.
;-)
P.S. Всё же, спасибо за участие, Роман! На таких как ты форум держится.
Max Pro
...
Рейтинг: 0 / 0
13.01.2005, 17:19
    #32863769
Роман Дынник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просьба проверить мой код по XSD-схемкам
Вот еще пример из MSXML SDK.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
Example
The following example defines a keyref element that corresponds to the key element in this schema.

<xs:schema 
        xmlns:xs="http://www.w3.org/2001/XMLSchema"
   targetNamespace="namespace1"
        xmlns:r="namespace1"
        elementFormDefault="qualified">

 <xs:element name="root">
  <xs:complexType>
   <xs:sequence>

    <xs:element name="A" type="r:A" maxOccurs="unbounded">
     <xs:keyref name="dummy" refer="r:pNumKey">
      <xs:selector xpath="r:part"/>
      <xs:field xpath="@ref-number"/>
     </xs:keyref>
    </xs:element>

    <xs:element name="B" type="r:B"/>

   </xs:sequence>
  </xs:complexType>

  <xs:key name="pNumKey">
   <xs:selector xpath="r:B/r:part"/>
   <xs:field xpath="@key-number"/>
  </xs:key>

  </xs:element>

 <xs:complexType name="A">
  <xs:sequence>
   <xs:element name="part" maxOccurs="unbounded">
    <xs:complexType>
     <xs:simpleContent>
      <xs:extension base="xs:string">
       <xs:attribute name="ref-number" type="xs:integer"/>
      </xs:extension>
     </xs:simpleContent>
    </xs:complexType>
   </xs:element>
  </xs:sequence>
 </xs:complexType>

 <xs:complexType name="B">
  <xs:sequence>
   <xs:element name="part" maxOccurs="unbounded">
    <xs:complexType>
     <xs:simpleContent>
      <xs:extension base="xs:string">
       <xs:attribute name="key-number" type="xs:integer"/>
      </xs:extension>
     </xs:simpleContent>
    </xs:complexType>
   </xs:element>
  </xs:sequence>
 </xs:complexType>

</xs:schema>Input: key.xml

<root xmlns="namespace1">
  <A>
    <!-- if the ref-number is not equal to one of the key-number, the validation will give error -->
    <part ref-number="1"/>
  </A>
  <A>
    <!-- if the ref-number is not equal to one of the key-number, the validation will give error -->
    <part ref-number="2"/>
  </A>
  <B>
    <part key-number="1"/>
    <part key-number="2"/>
    <part key-number="3"/>
  </B>
</root>

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
14.01.2005, 15:46
    #32865445
Max Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просьба проверить мой код по XSD-схемкам
Понятно.
Короче всё нормально, меня вроде берут. Так что возможно мой e-mail скоро поменяется.
Max Pro
...
Рейтинг: 0 / 0
14.01.2005, 16:56
    #32865620
Роман Дынник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просьба проверить мой код по XSD-схемкам
а кинь весь список вопросов и описание вакансии с $$$. (интересно...)
Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Просьба проверить мой код по XSD-схемкам / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]