2012-02-15 82 views
2

道歉,如果這是一個愚蠢的問題,我到現在還沒有真正用xml做過任何事情。xsd type =「anySimpleType」屬性

我想能夠將一些xml反序列化成類型爲object的屬性的類。此物業可能是int,​​或string。在xml中,我希望將此屬性定義爲屬性。我本來期望我的XSD看起來是這樣的:

<xsd:complexType name="MyClass"> 
    <xsd:attribute name="MyProperty" type="xsd:anySimpleType" /> 
</xsd:complexType> 

但是,Visual Studio的智能感知未列出選項,「XSD:anySimpleType」。這是intellisense的問題,還是我在做一些固有的錯誤?

+0

http://publib.boulder.ibm.com/infocenter/dmndhelp/v6r2mx/index.jsp?topic=/com.ibm.websphere.wps.620.doc/doc/cbo_usinganysimpl.html – 2012-02-15 05:25:40

回答

4

儘管擁有xs:anySimpleType類型的屬性是合法的,但我會避免它,並使用xs:string來代替。這是因爲該規範留下了許多關於這種屬性應該如何表現的問題。使用枚舉或正則表達式來限制它是不可能的,定義非常差,如果你在身份約束中使用它,等等。驗證和xs:string完全一樣,但其他方面的行爲是相當奇怪,可能會因實現而有所不同。

有人可能會爭辯說,如果您希望稍後定義諸如string,int和URI等子類型,則xs:anySimpleType有意義。但這是我能想到的唯一情況。

3

xsd:anySimpleType(和xsd:anyType)是特殊的所謂的ur-type定義(前者是簡單的ur類型);順便說一句,當涉及到XSD數據類型時,我總是指出this diagram

只是這個特殊的,我相信是這些類型不顯示在Intellisense中的原因的一部分。我想另一個原因是它是默認分配的類型;換句話說,對於你的屬性,如果你沒有設置類型,它將是anySimpleType無論如何。但是,我也承認這種解釋不適用於其他編輯器 - Eclipse就是其中之一;你可以在Intellisense中獲得所有這些類型,不會有任何問題...

+0

它仍然是有效的XSD? – ajbeaven 2012-02-15 19:27:12

+0

是的,這是完全有效的。 – 2012-02-15 19:50:57