2010-08-31 47 views
2

我正在嘗試製作XML模式,並沒有太多的成功。有一個構造我不明白...這是我迄今爲止的模式,其次是XML文件,我試圖讓它..任何建議?不明白這段XML

<?xml version="1.0" encoding="utf-16"?> 
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 



    <xsd:element name="CorbelFile"> 
    <xsd:complexType> 
      <xsd:sequence>  
       <xsd:group ref="Project" minOccurs="0" maxOccurs="unbounded"/> 
      </xsd:sequence> 
    </xsd:complexType> 
    </xsd:element> 

    <xsd:group name="Project"> 
      <xsd:sequence>   
        <xsd:element name="ADProductID" 
           type="xsd:string" /> 
        <xsd:element name="ADProductID" 
           type="xsd:string" /> 
        <xsd:element name="ADProductName" 
           type="xsd:string" /> 
        <xsd:element name="ADProductVersion" 
           type="xsd:string" /> 
        <xsd:element name="ADProjectId" 
           type="xsd:string" /> 
        <xsd:element name="ADProjectName" 
           type="xsd:string" /> 
        <xsd:element name="ADFileLoc" 
           type="xsd:string" /> 
        <xsd:group ref="Answers" 
           minOccurs="0" 
           maxOccurs="unbounded"/> 
      </xsd:sequence> 
    </xsd:group> 

    <xsd:group name="Answers"> 
      <xsd:sequence> 
       <xsd:element name="var"/> 
      </xsd:sequence> 
    </xsd:group> 


</xsd:schema> 

XML

<?xml version="1.0" encoding="utf-16" standalone="yes"?> 
<CorbelFile> 
    <Project> 
    <ADProductId>28359</ADProductId> 
    <ADProductName>IDP 403(b)</ADProductName> 
    <ADProductVersion>7.0</ADProductVersion> 
    <ADProjectId>00010001</ADProjectId> 
    <ADProjectName>Independence Dental Center PS</ADProjectName> 
    <ADFileLoc>C:\Program Files\Relius\Docs\dp_data\1\0\00010001.ck2</ADFileLoc> 
    <answers> 
     <Var Ld="PKGA" /> 
     <Var Ld="BKTHead2" /> 
     <Var Ld="SingleSpace" /> 
     <Var Ld="MarginRagged" /> 
     <Var Ld="SPDTimes" /> 
     <Var Ld="BKTTimes" /> 
     <Var Ld="PlanNameB" /> 
     <Var Ld="ERPYEnds" /> 
     <Var Ld="InitialEffDate" /> 
     <Var Ld="2000SafHarEnhancMatch" /> 
     <Var Ld="StateCollege" /> 
     <Var Ld="CharityCorp" /> 
     <Var Ld="ExceptEEPartTime">Independence</Var> 
     <Var Ld="ExceptEEStudent">Missouri</Var> 
     <Var Ld="ExceptEENonResAliens">11500 East 23rd Street</Var> 
     <Var Ld="ExceptEECollBargAgree">64052</Var> 
     <Var Ld="EEExclNA">(816) 254-7200</Var> 
     <Var Ld="NoExclElig">43-1118440</Var> 
     <Var Ld="ACP2000CurrentYR">001</Var> 
     <Var Ld="ExceptEEHR" /> 
     <Var Ld="1YRAndHalfServReq">Profit Sharing Plan and Trust</Var> 
     <Var Ld="YRServReq">Independence Dental Center, Inc.</Var> 
     <Var Ld="Age21">INDEPENDENCE DENTAL CENTER, INC.</Var> 
     <Var Ld="AgeOther">PROFIT SHARING PLAN AND TRUST</Var> 
     <Var Ld="1stDayMonth">September 30</Var> 
     <Var Ld="1stDayPYNextFollowing">October 1</Var> 
     <Var Ld="CompExclOT">September 30</Var> 
     <Var Ld="CompExcl414s">October 1</Var> 
     <Var Ld="CompSalRed">December 12, 1963</Var> 
     <Var Ld="NASRA" /> 
     <Var Ld="ACPPreYR" /> 
     <Var Ld="QNECPY" /> 
     <Var Ld="QNEC500HRs" /> 
     <Var Ld="QNECYOS" /> 
     <Var Ld="ShareDiscrYOSEndPY" /> 
     <Var Ld="ForfeitRedERContr" /> 
     <Var Ld="7YRGrade" /> 
     <Var Ld="MinDistCYAftr2000">Brad Babcock</Var> 
     <Var Ld="MinDistCYAftr2001">Lauren Carr</Var> 
     <Var Ld="NServPriorEffDate" /> 
     <Var Ld="1999SafeHarbContr">John Smith</Var> 
     <Var Ld="NRD1stDayMonth" /> 
     <Var Ld="NRAPartAnnivBDay1" /> 
     <Var Ld="NERD" /> 
     <Var Ld="NDistrJSA" /> 
     <Var Ld="Multi2ndERCityStateZip" /> 
     <Var Ld="2000SafHarNonElectOthrPln" /> 
     <Var Ld="TermDistrImmed" /> 
     <Var Ld="YTransRoll403b" /> 
     <Var Ld="LoansNA" /> 
     <Var Ld="Loans10000DeMin" /> 
     <Var Ld="LoansSRALimit" /> 
     <Var Ld="YDirInv" /> 
     <Var Ld="DirInvRollTrans" /> 
     <Var Ld="HrdshipSafeHarb401k" /> 
     <Var Ld="EmployerPhone" /> 
     <Var Ld="NMulti2ndER" /> 
     <Var Ld="Multi2ndERName" /> 
     <Var Ld="YMulti3rdER" /> 
     <Var Ld="Multi3rdERStreet" /> 
     <Var Ld="Multi4thEIN" /> 
     <Var Ld="Multi5thERStreet" /> 
     <Var Ld="SumPlanOnly" /> 
     <Var Ld="YPSBKT" /> 
     <Var Ld="YSBJPA" /> 
     <Var Ld="NAPriorCurrentYRTestMethP" /> 
     <Var Ld="NHCPContrPost973Perc" /> 
     <Var Ld="NComplyGATTUSERRASBJPATRA" /> 
     <Var Ld="NSafeHarbMatch" /> 
     <Var Ld="DeferBenOption" /> 
     <Var Ld="PayOldAnnuitDate">59 1/2</Var> 
     <Var Ld="NAHrdshipSafeHarb401k">60th</Var> 
     <Var Ld="VServ3" /> 
     <Var Ld="VServ6" /> 
     <Var Ld="VPerc1" /> 
     <Var Ld="VPerc6" /> 
     <Var Ld="ACPCurrentPre97" /> 
     <Var Ld="ACPCurrentPre98" /> 
     <Var Ld="YDiscrMC4PercCompPost99PY" /> 
     <Var Ld="EG_Hrdshp_Suspensn_Red_N" /> 
     <Var Ld="EG_Suspensn_2001_NA" /> 
    </answers> 
    </Project> 
    <Project> 
    <ADProductId>83</ADProductId> 
    <ADProductName>IDP Money Purchase/Target</ADProductName> 
    <ADProductVersion>2.0</ADProductVersion> 
    <ADProjectId>00010002</ADProjectId> 
    <ADProjectName>Independence Dental Center MP</ADProjectName> 
    <ADFileLoc>C:\Program Files\Relius\Docs\dp_data\2\0\00010002.ck2</ADFileLoc> 
    <answers /> 
    </Project> 
<Project> 
    <ADProductId>24581</ADProductId> 
    <ADProductName>IDP Revised SA</ADProductName> 
    <ADProductVersion>10.0</ADProductVersion> 
    <ADProjectId>000102C9</ADProjectId> 
    <ADProjectName>2010 - Hanover - Trustee</ADProjectName> 
    <ADFileLoc>C:\Program Files\Relius\Docs\dp_data\9\C\000102C9.ck2</ADFileLoc> 
    <answers> 
     <Var Ld="NShortAmendment" /> 
     <Var Ld="PASMM" /> 
     <Var Ld="PACorpResol" /> 
     <Var Ld="PTimes" /> 
     <Var Ld="SPDTimes" /> 
     <Var Ld="CorbelClientNameA">AMERICAN FIDUCIARY CORPORATION</Var> 
     <Var Ld="SA401kProfitSharing" /> 
     <Var Ld="EmployerNameA">Hanover Obstetrics &amp; Gynecology, Inc.</Var> 
     <Var Ld="Corp" /> 
     <Var Ld="EmployerStreet">135 Webster Street</Var> 
     <Var Ld="EmployerCity">Hanover</Var> 
     <Var Ld="EmployerState">Massachusetts</Var> 
     <Var Ld="EmployerZip">02339</Var> 
     <Var Ld="EmployerPhone">(781) 878-7020</Var> 
     <Var Ld="EIN">04-2477545</Var> 
     <Var Ld="PlanNumOther">001</Var> 
     <Var Ld="PlanNameA">Hanover Obstetrics &amp; Gynecology, Inc.</Var> 
     <Var Ld="PlanNameB">401(k) Profit Sharing Plan</Var> 
     <Var Ld="AmendmentOne" /> 
     <Var Ld="AmendDate">August 1, 2010</Var> 
     <Var Ld="NWitnessLine" /> 
     <Var Ld="PlanAdminERAddress" /> 
     <Var Ld="IndivTrustee" /> 
     <Var Ld="DesignatedAmendments" /> 
     <Var Ld="401KfeaturesNoChange" /> 
     <Var Ld="DiscrContrNoChange" /> 
     <Var Ld="DistributionsAmendNo" /> 
     <Var Ld="MiscAmendYes" /> 
     <Var Ld="NoChangeCompDefinition" /> 
     <Var Ld="NLoans" /> 
     <Var Ld="HCENoChange" /> 
     <Var Ld="NElimOfFamAggreg" /> 
     <Var Ld="AddTransRollNo" /> 
     <Var Ld="PYFYNoChange" /> 
     <Var Ld="ChangeTrustNameYes" /> 
     <Var Ld="ChangedTrustee1Name">Albert Marcus, M.D.</Var> 
     <Var Ld="ChangedTrustee1EffDate">August 1, 2010</Var> 
     <Var Ld="ChangedTrustee1Removed" /> 
     <Var Ld="MergFreezeTermNA" /> 
     <Var Ld="NERAdopt" /> 
     <Var Ld="RelDate" /> 
    </answers> 
    </Project> 
+2

您遇到的問題是什麼? – 2010-08-31 23:28:14

+0

<瓦爾LD = 「CorbelClientNameA」> AMERICAN受託CORPORATION <瓦爾LD = 「SA401kProfitSharing」/> <瓦爾LD = 「EmployerNameA」>漢諾威婦產科&婦科學,公司 <瓦爾LD = 「公司」 /> <瓦爾LD = 「EmployerStreet」> 135韋伯斯特街 <瓦爾LD = 「EmployerCity」>漢諾威 <瓦爾LD = 「EmployerState」>馬薩諸塞 <瓦爾LD = 「EmployerZip」> 02339 user436449 2010-08-31 23:33:44

+0

有重複 lines,whe重新「答案1」可以是一個隨機的「答案」和BlahBlahBlah可以是文字..我該如何處理這些? – user436449 2010-08-31 23:46:41

回答

2

在Visual Studio中打開XML文件,去爲 「XML」 菜單,選擇 「創建模式」。

+0

除非,當然,他不是Windows程序員,也沒有Visual Studio。 ;) – Dave 2010-09-01 01:16:52

+0

hm ...我沒有想到:)但無論哪種方式都有大量提供此功能的xml工具。 – veljkoz 2010-09-01 09:41:39

1

代替使用一組,界定 「VAR」 作爲元素具有 「LD」 屬性:

<complexType name="Var"> 
    <annotation> 
     <documentation> 
      Description of what a Var is 
     </documentation> 
    </annotation> 
    <attribute name="Ld" type="string"> 
     <annotation> 
      <documentation> 
       Description of what this attribute means 
      </documentation> 
     </annotation> 
    </attribute> 
</complexType> 

的限定答案的列表:

<complexType name="Answers"> 
    <annotation> 
     <documentation> 
      A list of Var elements 
     </documentation> 
    </annotation> 
    <sequence> 
     <element name="Var" type="Var" minOccurs="0" maxOccurs="unbounded"> 
      <annotation> 
       <documentation> 
        The list of Var elements 
       </documentation> 
      </annotation> 
     </element> 
    </sequence> 
</complexType> 

然後代替這樣的:

<xsd:group ref="Answers" 
          minOccurs="0" 
          maxOccurs="unbounded"/> 

你會使用這樣的:

<element name="answers" type="Answers"/> 

此外,一個很好的經驗法則是使默認命名空間與您正在編寫的文件的類型相匹配。所以,如果你正在寫一個方案,把這個根元素,而不是和你將不必到處寫「XSD」前綴:

xmlns="http://www.w3.org/2001/XMLSchema" 

而且,這也是創建目標命名空間爲一個好主意,你的架構,以便您的元素有一個相關的命名空間:

targetNamespace="http://my.example.com/schema" 
xmlns:mec="http://my.example.com/schema" 

這將意味着你的元素將被稱爲TYPE =「MEC:項目」,而不僅僅是「項目」,因此使用此模式時,防止將來出現問題與另一個結合在一起。

+0

您的答案似乎不允許''裏面的文字,所以它只是部分解決了問題。 – jasso 2010-09-02 23:44:40

+0

jasso,是的,這是真的,我忘了在中添加type =「string」的元素,但你肯定會得到它的整體jist。 – 2010-09-23 18:49:18

1

如何定義一個元素僅包含文本,而且一個屬性

一般類型只有文本的內容元素的必須是xs:simpleType。在這種情況下,這會導致問題,因爲可以包含屬性(或其他元素)的元素的類型定義必須是xs:complexType。解決方案是使用xs:simpleContent來允許純文本和xs:extension擴展此類型與所需的屬性。

創建複雜的僅文本的元素

xs:simpleContent用於導出來自其他內置或先前定義的類型的類型。它需要xs:extensionxs:restriction子元素的屬性base定義您將擴展或限制的基本類型(簡單)。在這種情況下,基本類型可以是xs:stringxs:extensionxs:restriction包含所需的新功能。

<xs:element name="var"> 
    <xs:complexType> 
     <xs:simpleContent> 
      <xs:extension base="xs:string"> 
       <xs:attribute name="Ld" type="xs:string" /> 
      </xs:extension> 
     </xs:simpleContent> 
    </xs:complexType> 
</xs:element> 

幾個屬性定義可以在裏面添加xs:extension - 在這種情況下,我們只需要一個。 xs:simpleContent不能包含任何元素定義,只能包含新屬性。如果基本類型與任何內置模式數據類型不同,例如,如果文本具有一些長度限制,則必須將基本類型定義爲全局簡單類型定義,並在base屬性中使用其名稱。

允許內部可以包含其他元素的元素文本是簡單的:定義元素內容時只使用<xs:complexType mixed="true">