次の Xml を検証しようとしています。
string xml = @"<?xml version=""1.0"" encoding=""utf-8"" ?>
<ROOT xmlns:bk=""urn:samples"">
<RandomName1>
<Element1>v</Element1>
<Element2>v</Element2>
<Element3>v</Element3>
<Element4>v</Element4>
</RandomName1>
<RandomName2>
<Element1>v</Element1>
<Element2>v</Element2>
<Element3>v</Element3>
<Element4>v</Element4>
</RandomName2>
</ROOT>";
RandomNameN
任意の文字列です。Element1 - Element4
が存在し、正しく名前が付けられていること、およびスキーマが一致していることを確認することに関心があります。
私は次のことを試しました
string xsdMarkup =
@"<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
<xsd:element name='ROOT'>
<xsd:complexType>
<xsd:sequence>
<xsd:any>
<xsd:complexType>
<xsd:sequence>
<xsd:element name ='Element1'/>
<xsd:element name ='Element2'/>
<xsd:element name ='Element3'/>
<xsd:element name ='Element4'/>
</xsd:sequence>
</xsd:complexType>
</xsd:any>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>";
XmlSchemaSet schemas = new XmlSchemaSet();
schemas.Add("", XmlReader.Create(new StringReader(xsdMarkup)));
var xDoc = XDocument.Parse(xml);
bool errors = false;
string msg = string.Empty;
xDoc.Validate(schemas, (o, e) =>
{
msg = e.Message;
errors = true;
});
私は得ていますSystem.Xml.Schema.XmlSchemaException
「http://www.w3.org/2001/XMLSchema:complexType」要素は、このコンテキストではサポートされていません。
RandomName1
ノードに名前を必要とせずに存在させる方法も知る必要があります。私は</xsd:any>
代わりにこれを達成しようとしました</xsd:element>