Определите XmlSchemaSet для массива строк - PullRequest
0 голосов
/ 25 мая 2020

Мне нужно создать XmlSchemaSet для этого объекта:

public class ChartData
{
    public string[] SeriesNames;
     //enum
    public ChartDataType CategoryDataType;
    public int CategoryFormatCode;
    public string[] CategoryNames;

    public double[][] Values;
}

Я пробовал это определение для seriesNames, но оно не сработало, и я получил сообщение об ошибке:

Элемент 'http://www.w3.org/2001/XMLSchema:complexType' не поддерживается в этом контексте.

<xs:schema attributeFormDefault='unqualified' elementFormDefault='qualified' xmlns:xs='http://www.w3.org/2001/XMLSchema'>
  <xs:element name='Chart'>
    <xs:complexType>
      <xs:attribute name='SeriesNames'>
        <xs:complexType>
          <xs:attribute maxOccurs='unbounded'  type='xs:string'/>
        </xs:complexType>
      </xs:attribute>
      <xs:attribute name='Values' type='xs:string' use='required' />
      <xs:attribute name='CategoryDataType' type='xs:string' use='optional' />  
      <xs:attribute name='CategoryFormatCode' type='xs:string' use='optional' />
      <xs:attribute name='CategoryNames' type='xs:string' use='required' />
      <xs:attribute name='Optional' type='xs:boolean' use='optional' />
    </xs:complexType>
  </xs:element>
</xs:schema>

Если я использую определение:

<xs:attribute name='SeriesNames' type='xs:string' use='required' />

, когда я использую XPathEvaluate, это не ' t прочитать массив строк

Любая помощь будет оценена

Ответы [ 2 ]

0 голосов
/ 26 мая 2020

Спасибо @jdweng за ваш ответ, но когда я выполняю определение, я получаю сообщение об ошибке: Ошибка проверки схемы: атрибут 'SeriesNames' не объявлен.

Я выполняю следующий код:

var XsdMarkup = @"<xs:schema attributeFormDefault='unqualified' elementFormDefault='qualified' xmlns:xs='http://www.w3.org/2001/XMLSchema'>
                               <xs:element name='Chart'>
                                <xs:complexType>
                                         <xs:sequence>
    <xs:element name='SeriesNames' type='xs:string' minOccurs="0" maxOccurs='unbounded'/>
  </xs:sequence>
                                   <xs:attribute name='Values' type='xs:string' use='required' />
                                   <xs:attribute name='CategoryDataType' type='xs:string' use='optional' /> 
                                   <xs:attribute name='CategoryFormatCode' type='xs:string' use='optional' />   
                                   <xs:attribute name='CategoryNames' type='xs:string' use='required' />    
                                  <xs:attribute name='Optional' type='xs:boolean' use='optional' />                                                                                                
                                </xs:complexType>
                              </xs:element>
                            </xs:schema>";
XmlReader = XmlReader.Create(new StringReader(XsdMarkup));
0 голосов
/ 25 мая 2020

Попробуйте следующее:

<?xml version="1.0" encoding="utf-8" ?>
<xs:schema attributeFormDefault='unqualified' elementFormDefault='qualified' xmlns:xs='http://www.w3.org/2001/XMLSchema'>
  <xs:element name='Chart'>
    <xs:complexType>
      <xs:sequence>
        <xs:element name='SeriesNames' type='xs:string' minOccurs="0" maxOccurs='unbounded'/>
      </xs:sequence>
      <xs:attribute name='CategoryDataType' type='xs:string' use='optional' />  
      <xs:attribute name='CategoryFormatCode' type='xs:string' use='optional' />
      <xs:attribute name='CategoryNames' type='xs:string' use='required' />
      <xs:attribute name='Optional' type='xs:boolean' use='optional' />
    </xs:complexType>
  </xs:element>
</xs:schema>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...