Хотя один документ может содержать только один корневой элемент, поскольку XSD может фактически определить несколько действительных корневых элементов .
Если вы действительно хотите, чтобы единственный тип был действительным в качестве корневого элемента, то это должен быть единственный тип, на который ссылается <element>
.
Например, в приведенной выше схеме узлы DocumentInfo и Prerequisite также являются допустимыми корневыми элементами. Чтобы ваша схема имела только один действительный корневой узел, замените элементы DocumentInfo и Prerequisite простыми определениями complexType:
<xsd:complexType name="DocumentInfoType">
...
</xsd:complexType>
<xsd:complexType name="Prerequisite">
....
</xsd:complexType>
ОБНОВЛЕНИЕ: Чтобы получить доступ к имени элемента, вам просто нужно взглянуть на свойство Name в XmlElement:
XmlDocument doc = new XmlDocument();
doc.Load("D:\\schema.xsd"); // Load the document from the root of an ASP.Net website
XmlElement schemaElement = doc.DocumentElement; // The root element of the schema document is the <schema> element
string elementName = schemaElement.LocalName; // This will print "schema"
foreach (XmlNode ele in schemaElement.ChildNodes)
{
if (ele.LocalName == "element")
{
// This is a valid root node
// Note that there will be *more than one* of these if you have multiple elements declare at the base level
}
}