私はxsdファイルを使用して、xsd.exeのようなc#クラスをmicrosoftから生成します。 同じxsdファイルからWPFフォームも生成します。 xs:elementタグでカスタム属性を定義する必要がある場合があります。 私のジェネレータでこの属性を使用して、WPFフォームでいくつかの機能を管理しています。カスタマイズされたXSDファイル
私が欲しいのは、いくつかの要素にカスタム属性を持つ「高度な」xsdファイルです。 任意のxsdパーサーに対して有効である必要があります。 myCutomAttributeのためのそのよう
:
<xs:element name="mycustomName" type="someComplexType" myCutomAttribute="generateIndex">
私は外部ネームスペース、 とXSDファイルを拡張しようとしたが、私はそれをvalidable作る方法を知りません。 gtという名前空間generatorToolsを追加しました。
<xs:element name="mycustomName" type="someComplexType" gt:myCutomAttribute="generateIndex">
これは拡張する必要がありXSDです:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning"
xmlns:ns1="http://www.mycompany.com"
targetNamespace="http://www.mycompany.com" elementFormDefault="qualified" attributeFormDefault="unqualified" vc:minVersion="1.1">
<xs:attribute name="myCutomAttribute" type="ns1:functions" />
<xs:simpleType name="functions">
<xs:restriction base="xs:string">
<xs:enumeration value="generateIndex"/>
<xs:enumeration value="someOtherEntry"/>
</xs:restriction>
</xs:simpleType>
を事は私が属性GT入力する場合は、次のとおりです。myCustomAttribute権利を、それが動作します。 gt:myCustomAttributeの値は、関数 "という名前のextenal単純型の列挙体で検証されます。しかし、私は入力エラーがある場合、属性は任意の値で受け入れられます。しかし、なぜ?検証エラーを得るためにはどうすればよいですか?
有効:
<xs:element name="mycustomName" type="someComplexType" gt:myCutomAttribute="generateIndex">
<xs:element name="mycustomName" type="someComplexType" gt:myCutomAttribute="someOtherEntry">
有効ではありません:
<xs:element name="mycustomName" type="someComplexType" gt:myCutomAttribute="xyz123">
これは有効ですが、なぜ?:
<xs:element name="mycustomName" type="someComplexType" gt:myMissspelledAttribute="xyz123">
任意のアイデア、任意のソリューション、またはイムはcompletly間違っているの? 助けてくれてありがとう
PS:英語は私の最高の言語です。 ;)