4

次の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);

より強力な検証を行うために、いくつかの assert タグを導入したかっただけです。しかし、これは例外につながります:

System.Xml.Schema.XmlSchemaException: http://www.w3.org/2001/XMLSchema:assert-elementは、このコンテキストではサポートされていません。

今のところわからないのは...

  1. xsd 内の間違った場所で assert 要素を使用しました
  2. http://www.w3.org/2001/XMLSchema-Namespaceは XML スキーマのバージョン 1.1 をサポートしていないため、assert- elements
  3. C# XmlSchemaSet は assert 要素の処理方法を認識していません

事前に助けてくれてありがとう!

4

1 に答える 1