0

サード パーティの XML スキーマに従ってサード パーティの XML ドキュメントを受け取るという問題があります。スキーマは、 xs:integer 要素でパターン制限を使用します。

  <xs:simpleType name="NumericInteger_Length8To8">
    <xs:annotation>
      <xs:documentation xml:lang="en">Format limitations: n8</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:integer">
      <xs:pattern value="-?[0-9]{8,8}" />
    </xs:restriction>
  </xs:simpleType>

受信した XML は、先頭の 1 桁以上がゼロである 8 桁の整数を示しています。

<exampleCode>01234567</exampleCode>

この XML を解析すると、パターンに一致するため有効です。次に、同じ XML をテキスト メッセージとしてもう一度送信する必要があります。私の XML レンダラーは、整数の正規表現を送信するため、先行ゼロなしで次のようになります。

<exampleCode>1234567</exampleCode>

受信システムは、送信したメッセージを検証しようとし、値 1234567 がパターン制限に一致しなくなったため、エラーをスローします。

受信した XML は XML ドキュメントとしてシステムに内部的に保存されるため、実際の整数に変換され、字句表現が失われます。次に、XML ドキュメントをレンダリングすると、最初の字句表現が明らかに失われているため、先行ゼロはありません。この問題を回避する良い方法がわかりません。唯一の可能性は、XML スキーマを内部で変更することです。たとえば、型定義を xs:string にして、変更なしで渡されるようにしますが、(サードパーティの) スキーマには触れたくないでしょう。

私の質問は、これが xs:integer のパターン ファセットの有効な使用であるかどうかです。サード パーティの XML スキーマは有効なスキーマですか? W3 はパターンの使用に制限やガイドラインを課していますか?

同様の問題をいくつかしか見つけることができませんでした。

http://technet.microsoft.com/en-us/library/ms190665(v=sql.90).aspx (正規形 ... セクション) http://mail-archives.apache.org/mod_mbox/xerces- j-users/200409.mbox/%3C20040909151622.GA9712@hamachi.dyndns.org%3E

4

1 に答える 1

0

それは完全に合法ですが、私の見解では、非常に悪い習慣です。

W3C は、ガイドラインや使用法に関するアドバイスを作成する業務を行っているわけではありません。通常、それは他の人に任せています。

于 2013-07-25T13:59:12.660 に答える