C#中的XML模式1.1断言

时间:2013-08-20 09:08:30

标签: c# xsd

我正在使用以下xml架构验证一些xml文件:

        String xsdMarkup = 
          "[...]

           <xsd:complexType name='connectionType'>
                <xsd:attribute name='SourceElement' type='guidType' use='required' />
                <xsd:attribute name='TargetElement' type='guidType' use='required' />
                <xsd:attribute name='GUID' type='guidType' use='required' />
                <xsd:assert test='@SourceElement == 0' />
           </xsd:complexType>

           [...]
          ";

        XmlSchemaSet schemas = new XmlSchemaSet();
        schemas.Add("", XmlReader.Create(new StringReader(xsdMarkup)));
        Console.WriteLine("Validating doc ...");
        docToValidate.Validate(schemas, (sender, e) =>
        {
            Console.WriteLine(e.Message);
            valid = false;
        }, true);

我只是想介绍一些断言标记,以便进行更强大的验证。但这导致例外:

  

System.Xml.Schema.XmlSchemaException:此上下文不支持http://www.w3.org/2001/XMLSchema:assert-element

我现在不知道的是......

  1. 我在xsd
  2. 中的错误位置使用了assert-element
  3. http://www.w3.org/2001/XMLSchema-Namespace不支持XML Schema 1.1版,因而不支持assert-elements
  4. C#XmlSchemaSet不知道如何处理断言元素
  5. 提前感谢您的帮助!

1 个答案:

答案 0 :(得分:5)

XSD架构的.NET实现仅处理版本1.0而不处理版本1.1 - 因此它不支持assert