私はここにフラット化されたXSDを持っています:http: //pastebin.com/tQVSH9Jp
XSD.exe(参照される要素を無視する)用に修正するために実行している「置換」XSLTスクリプトがありますが、結果のXSDにはいくつかのプロパティがありません。(ID
には存在しませんUniqueID_Type
)。
誰かがこれらの置換を正しく実行するXSLTスクリプトを提供できますか、あるいはまったく別のソリューションを提供することさえできますか?
私はここにフラット化されたXSDを持っています:http: //pastebin.com/tQVSH9Jp
XSD.exe(参照される要素を無視する)用に修正するために実行している「置換」XSLTスクリプトがありますが、結果のXSDにはいくつかのプロパティがありません。(ID
には存在しませんUniqueID_Type
)。
誰かがこれらの置換を正しく実行するXSLTスクリプトを提供できますか、あるいはまったく別のソリューションを提供することさえできますか?
誰かが独自のxsd.exeを作成し、XmlSchemaImporterに依存することを提案したのはおかしいです... 1つは、それが簡単な作業ではないと思います。次に、属性が欠落している問題はXmlSchemaImporterに起因します。ImportAttributeGroupMembersにバグがあります:XmlSchemaAttributeGroupRefを探す代わりに、XmlSchemaAttributeGroupをチェックしています(Reflectorの好意による以下の抜粋):
private void ImportAttributeGroupMembers(XmlSchemaAttributeGroup group, string identifier, CodeIdentifiers members, CodeIdentifiers membersScope, string ns)
{
for (int i = 0; i < group.Attributes.Count; i++)
{
object obj2 = group.Attributes[i];
if (obj2 is XmlSchemaAttributeGroup)
{
...
}
else if (obj2 is XmlSchemaAttribute)
{
...
}
}
...
}
同様のユーティリティxsd2codeがあり、XMLスキーマリファクタリング(XSR)に入る前に元のXSDで試してみます。
このルートをたどりたい場合は、XSR用のQTAssistantをお勧めします(私はそれに関連付けられています)。XSDを最新バージョン(4.0.21)で試しましたが、機能しました。結果をここに掲載しました。
欠陥があると指摘したフラグメント(フィールドを表示しているだけです)に対してXSD.exeを使用して生成されたコードは、ID属性のidFieldを表示します。
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.opentravel.org/OTA/2003/05")]
public partial class UniqueID_Type {
private CompanyNameType companyNameField;
private string uRLField;
private string typeField;
private string instanceField;
private string idField;
private string iD_ContextField;
...
}
セットアップに固有のものは、trueに設定する必要があるInlineAttributeGroupsです。
QTAssistantを使用したリファクタリングの詳細に興味がある場合は、SOに関するこの投稿もご覧ください。とにかく、私はリファクタリングされたスキーマ全体を投稿しました、それを自由に使用してください...