Разрешено ли xml: lang для элемента, объявленного в схеме как xs: string? - PullRequest
1 голос
/ 17 ноября 2010


Учитывая следующую схему

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://tempuri.org/foo"
           elementFormDefault="qualified">
  <xs:element name="foo" type="xs:string" />
</xs:schema>

Допустим ли следующий XML?

<foo xmlns="http://tempuri.org/foo" xml:lang="en-US">test</foo>

То есть, допустим ли здесь атрибут "xml: lang"?

Причина этого вопроса заключается в том, что конечные точки WCF (Windows Communication Foundation), настроенные для использования SOAP / 1.1 через HTTP (basicHttpBinding в терминах WCF), всегда включают атрибут «xml: lang» в элементе «faultstring», когда возникает ошибка поднял. Согласно схеме конверта SOAP / 1.1 этот элемент имеет простой тип "xs: string".

Мне было бы все равно, если бы не у нашего клиента возникли проблемы с десериализацией этих ошибок. Я сообщил об этом как о потенциальной ошибке в Microsoft, но получил ответ, что это разработано и соответствует SOAP / 1.1. Чтение спецификаций XML-схемы заставляет меня поверить, что Microsoft ошибочна и что атрибуты для элементов простых типов не допускаются.

Я что-то упустил из-за атрибутов в пространстве имен "xml:"?

Что я действительно хотел бы иметь, так это какое-то «официальное» определение, которое позволяет мне сказать «вы не правы» Microsoft или «у вас глючный стек WS» нашему клиенту, не обманывая себя.

РЕДАКТИРОВАТЬ : Ответ на заглавный вопрос, как представляется, "нет", как указано ниже. Решение моей проблемы с WCF оказалось довольно простым. Передайте пустую строку в качестве параметра xmlLang в конструкторе System.ServiceModel.FaultReasonText, и атрибут не будет добавлен. Передача нулевого значения не работает (ArgumentNullException) и конструктор с одним аргументом (системный язык по умолчанию будет установлен как xml: lang)

1 Ответ

0 голосов
/ 18 ноября 2010

Согласно XML-схеме , O'reilly, от Eric van der Vlist, p. 170 (атрибуты XML), атрибут xml: lang должен быть объявлен в схеме с объявленным пространством имен xml и импортировать схему для пространств имен xml.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...