может схема xsd проверять кодировку, например UTF-8, возможно? - PullRequest
3 голосов
/ 10 декабря 2010

При использовании схемы существует ли простой / легкий способ проверки кодировки сообщения xml?

Предполагая, что 1-я строка XML не заслуживает доверия? например ignore? xml version = "1.0" encoding = "UTF-8"?

1 Ответ

6 голосов
/ 10 декабря 2010

Нет, схема не может определять тип кодирования, кроме как с точки зрения типов элементов двоичных данных, но эта кодировка все еще будет инкапсулирована кодированием высокого уровня самого документа. Это имеет смысл, если вы понимаете, что схема должна описывать информацию, а не транспортный формат. Спецификация XML - это то, что предписывает транспортной информации этого документа, например, как информация представляется и хранится в наиболее обобщенном смысле. Схема предназначена для проверки того, что данные, хранящиеся в XML, соответствуют определенным синтаксическим ограничениям между сторонами. Пролог (эта первая строка, которую вы упоминаете), как он определен в спецификации XML, - это сущность, в которой существование (или нет) - это то, что читатель жалобы должен знать, как кодируется документ. Кодирование - это просто соглашение между конечными точками для представления правильных кодовых точек Юникода, а спецификация XML определяет способ достижения этого соглашения, а не схемы.

Если вам интересно, это соответствующий раздел спецификации XML 1.1 о том, как достигнуто это соглашение, и более интересно, как читатель жалоб может «угадать» кодировку, поэтому достаточно предположить, что пролог может быть прочитанным, чтобы прочитать фактический атрибут кодирования: http://www.w3.org/TR/xml11/#sec-guessing

...