2016-06-07 69 views
1

我想創建一個具有不同組合值的屬性(gravity_layout)(例如:bottom|right) 如何創建此屬性? 我寫了這個:如何組合XSD中屬性的枚舉值?

<xs:attribute name='layout_gravity'> 
    <xs:simpleType> 
     <xs:union memberTypes='xs:string'> 
     <xs:simpleType> 
      <xs:restriction base='xs:NMTOKEN'> 
      <xs:enumeration value='bottom' /> 
      <xs:enumeration value='center' /> 
      <xs:enumeration value='center_horizontal' /> 
      <xs:enumeration value='center_vertical' /> 
      <xs:enumeration value='clip_horizontal' /> 
      <xs:enumeration value='clip_vertical' /> 
      <xs:enumeration value='fill' /> 
      <xs:enumeration value='fill_horizontal' /> 
      <xs:enumeration value='fill_vertical' /> 
      <xs:enumeration value='left' /> 
      <xs:enumeration value='right' /> 
      <xs:enumeration value='top' /> 
      </xs:restriction> 
     </xs:simpleType> 
     </xs:union> 
    </xs:simpleType> 
    </xs:attribute> 

我可以爲它定義一個值,例如剛剛rightbottom,但如果我寫right|bottom,然後我得到的錯誤。

回答

0

您可以

  1. 使用XSD V1.1斷言 (XSD中V1.0不可用),並嘗試一個聰明的XPath找出該 驗證由|分離法律價值的你的微語 符號,

  2. 修復您的XML設計使用單獨的source元素 layout_gravity,而不是干擾多個值到一個單一的 @layout_gratity屬性:

    <layout_gravity> 
        <source>bottom</source> 
        <source>right</source> 
        <!-- ... --> 
    </layout_gravity> 
    

我建議的方法#2因爲

  • XSD(v1.1或v1.0)將能夠自然地表示您的約束,並且
  • 使用XML的程序將能夠利用XML解析器,而不是必須微調分析填充到單個 屬性中的化合物值。
+0

感謝您的回覆和編輯。 – user2912553