2012-08-16 52 views
2

我想定義架構以下XML構造:有沒有辦法來定義XSD爲元素分隔的列表

<object>System<S/>Design<S/>Part</object> 

其中元素「對象」應填充爲內容的列表枚舉值(系統,設計,部分),其中可能包含空格 - 這就是爲什麼我不能用空格分隔列表。作爲分隔符我使用元素。

但是,所有可以包含簡單內容的xsd元素都不會是父元素和副版本。有什麼辦法可以解決它嗎?

回答

2

答案是否定的 - 除非您轉移到XSD 1.1並使用聲明。

在XSD 1.0中,沒有辦法限制出現在混合內容元素的文本節點中的文本。這是因爲您沒有按照設計使用XML的方式使用XML(您在使用這種結構的XPath/XSLT時也會遇到問題)。

在XSD 1.1,你可以對「對象」的聲明,如

測試=每$ s的文字「()斷言滿足$ S =(‘系統’,‘設計’,「部分「)

2

解決它的最簡單的方法是使用一個稍微不同的XML結構,例如:

<object> 
    <item>System</item> 
    <item>Design</item> 
    <item>Part</item> 
</object> 

這允許個別項目的值包含空格,如需要的話,和可以很容易地使用XSD中的枚舉列表來約束合法值,並展示結構的數據更直接一點:你用一些東西或其他東西(我稱之爲item)的列表來描述對象,因爲我不知道它們實際是什麼 - 在你的XML中爲它們提供更多信息的名稱!) 。列表中的每個東西都是您問題概念模型中的一個獨特對象,如果每個對象都由不同的XML對象表示,那麼生活對您和您的XML工具都會更好(這裏是一個不同的實例元素類型item)。

相關問題