Какой тип данных XML следует использовать для валюты / денег?
прочитав несколько вопросов о том, какой тип данных Java использовать для валюты / денег, я решил использовать метод int/long, где вы храните значение валюты/денег как самую низкую единицу (например, центы).
применяется ли это также к хранению данных (в XML)?
первое, что приходит мне на ум, это "нет", потому что он будет просто" разобран " на XML десятичный формат при хранении данных и "разборе" снова, когда я читать данные.
любые предложения приветствуются, так как я в этом новичок.
3 ответов
я использовал этот
<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: будет ли читатель правильно угадать, что это значит, не обращаясь к документации? Не все разделяют это мнение о требованиях, и иногда это непрактично. Но пропуск запятой-это просто просят данные, чтобы быть где-то misprocessed вдоль линии.
я использовал этот
<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.