2012-12-19 4 views
6

私は多くの制約理由のために自分のプロジェクトの深いところに行くことはできません。XSD:PatternとC#Regexの違いはありますか?

私は、オブジェクトをシリアル化してスキーマに対して検証する前に、オブジェクトの事前検証を基本的に試行しています。スキーマは名前の検証を持っています。理想的ではなく、名前を検証しない方が良いですが、スキーマがしようとしているものに対して有効な正規表現を再現できないようです。

<xsd:simpleType name="CharsetD"> 
    <xsd:restriction base="xsd:string"> 
    <xsd:pattern value="[A-Za-z \-&apos;]*"/> 
    </xsd:restriction> 
</xsd:simpleType> 

<xsd:element minOccurs="0" maxOccurs="2" name="Fore"> 
    <xsd:simpleType> 
    <xsd:restriction base="CharsetD"> 
     <xsd:minLength value="1"/> 
     <xsd:maxLength value="35"/> 
     <xsd:pattern value="[A-Za-z].*"/> 
    </xsd:restriction> 
    <xsd:simpleType> 
</xsd:element> 

私は単に私がしようとするとちょうどcharsetためxsd:patternを使用することができ、上記の場合には思いました。

Luke2などの名前を返した[A-Za-z \-&apos;]*を使用しようとしましたが、スキーマの検証では数字が含まれているとは言えませんでした。

私の質問は、上記の単一のc#正規表現をどのように複製できますか?また、私が将来私が気づくことができる.NETでそれを使用した場合と比較して、スキーマパターンがどのように動作するかには違いがありますか?

私は本当に XML Schema

CharsetDタイプだけでパターンを使用していない

違いで幅広く活動していないとして、これだけでISN」として、変装はいえ、私は、問題を発見した

答えて

2

名前を数字で検証するのに十分なので、ちょうどパターンを使用しようとしたときに数字が許されていました。しかし、型には数字が制約されているため、スキーマが正規表現ではないエラーを返す理由があります。

<xsd:restriction base="xsd:string"> 

ソリューション

私は自分のスキーマに適用されstring制限に応えるだろう異なる単一の正規表現を作成しました。

^[\p{L} \.\-]+$ 
関連する問題