Свойства класса XmlSchemaElement, означающие

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

  1. Каковы различия между XmlSchemaElement.ElementSchemaType а также XmlSchemaElement.ElementType?
  2. Каковы различия между QualifiedName, SchemaTypeName and RefName?
  3. Как QualifiedName, SchemaTypeName and RefName связаны друг с другом? когда SchemaTypeName.IsEmpty == true, Означает ли это, что RefName.IsEmpty == false?
  4. Возможно ли, что все *Names будет Emptyчто значит встроенный ComplexType?

В общем, мне нужно проанализировать xsd и отобразить результат на внутреннюю структуру, поэтому мне нужны некоторые правила, которые позволяют мне генерировать различные типы объектов. Скажем if (SchemaTypeName.IsEmpty) затем в ElementSchemaType я имею SimpleType со всеми предусмотренными ограничениями.

1 ответ

Решение
  1. XmlSchemaElement.ElementType устарел с версии 2.0, в противном случае они одинаковы.
  2. 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>
    
  3. К сожалению, это не обязательно так; например, если с элементом не связан тип (по умолчанию это означает xsd: anyType).

  4. Нет, см. Выше (anyType).

Кроме того, все становится еще сложнее. Если у вас есть элементные частицы в группе, на которую нигде нет ссылок в XSD, то забавно то, что свойства PSVI элементной частицы в этой группе не заполняются... Я никогда не удосужился выяснить, если это функция или ошибка... Однако я сделал для создания посетителя, который использует все эти свойства и пытается обработать один бит информации, который он находит... Для меня этот подход также оказался устойчивым к исправлениям.NET по сравнению с года...

Другие вопросы по тегам