2013-07-25 3 views
1

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

  1. Каковы различия между X mlSchemaElement.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. Нет, см. Выше (любой тип).

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

Смежные вопросы