Свойства класса XmlSchemaElement, означающие
Может быть, я что-то упустил, но может кто-нибудь объяснить мне значение и различия следующих свойств XmlSchemaElement
учебный класс:
- Каковы различия между X
mlSchemaElement.ElementSchemaType
а такжеXmlSchemaElement.ElementType
? - Каковы различия между
QualifiedName, SchemaTypeName and RefName
? - Как
QualifiedName, SchemaTypeName and RefName
связаны друг с другом? когдаSchemaTypeName.IsEmpty == true
, Означает ли это, чтоRefName.IsEmpty == false
? - Возможно ли, что все
*Names
будетEmpty
что значит встроенный ComplexType?
В общем, мне нужно проанализировать xsd и отобразить результат на внутреннюю структуру, поэтому мне нужны некоторые правила, которые позволяют мне генерировать различные типы объектов. Скажем if (SchemaTypeName.IsEmpty)
затем в ElementSchemaType
я имею SimpleType
со всеми предусмотренными ограничениями.
1 ответ
- XmlSchemaElement.ElementType устарел с версии 2.0, в противном случае они одинаковы.
QualifiedName представляет фактическое квалифицированное имя элемента, так как оно будет у соответствующего элемента XML в документе экземпляра XML. SchemaTypeName представляет имя типа, данного элементу (может быть встроенным в XSD, например:
int
или пользовательский тип определения, такой какmine
). RefName указывает, что частица, будучи элементом, на самом деле является ссылкой на глобально определенный элемент в другом месте схемы (см. Ниже).<xsd:element name="Global" type="xsd:string"/> <xsd:group name="some"> <xsd:sequence> <xsd:element name="Local" type="xsd:int"/> <xsd:element ref="Global" minOccurs="0"/> </xsd:sequence> </xsd:group>
К сожалению, это не обязательно так; например, если с элементом не связан тип (по умолчанию это означает xsd: anyType).
- Нет, см. Выше (anyType).
Кроме того, все становится еще сложнее. Если у вас есть элементные частицы в группе, на которую нигде нет ссылок в XSD, то забавно то, что свойства PSVI элементной частицы в этой группе не заполняются... Я никогда не удосужился выяснить, если это функция или ошибка... Однако я сделал для создания посетителя, который использует все эти свойства и пытается обработать один бит информации, который он находит... Для меня этот подход также оказался устойчивым к исправлениям.NET по сравнению с года...