6

いくつかの制約的な理由から、プロジェクトを深く掘り下げることはできません。

基本的に、オブジェクトをシリアル化してからスキーマに対して検証する前に、オブジェクトを事前検証しようとしています。スキーマには名前の検証がありますが、これは理想的ではなく、名前を検証しない方がよいと思いますが、スキーマが実行しようとしていることに対して有効な正規表現を複製できないようです。

<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>

上記の場合、私は単にxsd:patternforを試して使用できると思いましたcharset

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

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

4

1 に答える 1

2

私は実際に広範囲に取り組んだことがないので、偽装しているにもかかわらず、問題を見つけましたXML Schema

違い

CharsetDタイプはパターンを使用するだけではありません。これだけでは名前を数字で検証するには不十分であるため、パターンだけを使用しようとすると、数字が許可されました。ただし、型には数値を制約する行があります。したがって、正規表現が返さないのにスキーマがエラーを返すのはなぜですか。

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

解決

stringスキーマに適用される制限に対応する別の単一正規表現を作成しました。

^[\p{L} \.\-]+$
于 2012-12-19T12:02:07.100 に答える