2013-07-17 44 views
0

我有一個有點簡單的XML文件:我能有XML模式定義的數據類型,選項

<?xml version="1.0" encoding="utf-8" standalone="no" ?> 
<SearchSettings> 
    <ChangeHistory> 
     <Changed By="Joe Schmoe" On="2013-07-17">Initial creation of this file.</Changed> 
    </ChangeHistory> 

    <Logicals> 
     <Logical Name="Exact Match" ShortName="EM" Operator="== {0}" /> 
     <Logical Name="Contains"  ShortName="Co" Operator="%{0}%" /> 
     <Logical Name="Starts With" ShortName="SW" Operator="{0}%" /> 
     <Logical Name="Ends With" ShortName="EW" Operator="%{0}" /> 
     <Logical Name="Between"  ShortName="Be" Operator="gt= {0} AND lt= {0}" /> 
     <Logical Name="Less Than" ShortName="LT" Operator="lt {0}" /> 
     <Logical Name="Greater Than" ShortName="GT" Operator="gt {0}" /> 
    </Logicals> 

    <LogicalGroupings> 
     <Group DisplayType="Text" Allowed="EM|Co|SW|EW" /> 
     <Group DisplayType="Decimal" Allowed="EM|Be|LT|GT" /> 
     <Group DisplayType="Integer" Allowed="EM|Be|LT|GT" /> 
     <Group DisplayType="Date" Allowed="EM|Be|LT|GT" /> 
     <Group DisplayType="List" Allowed="EM" /> 
    </LogicalGroupings> 

    <SearchFields> 
     <SearchField DisplayName="Complaint Type" DisplayType="List" ColumnName="Complaint.ComplaintTypeID" GetMethod="GetComplaintTypes" ToolTipTitle="" ToolTipContent="" ToolTipKey="" Transform="" /> 
     <SearchField DisplayName="Complaint Number" DisplayType="Text" ColumnName="Complaint.Number" /> 
     <SearchField DisplayName="Tax Year"   DisplayType="Integer" ColumnName="Complaint.TaxYear" /> 
     <SearchField DisplayName="Category"   DisplayType="List" ColumnName="Complaint.Category"  GetMethod="GetExistingCategories" /> 
     <SearchField DisplayName="Building Value" DisplayType="Integer" ColumnName="Complaint.BuildingValue" /> 
     <SearchField DisplayName="Land Value"  DisplayType="Integer" ColumnName="Complaint.LandValue" /> 
     <SearchField DisplayName="Owner Opinion" DisplayType="Integer" ColumnName="Complaint.OwnerOpinion" /> 
     <SearchField DisplayName="Notes"   DisplayType="Text" ColumnName="Complaint.Notes"   AllowedLogicals="Co" /> 
    </SearchFields> 
</SearchSettings> 

而且我希望SearchFields.SearchField.DisplayType只允許從LogicalGroupings列表中的顯示類型值。

這可能嗎?我一直試圖添加一個外鍵唯一的關係,但是我的模式intellisence停止工作,所以我認爲我錯了。

編輯

這裏是我現有的(工作,但沒有我想要的還).xsd文件。我刪除了我不關心節省空間的部分。

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema id="SearchSettings" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> 
    <xs:element name="SearchSettings" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"> 
    <xs:complexType> 
     <xs:choice minOccurs="0" maxOccurs="unbounded"> 
     <xs:element name="LogicalGroupings"> 
      <xs:complexType> 
      <xs:sequence> 
       <xs:element name="Group" minOccurs="0" maxOccurs="unbounded"> 
       <xs:complexType> 
        <xs:attribute name="DisplayType" type="xs:string" /> 
        <xs:attribute name="Allowed" type="xs:string" /> 
       </xs:complexType> 
       </xs:element> 
      </xs:sequence> 
      </xs:complexType> 
     </xs:element> 
     <xs:element name="SearchFields"> 
      <xs:complexType> 
      <xs:sequence> 
       <xs:element name="SearchField" minOccurs="0" maxOccurs="unbounded"> 
       <xs:complexType> 
        <xs:attribute name="DisplayName" type="xs:string" /> 
        <xs:attribute name="DisplayType" type="xs:string" /> 
        <xs:attribute name="ColumnName" type="xs:string" /> 
        <xs:attribute name="GetMethod" type="xs:string" /> 
        <xs:attribute name="ToolTipTitle" type="xs:string" /> 
        <xs:attribute name="ToolTipContent" type="xs:string" /> 
        <xs:attribute name="ToolTipKey" type="xs:string" /> 
        <xs:attribute name="Transform" type="xs:string" /> 
        <xs:attribute name="AllowedLogicals" type="xs:string" /> 
       </xs:complexType> 
       </xs:element> 
      </xs:sequence> 
      </xs:complexType> 
     </xs:element> 
     </xs:choice> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

回答

0

在SearchSettings的水平,定義一個xs:keyref與選擇= 「SearchFields/Searchfield」,字段:與選擇= 「LogicalGrouping /組」,字段= 「@顯示類型」,以及相應的XS鍵= 「@顯示類型」。

(如果你嘗試過的東西,這是最好的告訴我們你嘗試和它是如何失敗的,所以我們可以解釋你在哪裏錯了...)

+0

@邁克爾你好,我添加了以下行: 正好在SearchSettings元素行下面,現在是第4行。然後在SearchField中向下添加DisplayType,如下所示: 但是頂部的xs:key沒有通過驗證。選擇和字段似乎不是有效的屬性。就這樣說,SearchField中的選擇屬性失敗。我會仔細研究這些,看看我缺少什麼。 – Grandizer

+0

需要確切地看到你做了什麼以及它究竟是如何失敗的。 –