2011-09-08 76 views
1

我正在尋找描述一類實例的XSD。我將用一個實例來解釋我想要完成的事情。我想有一個XSD類型(姑且稱之爲FormBaseType)描述這種情況:XSD繼承和xhtml表格

<form method="post" action="someaction" name="acme"> 
    <input name="EXACTLY FOO" value="EXACT ENUMERATION" type="CONST STRING" /> 
    <input name="SOME RANDOM STRING" value="SOME RANDOM STRING" type="CONST STRING" /> 
    <input name="SOME RANDOM STRING" value="SOME RANDOM STRING" type="CONST STRING" /> 
    ... (input element repeats up to 30 times) ... 
</form> 

比我想的一個OneKindOfMyFormType繼承和限制FormBaseType,使其只這樣的情況下匹配:

<form method="post" action="someaction" name="acme"> 
    <input name="EXACTLY FOO" value="EXACT ENUMERATION" type="CONST STRING" /> 
    <input name="EXACTLY BAR" value="SOME RANDOM STRING RESTRICTION" type="CONST STRING" /> 
    <input name="EXACTLY BAZ" value="SOME OTHER RANDOM STRING RESTRICTION" type="CONST STRING" /> 
    ... (input element repeats up to 30 times) ... 
</form> 

當我嘗試定義以不同方式限制的多個輸入元素時,我遇到了問題。我能有這樣的相同類型的多個輸入元素:

<xs:complexType name="FormBaseType"> 
    <xs:sequence> 
     <xs:element name="input" type="ns0:InputType" minOccurs="1" maxOccurs="33"/> 
    </xs:sequence> 
</xs:complexType> 

但當我嘗試這個辦法:

<xs:complexType name="RequestType"> 
    <xs:complexContent> 
     <xs:restriction base="RequestTypeBase"> 
      <xs:sequence> 
       <xs:element name="input" type ="ns0:AlphaNumericInputType" minOccurs="1" maxOccurs="1" /> 
       <xs:element name="input" type ="ns0:NumericInputType" minOccurs="1" maxOccurs="1" /> 
      </xs:sequence> 
     </xs:restriction> 
    </xs:complexContent> 
</xs:complexType> 

存在一個問題,即同名的元素(「輸入」),並在相同的範圍必須具有相同的類型。 (AlphaNumericInputType和NumericInputType是InputType的限制,但除了可能闡明我的意圖之外,它對這個例子無關緊要)。

長話短說我想有多種形式,其中一些輸入的元素是在整個各種形式(基本)相同的XSD描述,並且還派生XSD類型輸入元素具有類型的基本屬性加上確切的名稱屬性值並且對於該確切名稱a 屬性類型限制。

這可能嗎?怎麼樣?

TIA

回答

0

據我發現這個不能做。如果您有專業知識,請確認。

是XML屬性。 XML規範明確指出屬性不是有序的。 XML解析器應該能夠使用單個令牌分析輸入。因此,通過固定另一個屬性的值來限制一個屬性的類型是不可能的。值得注意的是,你希望按類型進行限制的屬性的值可能在值的屬性應該確定受限屬性類型之前。