2010-08-05 7 views
15

Pisząc schematu XML, ja próbuje zrobić coś takiegoUżycie xs: extension & xs: restriction together?

<xs:complexType name="ValueWithUnits"> 
    <xs:simpleContent> 
     <xs:extension base="xs:double"> 
      <xs:attribute name="uom" fixed="second"/> 
      <xs:minInclusive="0"/> 
      <xs:maxInclusive="10"/> 
     </xs:extension> 
    </xs:simpleContent> 
</xs:complexType> 

Niestety, xs: atrybut jest dozwolony na xs: extension podczas xs: minInclusive & xs: maxInclusive są akceptowane na xs: ograniczenia, ale nie razem.

Jaki jest najlepszy sposób na strukturę? Czy muszę zdefiniować rozszerzenie z odpowiednimi jednostkami &, a następnie ograniczyć je za pomocą moich minimalnych wartości maksymalnych &?

Odpowiedz

15

Trzeba zdefiniować ograniczenie podwójnego separatley

<?xml version="1.0" encoding="utf-8" ?> 
<!--Created with Liquid XML Studio Developer Edition 8.1.4.2482 (http://www.liquid-technologies.com)--> 
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:simpleType name="RestrictedDouble"> 
     <xs:restriction base="xs:double"> 
      <xs:minInclusive value="0" /> 
      <xs:maxInclusive value="10" /> 
     </xs:restriction> 
    </xs:simpleType> 
    <xs:complexType name="ValueWithUnits"> 
     <xs:simpleContent> 
      <xs:extension base="RestrictedDouble"> 
       <xs:attribute name="uom" fixed="second" /> 
      </xs:extension> 
     </xs:simpleContent> 
    </xs:complexType> 
</xs:schema> 
+0

Ok, zastanawiałem się, czy to jest to, co muszę zrobić i mając nadzieję, że nie. Postanowiłem zmienić kolejność, aby mieć DoubleSecondsType, a konkretne implementacje ograniczają to. – oconnor0

+0

Próbowałem tego, dając mi błąd w mówiąc "complexType" już istnieje w modelu zawartości. Jak to naprawić? – Srini