<key>
alt öğesi olmalıdır bir
<property>
elemanı için bir şema oluşturmak çalışıyorum
ve <val>
biri <shell>
veya <perl>
ve isteğe bağlı <os>
veya <condition>
ve önemli değildir alt öğelerin sırası . Bunun için <xs:all>
kullanarak düşünce, İdealXML Şeması: Neden <xs:all><choice> çocuğa sahip olamaz? ve bu nasıl atlanabilir?
<property>
<key>A</key>
<val>b</val>
</property>
<property>
<key>A</key>
<val>b</val>
<os>Windows</os>
</property>
<property>
<condition>a == 1</condition>
<key>A</key>
<perl>1+1</perl>
<os>unix</os>
</property>
: Burada
geçerli<property>
elementler için bazı örnek vardır
<xs:element name="property">
<xs:complexType>
<xs:all>
<xs:element name="key" type="xs:string" />
<xs:choice>
<xs:element name="val" type="xs:string" />
<xs:element name="perl" type="xs:string" />
<xs:element name="shell" type="xs:string" />
</xs:choice>
<xs:element name="os" type="xs:string" minOccurs="0" />
<xs:element name="condition" type="xs:string" minOccurs="0" />
</xs:all>
</xs:complexType>
</xs:element>
Ama <xs:all>
içerebilir öğrendim sadece <xs:element>
değil <xs:choice>
. Birisi neden olduğunu açıklayabilir mi?
Daha önemlisi, birisi böyle bir <property>
öğesinin doğrulanması için bir yol sağlayabilir mi? <xs:all>
opsiyonel elemanlar olarak, ama şema üç sadece ve sadece bir eleman var olduğunu doğrulamak istiyorum - <val>
, <perl>
ve <shell>
-
Üç elemanları koyabilirsiniz. Bu yapılabilir mi? (Xmllint ile test) seçim için ikame grupları kullanarak ilgili Newt yorum dayanarak
@splintor: Sorunuzu yazarken gerçekten önizleme penceresine baktınız mı? Demek istediğim, bunun yarısı görünmezdi ... – Tomalak
Hem os hem de durumun aynı özellik öğesinde ya da birinin ya da diğerinin içinde meydana gelebileceğini mi, yoksa ne meydana gelebileceğini mi kastediyorsun? –
@Tomalak: Hayır - Önizleme penceresini kaçırdım. Ne istediğimi ifade etmek için düzenlediğiniz için çok teşekkürler. – splintor