次の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は、このコンテキストではサポートされていません。
今のところわからないのは...
- xsd 内の間違った場所で assert 要素を使用しました
- http://www.w3.org/2001/XMLSchema-Namespaceは XML スキーマのバージョン 1.1 をサポートしていないため、assert- elements
- C# XmlSchemaSet は assert 要素の処理方法を認識していません
事前に助けてくれてありがとう!