Я новичок в XML и сейчас работаю над XSD. Я должен проверить документ XML, основанный на кредитных картах. Я выполнил большую часть задания, но застрял при объявлении элемента, который должен быть положительным числом с плавающей запятой, и в то же время позволил этому элементу иметь обязательный атрибут, с которым должен быть связан трехбуквенный тип валюты.
Вот пример элемента XML, который я должен проверить:
<total curId="USD">4003.46</total>
Вот что у меня есть:
<xsd:element name="total" type="validAmount"/>
<xsd:complexType name="validAmount">
<xsd:simpleContent>
<xsd:extension base="xsd:decimal">
<xsd:attribute name= "curId" type = "currencyAttribute" use="required"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
Для атрибута curId:
<xsd:simpleType name="currencyAttribute">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[A-Z]{3}"/>
</xsd:restriction>
</xsd:simpleType>
Проблема, с которой я столкнулся, заключается в попытке изменить расширение на ограничение, позволяя десятичному числу быть положительным числом (возможно, изменив его тип на строку и используя фасет шаблона, чтобы ограничить его положительным числом). Однако скрипт, который я использую для проверки XML-документа, выдает ошибки, если я это сделаю. Я знаю, что, возможно, упускаю что-то болезненно очевидное, но, как я уже сказал, я новичок в этом, поэтому любая помощь будет принята с благодарностью.