是否可以定義可以是keyref或數字文字的類型?就像在任何類型的編程語言中一樣,您可以將數字文字或其他變量的名稱分配給數字變量。我正在制定一個模式來定義繪圖API元素(用於另一種編程語言),並且希望定義一個類型爲color
的類型,該類型可以是十六進制文字(例如,用於鮮紅色的0xFF0000
),也可以是對其他位置定義的顏色的引用。所以,你可以做(在XML文檔):XSD keyref或數字文字
<color key="dialogBorder1">0x222222</color>
<color key="dialogFill1">0xCCCCCC</color>
<!-- later... -->
<windowTheme name="warningWindow">
<border>
<color>0xFF0000</color> <!-- defined literally -->
</border>
<fill>
<solid>
<color>dialogFill1</color> <!-- defined by keyref -->
</solid>
</fill>
</windowTheme>
如果有可能強加給屬性的choice
限制,我可以做類似下面,但我印象中這是不可能的電流( 1.0)版本的XSD規範。
<!-- I wish: -->
<xs:complexType name="colorType" >
<xs:attrchoice>
<xs:attribute name="value" type="HexLiteral" /> <!-- literal -->
<xs:attribute name="ref" type="xs:string" /> <!-- keyref (defined elsewhere) -->
</xs:attrchoice>
</xs:complexType>
這將使要麼 lieral value
或keyref ref
:
<color value="0xFF0000" /> <!-- OK -->
<color ref="dialogBorder1" /> <!-- OK -->
但不能同時:
<color value="0xFF0000" ref="colorXYZ" /> <!-- NOT OK -->
你在哪裏指的是顏色鍵?它看起來像問題要求*十六進制值*或* keyrefs。 – unhammer 2016-10-07 11:52:09
@unhammer,我沒有提供key/keyref示例。你可以找到一個[這裏](http://stackoverflow.com/questions/18981481/xsd-restrict-content-to-be-equal-to-grandparent-if-it-is-present/18982861#18982861)。假設XSD將被設計爲使用不同的屬性,那麼它將是有道理的;不幸的是,這個問題沒有被澄清,並且假定第一個樣本XML是目標狀態就被接受了。 – 2016-10-08 21:18:35