Pertanyaan Skema XML Cara Membatasi Atribut dengan Enumerasi


Saya memiliki Tag XML berikut

<price currency="euros">20000.00</price>

Bagaimana cara membatasi atribut mata uang ke salah satu yang berikut:

  • euro
  • pound
  • dolar

DAN harga menjadi dua kali lipat?

Saya hanya mendapatkan kesalahan ketika saya mencoba mengetik pada keduanya, inilah yang saya dapat sejauh ini:

<xs:element name="price">
    <xs:complexType>
        <xs:attribute name="currency" type="xs:string">
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="pounds" />
                    <xs:enumeration value="euros" />
                    <xs:enumeration value="dollars" />
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
</xs:element>

76
2018-01-19 12:02


asal


Jawaban:


Nilai numerik tampaknya hilang dari definisi harga Anda. Coba yang berikut ini:

<xs:simpleType name="curr">
  <xs:restriction base="xs:string">
    <xs:enumeration value="pounds" />
    <xs:enumeration value="euros" />
    <xs:enumeration value="dollars" />
  </xs:restriction>
</xs:simpleType>



<xs:element name="price">
        <xs:complexType>
            <xs:extension base="xs:decimal">
              <xs:attribute name="currency" type="curr"/>
            </xs:extension>
        </xs:complexType>
</xs:element>

105
2018-01-19 12:47



Jawaban baru untuk pertanyaan lama

Tak satu pun dari jawaban yang ada untuk pertanyaan lama ini alamat masalah nyata.


14
2017-10-23 13:07



Anda perlu membuat jenis dan membuat atribut dari jenis itu:

<xs:simpleType name="curr">
  <xs:restriction base="xs:string">
    <xs:enumeration value="pounds" />
    <xs:enumeration value="euros" />
    <xs:enumeration value="dollars" />
  </xs:restriction>
</xs:simpleType>

kemudian:

<xs:complexType>
    <xs:attribute name="currency" type="curr"/>
</xs:complexType>

7
2018-01-19 12:16



<xs:element name="price" type="decimal">
<xs:attribute name="currency" type="xs:string" value="(euros|pounds|dollars)" /> 
</element> 

Ini akan menghilangkan kebutuhan untuk enumerasi sepenuhnya. Anda dapat mengubah tipe menjadi dua kali jika diperlukan.


0
2017-09-30 09:30