За день до завершения проекта я столкнулся с сложной проблемой: у меня есть служба wtf и 3 клиентских приложения, использующих ее. У службы есть три метода, каждый из которых получает XML-документ в качестве аргумента и возвращает XML-документ. так они общаются. У меня есть несколько файлов xsd для проверки сгенерированных и полученных xml. до сегодняшнего дня все работало нормально. У меня есть полированные окна, и сегодня я запускаю свое приложение на английских окнах. как вы, наверное, уже догадались, я получил сообщение от моего приложения о том, что полученный xml недействителен. Я проверил его, и значение VaR, которое, как предполагалось, было двойным в xml, было записано с точкой (или комой, я не помню, но это не сработало). Теперь мне интересно - есть ли хорошее решение этой проблемы? Я имею в виду, что проверяю xml следующим образом:
public bool IsValid(XDocument xmlDocument, Stream xsdContent)
{
XmlSchemaSet schemaSet = new XmlSchemaSet();
XmlReader reader = XmlReader.Create(xsdContent);
schemaSet.Add(string.Empty, reader);
valid = true;
xmlDocument.Validate(schemaSet, (sender, eventt) => { valid = false; e
= eventt; });
return valid;
}
Я не могу сказать валидатору, каким должен быть разделитель в двойном. единственное решение, которое я мог придумать, - это просто указать в xsd, что проблемное значение VaR является строкой, а затем программно проверить, является ли это двойным числом, с точкой или запятой.





Спецификация схемы XML указывает, что числа с плавающей запятой представлены с помощью точки, а не с использованием запятой. Локаль не влияет на то, что является допустимым XML.
Вы не включаете свою ошибку. Надеюсь, он жалуется, что в числе стоит запятая.