2017-09-06 11 views
0

私は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:英語は私の最高の言語です。 ;)

答えて

0

希望している問題を解決してください。 別の属性を検証する場合は、 myMissspelledAttributeは、あなたのケースのように、あなたは、スキーマのサンプルが

<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:attribute name="myMissspelledAttribute" type="ns1:functions"/> 
    <xs:simpleType name="functions"> 
     <xs:restriction base="xs:string"> 
      <xs:enumeration value="generateIndex"/> 
      <xs:enumeration value="someOtherEntry"/> 
     </xs:restriction> 
    </xs:simpleType> 
</xs:schema> 
下に表示され <xs:attribute name="myMissspelledAttribute" type="ns1:functions"/>

自分のスキーマに必要なカスタム属性を追加する必要があります

関連する問題