4

XSDパターンに従って書いた単純なXSDを書きました

<xsd:element name="xx">
<xsd:simpleType  >
    <xsd:restriction base="xsd:string">
        <xsd:pattern
            value="^[a-z]+">
        </xsd:pattern>
    </xsd:restriction>
</xsd:simpleType>
</xsd:element>

jaxb を使用して XML-XSD 検証を実行すると、常に XX タグのエラーが発生します。元:

<xx>abcd</xx>

この奇妙な動作がなぜなのかわかりません。私の正規表現が正しく、上記の例が検証に合格することを願っています。

4

1 に答える 1

6

式からアンカー ^ を削除する必要があります。XSD バリデーターは ^ または $ アンカーを認識しませんが、それらをリテラル文字として解釈します。これを確認するには、XML を に変更<xx>^abcd</xx>し、現在の XSD に対して検証します。

これは、パターンが文字列の最初と最後に自動的にバインドされるためです。値を一致させようとする正規表現とは異なり、この正規表現は要素の内容全体を検証するため、フィールドに表示されるすべてのものに完全に一致するパターンを作成する必要があります。

于 2013-05-07T21:36:00.527 に答える