有沒有辦法阻止在你的xml中使用<myElement/>
形式的空元素?換句話說,你可以在你的xsd中指定<myElement/>
是無效的嗎?限制xsd中的空元素
使用nillable="false"
不起作用,也不 - 這兩種都允許 <myElement/>
。
有沒有辦法阻止在你的xml中使用<myElement/>
形式的空元素?換句話說,你可以在你的xsd中指定<myElement/>
是無效的嗎?限制xsd中的空元素
使用nillable="false"
不起作用,也不 - 這兩種都允許 <myElement/>
。
如果您試圖防止元素出現,可以用minOccurs="0"
來標記它。我猜這不是你想要的,所以如果你試圖確定總是有屬性附加到複雜元素上,那麼你必須至少在其中一個屬性上指定usage="required"
或使用屬性組。如果myElement
是一種簡單類型,並且您想確保它有一個值,那麼您總是可以限制它的類型。如果你想有一個非零的字符串,那麼你可以做:
<xsd:element name="myElement">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="1" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
如果你的架構驗證是不是能夠顯示錯誤,當數據類型爲DATE的元素爲null,那麼你可以使用一個模式[如果輸入所需格式不是你的負擔];
我增加了一個例子,執行類似的代碼將在你的工具工作,
這是樣本XML:
<root>
<date1>12/31/1999</date1> <!-- The Date format defined here is MM/DD/YYYY, null value or Date with any other format aren't accepted-->
</root>
這是相應的XSD:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:include schemaLocation="Date_Def.xsd"/>
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="date1" type="DATE_TYPE" minOccurs="0" maxOccurs="1" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
觀察到我包含另外一個模式文件,其中包含DATE_TYPE類型的定義,
以下是Date_Def.xsd文件:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="DATE_TYPE">
<xs:restriction base="xs:string">
<xs:pattern value="([0][1-9]|[1][0-2])/([0][1-9]|[1-2][0-9]|[3][0-1])/[1-2][0-9][0-9][0-9]"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
這裏定義的日期格式是MM/DD/YYYY,空值或日期與任何其他格式不被接受, 如果你想也接受空標籤,在這個替換模式..
<xs:pattern value="|(([0][1-9]|[1][0-2])/([0][1-9]|[1-2][0-9]|[3][0-1])/[1-2][0-9][0-9][0-9])"/>
其驗證接受,無論是空標記或模式MM/DD/YYYY的日期值。
如果您需要模式設計方面的更多幫助,請隨時在SO中發佈帖子,希望它有所幫助。 :-)
[注::該類型清晰度也 在同一個文件,它需要在 XML和XSD文件中提到 額外的名稱空間中定義,定義 外部文件無害和 可重複使用]
感謝您的詳細回覆。我設法找到正確進行驗證的工具。這種模式的東西是有用的,壽。 – 2010-03-25 08:44:51
@Chris,np [15個字符] – 2010-03-25 09:14:44
這看起來很有前途。如果它不是一個簡單的類型,例如「xsd:date」 – 2010-03-08 08:16:23
'xsd:date'是一個簡單的類型。但是如果它不是一個簡單的類型,你可以使用''。儘管如此,我通常使用'xsd:element'的'type'屬性,即:' '' –
2010-03-08 08:27:41
所以你說'minLength'是一個非字符串簡單類型的有效屬性? – 2010-03-08 08:42:57