2013-08-06 95 views
0

例如,我有表格數據,稱爲Person。列標題是email,fname,lnamessn。我想出了下面的XML結構:將元信息添加到XML文檔的最佳方法

<object type="Person"> 
    <record> 
    <property name="email" val="mrnt..."/> 
    <property name="fname" val="Martin"/> 
    <property name="lname" val="Dimitrov"/> 
    <property name="ssn" val="123"/> 
    </record> 
    <record> 
    <property name="email" val="dani..."/> 
    <property name="fname" val="Dany"/> 
    <property name="lname" val="Jones"/> 
    <property name="ssn" val="987"/> 
    </record> 
</object> 

到目前爲止好,但也有一些規則,我必須遵循:

  1. 表可以不帶行,我仍然必須提供其結構;
  2. A柱可能是完全空的,但我還是要包含在表格
  3. emailssn是唯一列的meta描述它的名字,我要表明,不知何故。

那麼包含表的元描述的最好方法是什麼?這個可以嗎?對我來說似乎有點奇怪。

<object type="Person"> 
    <model> 
    <property name="email" unique="yes"/> 
    <property name="fname"/> 
    <property name="lname"/> 
    <property name="ssn" unique="yes"/> 
    </model> 
    <record> 
    <property name="email" val="mrnt..."/> 
    <property name="fname" val="Martin"/> 
    <property name="lname" val="Dimitrov"/> 
    <property name="ssn" val="123"/> 
    </record> 
    <record> 
    <property name="email" val="dani..."/> 
    <property name="fname" val="Dany"/> 
    <property name="lname" val="Jones"/> 
    <property name="ssn" val="987"/> 
    </record> 
</object> 

請注意,列標題可以有任何值。它們可能不僅僅是四個。

+0

如果表與其他表有關係,那麼簡單的鍵/值將不起作用,除非表完全與其他表無關;這隻適用於一張桌子,'人'? – raffian

+0

它完全平坦,我只想知道如何描述它的結構。 –

回答

2

我會提出這樣說:

<root> 
    <person> 
    <email/> 
    <fname/> 
    <lname/> 
    <ssn/> 
    </person> 
    <person> 
    <email>mrnt...</email> 
    <fname>Martin</fname> 
    <lname>Dimitrov</lname> 
    <ssn>123</ssn> 
    </person> 
    <person> 
    <email>dani...</email> 
    <fname>Dany</fname> 
    <lname>Jones</lname> 
    <ssn>987</ssn> 
    </person> 
</root> 

和XSD架構定義的電子郵件和SSD的maxOccurs屬性爲1

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="root"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element name="person"> 
      <xs:complexType> 
      <xs:sequence> 
       <xs:element type="xs:string" name="email" maxOccurs="1"/> 
       <xs:element type="xs:string" name="fname"/> 
       <xs:element type="xs:string" name="lname"/> 
       <xs:element type="xs:string" name="ssn" maxOccurs="1"/> 
      </xs:sequence> 
      </xs:complexType> 
     </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 
+0

XSD示例+1 – raffian

+0

感謝您的回覆。你認爲我應該添加「unique」屬性嗎? –

+0

'唯一'屬性由xsd中的'maxOccurs =「1」'處理。你可以在這裏看到(http://www.w3schools.com/schema/schema_complex_indicators.asp)關於這方面的文檔。 – CCH

1

使用XSD關聯來描述文檔結構和要素制約;不要將元數據嵌入到文檔本身中。

使用XSD,您可以根據其架構驗證文檔;如果您在文檔中嵌入描述約束的元數據,則必須手動驗證它,從而創建更多的工作;新的約束意味着更新你的代碼。使用XSD,它通過模式自動處理。

+0

請注意,列標題可以保存任何值。 –

相關問題