2009-06-29 15 views
8

Diyelim ki şöyle bir jenerik complexType kurmak istiyorum:XML Şeması: Bir karmaşıkType için varsayılan değer mi ayarlıyorsunuz?

<xs:complexType name="button"> 
    <xs:sequence> 
     <xs:element name="id" type="xs:string" minOccurs="0" maxOccurs="1"/> 
     <xs:element name="href" type="xs:string" minOccurs="0" maxOccurs="1"/> 
     <xs:element name="label" type="xs:string" minOccurs="0" maxOccurs="1"/> 
    </xs:sequence> 
</xs:complexType> 

Ve şema dosyamda bu gibi karmaşık yerlere karmaşık bir şekilde başvurmak istiyorum:

<xs:element name="someButton" type="button" /> 

Benim için mümkün mü Bazı alt düğme elemanları için bazı alt düğmelerden varsayılan değerler ayarlamak için? (Eğer bir kaç düğme varsayılan bir "Git" etiketine veya "index.html" varsayılan bir href'e sahip olmak istiyorsa)

Temel olarak ... şu anda

<Field Name="State" DataSourceField="State" /> 

ve I 'gibi bir şey var yedeklemeyi olabildiğince basit bir şekilde çıkarmaya çalışmak.

cevap

18

Hayır, yalnızca basit değerler için. Ancak, karmaşık tipinizin tüm basit parçaları için varsayılan değerler vererek bunları istediğiniz şekilde yapmak için kullanabilirsiniz. Ancak, sahip olduğunuz öğeler için olduğundan daha iyi çalışır (çünkü "Öznitelikler eksik olduğunda varsayılan öznitelik değerleri uygulanır ve öğeler boş olduğunda varsayılan öğe değerleri uygulanır" - aşağıya bakın). Nitelikler varsayılan olarak kendilerini isteğe bağlıdır: Bu özellik her durumda biraz daha farklı bir sonucu vardır rağmen nitelikler ve elemanlarının her ikisinin

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="button" type="button"/> 
    <xs:complexType name="button"> 
    <xs:attribute name="id" type="xs:string"/> 
    <xs:attribute name="href" type="xs:string" default="index.html"/> 
    <xs:attribute name="label" type="xs:string" default="Go"/> 
    </xs:complexType> 
</xs:schema> 

<button id="1"/> 

Varsayılan değerler, varsayılan özelliğini kullanılarak bildirilir. Bir öznitelik varsayılan bir değerle bildirildiğinde, özniteliğin değeri, örnek belgedeki öznitelik değeri olarak görünen değerdir; öznitelik örnek belgesinde görünmüyorsa, şema işlemcisi özniteliği varsayılan özniteliğe eşit bir değerle sağlar. Özniteliklerin varsayılan değerleri, yalnızca öznitelikleri kendileri isteğe bağlı olduğunda anlamlıdır ve bu nedenle, hem varsayılan bir değer hem de kullanım için isteğe bağlı bir değer dışında bir şey belirtmek bir hatadır.

Şema işlemci varsayılan öğeleri biraz farklı şekilde ele alır. Bir öğe varsayılan değerle bildirildiğinde, öğenin değeri, örnek belgedeki öğenin içeriği olarak görünen değerin ne olursa olsun; öğe herhangi bir içerik olmadan görünürse, şema işlemci, öğeye varsayılan öznitelik değerine eşit bir değer sağlar. Bununla birlikte, öğe örnek belgesinde görünmüyorsa, şema işlemcisi tüm öğeyi sağlamamaktadır. Özetle, öğe ve öznitelik varsayılanları arasındaki farklar şu şekilde belirtilebilir: Öznitelikler eksik olduğunda varsayılan öznitelik değerleri uygulanır ve öğeler boş olduğunda varsayılan öğe değerleri uygulanır.

http://www.w3.org/TR/xmlschema-0/#OccurrenceConstraints

[vurgulanıyor]
İlgili konular