SORU
9 Mart 2009, PAZARTESİ


Xml Şema complextype için simpletype veya kısıtlama için öznitelik Ekle

Sorun aşağıdaki gibidir:

Aşağıdaki XML parçacığı var:

<time format="minutes">11:60</time>

Sorun özniteliği ve aynı zamanda kısıtlama hem de ekleyebilirim. Öznitelik biçimi değerler dakika, saat ve saniye alabilir. Zaman restrictionpattern \d{2}:\d{2} vardır

<xs:element name="time" type="timeType"/>
...
<xs:simpleType name="formatType">
<xs:restriction base="xs:string">
    <xs:enumeration value="minutes"/>
    <xs:enumeration value="hours"/>
    <xs:enumeration value="seconds"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="timeType">
    <xs:attribute name="format">
        <xs:simpleType>
            <xs:restriction base="formatType"/>
        </xs:simpleType>
    </xs:attribute>
</xs:complexType>

Eğer timeType karmaşık bir tür yaparsam, bir nitelik, ama kısıtlama yok ekleyebilirim, ve eğer basit bir tip olun, sınırlama ama özniteliği ekleyebilirsiniz. Bu sorunu aşmanın bir yolu var. Bu çok garip bir kısıtlama değil, yoksa değil mi?

CEVAP
9 Mart 2009, PAZARTESİ


Uzantısı oluşturmanız öznitelikleri eklemek için, yüzleri eklemek için kısıtlama ile elde etmek zorundasınız. Bu nedenle bu elemanın alt içerik için iki adımda yapılmalıdır. Özniteliği satır içi tanımlanabilir:

<xsd:simpleType name="timeValueType">
  <xsd:restriction base="xsd:token">
    <xsd:pattern value="\d{2}:\d{2}"/>
  </xsd:restriction>
</xsd:simpleType>

<xsd:complexType name="timeType">
  <xsd:simpleContent>
    <xsd:extension base="timeValueType">
      <xsd:attribute name="format">
        <xsd:simpleType>
          <xsd:restriction base="xsd:token">
            <xsd:enumeration value="seconds"/>
            <xsd:enumeration value="minutes"/>
            <xsd:enumeration value="hours"/>
          </xsd:restriction>
        </xsd:simpleType>
      </xsd:attribute>
    </xsd:extension>
  </xsd:simpleContent>
</xsd:complexType>

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AlaskanGrizzly

    AlaskanGrizz

    30 EKİM 2009
  • Just So

    Just So

    3 HAZİRAN 2007
  • MVLV28

    MVLV28

    17 Mart 2008