The Visual Studio XSD tool cannot handle an XML Schema that uses a repeating element with the same name at two distinct places. For example, it cannot handle this schema (in XQuery notation for brevity):
root {
elementA {
problemElement {
name
}
},
elementB {
problemElement {
name
}
}
}
The element named problemElement causes the problem. If you attempt to generate C# code for this schema using the XSD tool, it all works. But if you try to generate a dataset, you an error like:
Error: There was an error processing 'myproblematic.xsd'.
- The same table (ProblemElement) cannot be the child table in two nested relations.
The solution is to rename one of the problematic elements to reflect the context (sigh).
I have a minimal xsd that demonstrates the issue:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
targetNamespace="urn:tns"
xmlns:tns="urn:tns"
>
<xs:element name="Root" type="tns:Root"/>
<xs:complexType name="Root">
<xs:sequence>
<xs:element name="ElementA">
<xs:complexType>
<xs:sequence>
<xs:element name="ProblemElement">
<xs:complexType>
<xs:sequence>
<xs:element name="Name" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ElementB">
<xs:complexType>
<xs:sequence>
<xs:element name="ProblemElement">
<xs:complexType>
<xs:sequence>
<xs:element name="Name" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>
And here is the command to process it:
C:\VS.NET2003\Common7\Tools\vsvars32.bat
xsd /d dotnet-xsd-bug.xsd