2013-08-06 68 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

请注意,列标题可以保存任何值。 –

相关问题