XML-схема / проверка: другой разделитель для типа данных double - PullRequest
4 голосов
/ 10 февраля 2010

Я изменил тип данных некоторых параметров в моем файле xsd со строки на их реальный тип, в данном случае double. Теперь я сталкиваюсь с проблемой, заключающейся в том, что здесь в качестве разделителя используется запятая, а не точка, определенная w3 (http://www.w3.org/TR/xmlschema-2/#double), вызывающая ошибки во время десериализации (C #, VS2008).

мой вопрос: могу ли я использовать схему w3 для проверки, но с другим разделителем для двойных значений?

спасибо за помощь

1 Ответ

9 голосов
/ 11 февраля 2010

Вы не можете сделать это, если хотите продолжать использовать простые типы XML-схемы. десятичная дробь и производные от нее типы привязаны к использованию периода. Как вы говорите: спецификация здесь .

Если вы хотите использовать запятую в качестве разделителя, вам нужно определить свой собственный простой тип, например:

<xs:simpleType name="MyDecimal">
  <xs:restriction base="xs:string">
    <xs:pattern value="\d+(,\d+)?"/>
  </xs:restriction>
</xs:simpleType>

Прежде чем сделать это, будьте осторожны; XML - это формат хранения данных, а не формат представления. Возможно, вы захотите подумать, решите ли вы это после загрузки или во время преобразования XSLT и т. Д.

...