私はトラブルattributeGroup
ref
とを使用しながら、xsd.exeを使用してのことだとXsd.exeではを使用する方法。私はそれを使ってC#クラスを生成します。attributeGroupのrefの
は、ここに私のXSDです:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
version="1.0">
<xs:attributeGroup name="PersonBaseAttributes">
<xs:attribute name="Name" type="xs:string" use="required" /> <!-- Missing in .CS -->
<xs:attribute name="Born" type="xs:dateTime" use="required" /> <!-- Missing in .CS -->
</xs:attributeGroup>
<xs:attributeGroup name="SalesAttributes">
<xs:attributeGroup ref="PersonBaseAttributes" />
<xs:attribute name="Sales" type="xs:int" use="required" />
</xs:attributeGroup>
<xs:attributeGroup name="BossAttributes">
<xs:attributeGroup ref="PersonBaseAttributes" />
<xs:attribute name="Department" type="xs:string" use="required" />
</xs:attributeGroup>
<xs:element name="Boss" nillable="true" type="BossPerson" />
<xs:element name="Sales" nillable="true" type="SalesPerson" />
<xs:complexType name="SalesPerson">
<xs:attributeGroup ref="SalesAttributes" />
</xs:complexType>
<xs:complexType name="BossPerson">
<xs:attributeGroup ref="BossAttributes" />
</xs:complexType>
</xs:schema>
それは、この2つのクラスを生成:
public partial class SalesPerson {
private int salesField;
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public int Sales {
get {
return this.salesField;
}
set {
this.salesField = value;
}
}
}
public partial class BossPerson {
private string departmentField;
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string Department {
get {
return this.departmentField;
}
set {
this.departmentField = value;
}
}
}
生成されたクラスはPersonBaseAttributes
からフィールドName
とBorn
が欠落しています。 私のXSDが間違っているか、またはxsd.exeがそれを処理する方法を知らないのですか?
xsd.exeが処理できない場合は、他の方法がありますか?
私はこのようにそれを実行します。XMLスキーマは、私には正しいよう
xsd.exe foo.xsd /c
同じ問題があります。あなたは解決策を見つけることができましたか? –
@ParvSharma - 残念ながら。私の場合、代わりに手動で行った。 – smoksnes