2012-02-22 76 views
1

這個問題很明顯是無知,對不起。我找不到我想要的例子。如果我在XML文件中有單個元素並且想要在其上放置必需的屬性,那麼XSD定義是什麼?我見過的文檔似乎表明,一個類型必須很複雜才能包含其他元素或屬性。但是,當我嘗試使用沒有其他元素的complexType定義時,我無法添加沒有匿名子類型投訴的「類型」。具有屬性的單元素的模式定義

我基本上想要的東西來定義

textY處發短信文本

我的搜索保持向我展示瞭如何將屬性添加到多個嵌套的元素,這似乎非常直截了當複合類型。你可以幫助而不會笑得太多?我知道這一定很簡單。 anAttribute是類型xs:string以及anElement的類型。

感謝, BBB

+0

好的僞代碼應該是'code' Texty發文文本 bittramp 2012-02-22 02:22:33

回答

2

簡單類型不能有屬性,而串是一個簡單的類型。因此,您必須定義一個複雜類型來執行屬性聲明。要定義一個基於簡單的字符串類型的複雜類型,您需要從簡單的字符串類型派生新的複雜類型:

<xs:element name="anElement"> 
    <xs:complexType> 
    <xs:simpleContent> 
     <xs:extension base="xs:string"> 
     <xs:attribute name="anAttribute" type="xs:string"/> 
     </xs:extension> 
    </xs:simpleContent> 
    </xs:complexType> 
    </xs:element> 

使用complexType元素,開始一個新的(匿名)的定義類型。要指示新類型的內容模型僅包含字符數據且不包含元素,請使用simpleContent元素。最後,通過擴展簡單字符串類型來派生新類型。該擴展包括使用標準屬性聲明添加anAttribute屬性。

+0

guido,謝謝!我想這個故事的寓意是,在最底層的元素中沒有屬性,事情就像教程一樣簡單。我很感謝你的回答代碼和解釋。我只是假設這不需要擴展,但這表明我對xsd的無知。如果我在「anElement」中只有一個元素,這看起來很簡單。奇怪的。 – bittramp 2012-02-22 02:19:28

相關問題