Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Как правильно сделать схему... / 10 сообщений из 10, страница 1 из 1
23.12.2005, 01:45
    #33453355
Злодей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно сделать схему...
как правильно описать описать класс "константа" в схеме?

<constant type="ТИП_КОНСТАНТЫ">ЗНАЧЕНИЕ_КОНСТАНТЫ</constant>

ТИП_КОНСТАНТЫ : string number date bool

смысл в том, чтобы значение зависело от типа,
например так правильно:

<constant type="number">12.3</constant>
<constant type="bool">TRUE</constant>
<constant type="string">просто строка</constant>

а так не правильно:
<constant type="bool">12.3</constant> -- значение не соответствует типу
<constant type="boolan">TRUE</constant> -- неправильный тип
...
Рейтинг: 0 / 0
23.12.2005, 17:42
    #33455159
Ay-y
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно сделать схему...
По аналогии с этим

Код: 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.
<xs:simpleType name="typeAlignment">
	<xs:restriction base="xs:string">
    		<xs:enumeration value="left"/>
    		<xs:enumeration value="center"/>
    		<xs:enumeration value="right"/>  			
	</xs:restriction>
</xs:simpleType>

<xs:complexType name="TheAlignment">
	<xs:simpleContent>
      		<xs:extension base="typeAlignment">
      		<xs:attribute name="type">
      			<xs:simpleType>
      			<xs:restriction base="xs:string">
      				<xs:enumeration value="alignment"/>
      			</xs:restriction>
      			</xs:simpleType>
      		</xs:attribute>  
      		</xs:extension>
	</xs:simpleContent>
</xs:complexType>

<xs:simpleType name="typeRadio">
  <xs:restriction base="xs:string">
    <xs:enumeration value="Y"/>
    <xs:enumeration value="N"/>
  </xs:restriction>
</xs:simpleType>

<xs:complexType name="TheRadio">
	<xs:simpleContent>
      		<xs:extension base="typeYesNo">
      		<xs:attribute name="type">
      			<xs:simpleType>
      			<xs:restriction base="xs:string">
      				<xs:enumeration value="radio"/>
      			</xs:restriction>
      			</xs:simpleType>      			
      		</xs:attribute> 
      		</xs:extension>
	</xs:simpleContent>
</xs:complexType>

<xs:attribute name="align"		type="typeAlignment"/>
<xs:element name="HasWeb" 	type="TheRadio"/>
...
Рейтинг: 0 / 0
23.12.2005, 17:55
    #33455179
M0us
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно сделать схему...
Ay-yПо аналогии с этим
в чем аналогия?
...
Рейтинг: 0 / 0
23.12.2005, 18:09
    #33455210
Ay-y
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно сделать схему...
Типы с нужной enumeration создать самому. У меня их под рукой нет.
...
Рейтинг: 0 / 0
23.12.2005, 18:11
    #33455214
M0us
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно сделать схему...
Ay-yТипы с нужной enumeration создать самому. У меня их под рукой нет.
с bool понятно, но как можно описать (по вашему варианту) string, number и date?
...
Рейтинг: 0 / 0
23.12.2005, 18:32
    #33455251
Ay-y
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно сделать схему...
Ну со стрингом проблем быть не должно
Код: plaintext
<xs:restriction base="xs:string">

с integer тоже полно вариантов в зависимости от условий, ну например

Код: plaintext
1.
<xs:restriction base="xs:positiveInteger">
<xs:restriction base="xs:decimal">

стандартная дата, правда, требует определённого формата, но есть

Код: plaintext
<xs:restriction base="xs:date">

мне, например он не подходил, поэтому сделан вот такой тип

Код: 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.
<xs:simpleType name="typeDate">
	<xs:union>
		<xs:simpleType>
  			<xs:restriction base="xs:date"/>
		</xs:simpleType>
  		<xs:simpleType>
    			<xs:restriction base="xs:token"> 
      				<xs:pattern value="(January|March|May|July|August|October|December) (30|31|[12]{0,1}[0-9]{1}), [0-9]{0,4}"/>
      				<xs:pattern value="February ([12]{0,1}[0-9]{1}), [0-9]{0,4}"/> 
      				<xs:pattern value="(April|June|September|November) (30|[12]{0,1}[0-9]{1}), [0-9]{0,4}"/>
    			</xs:restriction>
  		</xs:simpleType>
 	</xs:union>
</xs:simpleType>

<xs:complexType name="TheDate">
	<xs:simpleContent>
      		<xs:extension base="typeDate">		
      		<xs:attribute name="type">
      			<xs:simpleType>
      			<xs:restriction base="xs:string">
      				<xs:enumeration value="date"/>
      			</xs:restriction>
      			</xs:simpleType>
      		</xs:attribute>
      		</xs:extension>
	</xs:simpleContent>
</xs:complexType>

и вообще с патернами много чего можно сделать.
...
Рейтинг: 0 / 0
23.12.2005, 19:16
    #33455291
M0us
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно сделать схему...
мысль понял.
Осталось только одно - ужесточить XSD схему таким образом, чтобы:
при определенном значении атрибута type="" управлять содержимым значения элемента <constant>. С учетом поддержки стандартной валидации естественно...

Хотя, пожалуй с этого и стоило начать...
...
Рейтинг: 0 / 0
23.12.2005, 19:31
    #33455313
Ay-y
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно сделать схему...
О!
А вот это у меня и не получилось, хотя и попытки предпринимались и изначальная цель была именно такая.
Потому как создать тип с еnumeration из комплексных типов нельзя.
Ну если вы чего-нибудь придумаете – поделитесь пожалуйста, будет очень интересно.
...
Рейтинг: 0 / 0
23.12.2005, 23:58
    #33455514
Злодей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно сделать схему...
Спасибо всем ответившим, но вся суть идеи как и заключается в

M0usужесточить XSD схему таким образом, чтобы:
при определенном значении атрибута type="" управлять содержимым значения элемента <constant>. С учетом поддержки стандартной валидации естественно...


в противном случае все это не имеет смысла.
вопрос все еще актуален, если кто знает варианты куда копать, сообщите плз.
...
Рейтинг: 0 / 0
24.12.2005, 09:15
    #33455643
M0us
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно сделать схему...
Может быть попробовать косвенным путем решить данную проблему?
Например в XSLT на выходе анализировать содержимое <constant>???</constant> и в соответствии с этим выставлять соответствующий type
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Как правильно сделать схему... / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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