在閱讀了關於使用貨幣/貨幣的Java數據類型的幾個問題之後,我決定使用int/long方法,將貨幣/貨幣的值作爲其最低單位(例如美分)進行存儲。我應該使用哪種XML數據類型作爲貨幣/貨幣?
這是否也適用於存儲數據(XML)?
這使我想到的第一件事是否定的,因爲這將只是存儲數據時,當我讀到的數據「解析」爲XML十進制格式,而「解析」回來。
歡迎任何建議,因爲我是新手。
在閱讀了關於使用貨幣/貨幣的Java數據類型的幾個問題之後,我決定使用int/long方法,將貨幣/貨幣的值作爲其最低單位(例如美分)進行存儲。我應該使用哪種XML數據類型作爲貨幣/貨幣?
這是否也適用於存儲數據(XML)?
這使我想到的第一件事是否定的,因爲這將只是存儲數據時,當我讀到的數據「解析」爲XML十進制格式,而「解析」回來。
歡迎任何建議,因爲我是新手。
我用這個
<xsd:simpleType name="money">
<xsd:restriction base="xsd:decimal">
<xsd:fractionDigits value="2"/>
</xsd:restriction>
</xsd:simpleType>
很難給你上的要求這麼少輸入一個設計,但我永遠不會把錢放在XML相當於沒有貨幣:
<amount currency="GBP">230.45</amount>
但是,如果你「美國人民可以重新把你像來自外太空的人,如果你敢建議他們處理多種貨幣,所以您的里程可能會有所不同...
我想不管你考好已經很好地設計了XML:人類讀者能夠正確猜測這意味着什麼,而不會涉及文檔?並非所有人都認同這一要求,有時也不切實際。但省略小數點只是要求數據在該行的某處被錯誤處理。
我同意可讀性的觀點。我今天到的這兩個答案融合得非常好,謝謝你們。 –
我已經使用這個
<complexType name="PaymentAmountType">
<annotation><documentation>Type representing a payment amount (e.g. price or total)</documentation></annotation>
<attribute name="currencyCode" type="payment:CurrencyCodeType" use="required"/>
<attribute name="amount" type="payment:AmountType" use="required"/>
</complexType>
<simpleType name="AmountType">
<restriction base="decimal">
<fractionDigits value="2"/>
</restriction>
</simpleType>
<simpleType name="CurrencyCodeType">
<restriction base="string">
<minLength value="3"/>
<maxLength value="3"/>
<pattern value="[A-Z]{3}"/>
</restriction>
</simpleType>
這讓我代表我的貨幣金額爲三個字符(ISO 4217),貨幣代碼,並限制到小數點後兩位的量的組合。
您或許可以進一步將貨幣代碼定義爲枚舉類型,該枚舉類型指定所有有效的ISO 4217貨幣代碼以避免用戶眼中出現混淆 - 例如,他們可能不知道英鎊是否GBP或UKP。
這是一個完整的示例:http://www.java2s.com/Code/XML/XML-Schema/fractionDigitsformoneytype.htm – Cris
我假設你的意思是'fractionDigits'作爲'decimal'的限制,而不是'scale' – Vihung
根據貨幣,您需要0到3個小數位。所以限制是無效的。 – eskatos