5

パターンが示すように十分な長さがない場合にxsd:decimalの小数桁がゼロで埋められるように、Webサービス応答を実装するように要求されています。これが妥当な要求であり、xsd:decimalがこのようなパターンで使用されることになっているのかどうか疑問に思っています。仕様に応じたxsdの関連部分は次のとおりです。

<xsd:simpleType>
   <xsd:restriction base="xsd:decimal">
       <xsd:totalDigits value="14"/>
       <xsd:fractionDigits value="2"/>
       <xsd:pattern value="[\-+]?[0-9]{1,12}[.][0-9]{2}"/>
   </xsd:restriction>
</xsd:simpleType>

したがって、fractionDigitsは2に設定されます。これは、精度が最大2桁になる可能性があることを意味します。http://zvon.org/xxl/XMLSchemaTutorial/Output/ser_types_st2.htmlによると、小数桁が少ない場合でも問題ありません(たとえば、5.1のような数値の場合)。

ただし、パターン{2}によると、常に2桁の小数部が必要です。

私たちは汎用アプリケーション開発プラットフォーム(Mendix)を開発しており、小数が何に使用されるか(通貨、pH値、距離など)はわかりません。このケースは、プラットフォームが使用されている特定のプロジェクトに由来しますが、通常、どのような種類のデータが転送されているかはわかりません。この点に関しては、2桁の小数部が必要であると述べているWSDLに従うことを決定できます。しかし、それの実装は非常に一般的でなければなりません。

これらの小数桁を正確に何で埋めるべきか、あるいはこの小数を完全に除外するのではなく、埋めるべきであるかについては何も述べていません。理論的には、パターンと一致するまで5で埋めることを決定できます。私の知る限り、パターンはめったに使用されず、使用されている場合はパスワードなどに使用されます。XSDの仕様はあいまいですが、これがXSDの有効な使用法であるかどうか、および0で埋めることを決定することが理にかなっている場合は、誰かが光を当てることができれば幸いです。

4

2 に答える 2

2

実際には、私のリトマス試験は、直接関与するテクノロジースタックの観点からこれを検討することです。さらに良いのは、それが主流であるということです。

JavaのJAXBまたは.NETのxsd/svcutil/etc.exeについて考えることができます。値1を使用して、このスキーマフラグメントに対してこれらの非常に一般的なツールを簡単にテストすると、有効なXMLを生成できません。これにより、開発者はあらゆる種類のカスタマイズをスクランブリングして、XSDパターンに従って機能させることができます。苦痛を伴う、高い開発および保守コスト...

同じことがXSLTにも当てはまります。出力を手動でフォーマットする必要があります...結論として、XSDパターンは「自動」フォーマットにマシンで使用できません...私はまだそのようなことを見ていません...

また、このような要件は不合理であると考えており、交換されるデータの記述に関しては、アンチパターンと見なす必要があると個人的に感じています。絶対的なものはないので、例外があるはずだと考えられます。私は何も考えられませんが、あなたがそのような要件を提示された理由を探る必要があります。次に、このパターンを含まない解決策を見つけようとします...

于 2012-02-23T16:07:23.670 に答える
1

実際には、その特定の10進数値のパラメーターに依存します..

XML は、さまざまなデータを持つことができるデータの転送と保存に最も適したものの 1 つです。ここで 2 つの例を選択します。

  1. データは通貨です。ここでの私のアドバイスは強制すること[0-9]*[.][0-9]{2}です..これを支援するために、クライアントデータ復元ソフトウェアは、0を埋め込むように設計されています。

  2. データは化学薬品の pH 値です。ここでは、小数点以下 1 桁が必須です。[0-1][0-9][.][0-9]

したがって、それはすべて参照しているオブジェクトに依存します..本当に必要でない限り、パターンを強制するのは公平ではありません:)

于 2012-02-23T15:05:23.057 に答える