Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите сделать XSD схему  [new]
Cammomile
Member

Откуда:
Сообщений: 1212
Коллеги, я тут пытаюсь создать на сервере схему, в которой есть типа данных, основанный на xs:double.
У этого типа данных установлен фасет minInclusive = "0.0".

Так вот, при попытке создать схему, сервак выкидывает эррор, о том, что такое представление "0.0" недопустимо для типа с плавающей точкой.

Точно также он ругается относительно "0" и "0e0"', при этом, судя по спецификации XML с сайта W3, всё должно работать.

В то же время, схема с minInclusive = "0.00000001" отлично создается.

Гугл перерыл, стэковерфлоу перерыл, ответ не нашёл.
13 апр 18, 18:06    [21337799]     Ответить | Цитировать Сообщить модератору
 Re: Помогите сделать XSD схему  [new]
buser
Member

Откуда: Санкт-Петербург
Сообщений: 4535
Cammomile, The canonical representation for zero is 0.0E0.
Тоже не того?
13 апр 18, 18:15    [21337820]     Ответить | Цитировать Сообщить модератору
 Re: Помогите сделать XSD схему  [new]
Cammomile
Member

Откуда:
Сообщений: 1212
Сообщение 6926, уровень 16, состояние 1, строка 3
Проверка XML: недопустимое значение простого типа: "0.0E0".
16 апр 18, 18:21    [21343217]     Ответить | Цитировать Сообщить модератору
 Re: Помогите сделать XSD схему  [new]
Cammomile
Member

Откуда:
Сообщений: 1212
Проверка XML: недопустимая каноническая форма значения "0" согласно указанному типу.
Проверка XML: недопустимая каноническая форма значения "0.0" согласно указанному типу.
Проверка XML: недопустимое значение простого типа: "0e0
Проверка XML: недопустимое значение простого типа: "0.0e0".
16 апр 18, 18:24    [21343223]     Ответить | Цитировать Сообщить модератору
 Re: Помогите сделать XSD схему  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1172
Cammomile,

хм, у меня нормально такую создает
create xml schema collection [test]
as
'<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xsd:element name="Message" type="MessageArray" nillable="true" />
  <xsd:complexType name="MessageArray">
    <xsd:complexContent>
	  <xsd:restriction base="xsd:anyType">
	    <xsd:sequence>
	      <xsd:element name="MessageContext" maxOccurs="unbounded">
		    <xsd:simpleType>
		      <xsd:restriction base="xsd:double">
			       <xsd:minInclusive value="0.0"/>
		               <xsd:maxInclusive value="5.0"/>
			  </xsd:restriction>
		    </xsd:simpleType>
		  </xsd:element>
	    </xsd:sequence>
	   </xsd:restriction>
      </xsd:complexContent>
    </xsd:complexType>
  </xsd:schema>'
16 апр 18, 19:00    [21343309]     Ответить | Цитировать Сообщить модератору
 Re: Помогите сделать XSD схему  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30800
Cammomile
Проверка XML: недопустимая каноническая форма значения "0" согласно указанному типу.
Проверка XML: недопустимая каноническая форма значения "0.0" согласно указанному типу.
Проверка XML: недопустимое значение простого типа: "0e0
Проверка XML: недопустимое значение простого типа: "0.0e0".
Вы бы код показали, реальный, или сделали бы репро, если реальные данные секретны.
16 апр 18, 19:12    [21343343]     Ответить | Цитировать Сообщить модератору
 Re: Помогите сделать XSD схему  [new]
Cammomile
Member

Откуда:
Сообщений: 1212
Ничего секретного.


CREATE XML SCHEMA COLLECTION [d] AS

N'
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://dol.minstroyrf.ru/v1.3/eqconcom.xsd"
           xmlns:mecc="http://dol.minstroyrf.ru/v1.3/eqconcom.xsd"
           attributeFormDefault="unqualified"
           elementFormDefault="qualified"
           version="1.3">

    <xs:attributeGroup name="DecAttrGroup">
        <xs:attribute name="part" type="xs:token" use="optional">
          <xs:annotation>
            <xs:documentation>
              Идентификатор блока данных согласно форме декларации
            </xs:documentation>
          </xs:annotation>
        </xs:attribute>
    </xs:attributeGroup>

  
    <xs:complexType name="BaseDoubleType">
        <xs:annotation>
            <xs:documentation>Базовый тип для чисел с плавающей запятой</xs:documentation>
        </xs:annotation>
        <xs:simpleContent>
            <xs:extension base="xs:double">
                <xs:attributeGroup ref="mecc:DecAttrGroup"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>

   
    <xs:complexType name="CostType">
        <xs:annotation>
            <xs:documentation>
                Финансовый тип.
            </xs:documentation>
        </xs:annotation>
        <xs:simpleContent>
            <xs:restriction base="mecc:BaseDoubleType">
                <xs:pattern value="-?\d+(\.\d{1,2})?"/>
            </xs:restriction>
        </xs:simpleContent>
    </xs:complexType>

    <xs:complexType name="PositiveCostType">
        <xs:annotation>
            <xs:documentation>
                Финансовый тип - >=0.
            </xs:documentation>
        </xs:annotation>
        <xs:simpleContent>
            <xs:restriction base="mecc:CostType">
                <xs:minInclusive value="0.00"/>
            </xs:restriction>
        </xs:simpleContent>
    </xs:complexType> 
</xs:schema>'
18 апр 18, 11:49    [21348141]     Ответить | Цитировать Сообщить модератору
 Re: Помогите сделать XSD схему  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1172
Cammomile,

а так у вас там pattern ограничение.

в таком случае ознакомьтесь: https://docs.microsoft.com/en-us/sql/relational-databases/xml/canonical-forms-and-pattern-restrictions?view=sql-server-2017
18 апр 18, 13:25    [21348647]     Ответить | Цитировать Сообщить модератору
 Re: Помогите сделать XSD схему  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30800
Cammomile
Ничего секретного.
Если вы задаёте шаблоны для констант, то логично будет при любых непонятках с заданием констант посмотреть на эти шаблоны.
18 апр 18, 13:51    [21348825]     Ответить | Цитировать Сообщить модератору
 Re: Помогите сделать XSD схему  [new]
Cammomile
Member

Откуда:
Сообщений: 1212
Да я не шарю, это не мои схемы. Это мне прислали с просьбой пролить на сервер. А они не льются.

Я так понимаю там косяк вот в этом коде?

<xs:pattern value="-?\d+(\.\d{1,2})?"/>

А как его вообще читать? Не ориентируюсь что здесь что означает
18 апр 18, 14:09    [21348898]     Ответить | Цитировать Сообщить модератору
 Re: Помогите сделать XSD схему  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30800
Cammomile
Я так понимаю там косяк вот в этом коде?

<xs:pattern value="-?\d+(\.\d{1,2})?"/>

А как его вообще читать? Не ориентируюсь что здесь что означает
Гуглите "регулярные выражения"
18 апр 18, 14:37    [21348995]     Ответить | Цитировать Сообщить модератору
 Re: Помогите сделать XSD схему  [new]
Konst_One
Member

Откуда:
Сообщений: 11512
Cammomile
"-?\d+(\.\d{1,2})?"


https://regex101.com/
18 апр 18, 14:40    [21349003]     Ответить | Цитировать Сообщить модератору
 Re: Помогите сделать XSD схему  [new]
Cammomile
Member

Откуда:
Сообщений: 1212
Я вот тут проверил
https://regex101.com/

"0.0" соответствует паттерну -?\d+(\.\d{1,2})?
18 апр 18, 14:45    [21349019]     Ответить | Цитировать Сообщить модератору
 Re: Помогите сделать XSD схему  [new]
Cammomile
Member

Откуда:
Сообщений: 1212
А, всё я понял о чем тут.

Спасибо felix_ff !
18 апр 18, 15:18    [21349224]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить