2011-09-08 77 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解析器应该能够使用单个令牌分析输入。因此,通过固定另一个属性的值来限制一个属性的类型是不可能的。值得注意的是,你希望按类型进行限制的属性的值可能在值的属性应该确定受限属性类型之前。