0

例如,我有表格数据,称为Person。列标题是emailfname和。我带有以下 XML 结构:lnamessn

<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. 一列可能完全是空的,但我仍然必须在表的元描述中包含它的名称
  3. email并且ssn是独特的列,我必须以某种方式指出这一点。

那么包含表格元描述的最佳方式是什么?这个可以吗?对我来说似乎有点奇怪。

<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>

请注意,列标题可以有任何值。他们可能也不仅仅是四个。

4

2 回答 2

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>

并将定义 email 和 ssd 的 maxoccurs 属性的 xsd 模式关联到 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>
于 2013-08-06T12:44:30.017 回答
1

使用 XSD 描述文档结构和元素约束;不要在文档本身中嵌入元数据。

使用 XSD,您可以根据其架构验证文档;如果您在文档中嵌入描述约束的元数据,则必须手动验证它,从而创建更多工作;新的约束意味着更新你的代码。使用 XSD,它通过模式自动处理。

于 2013-08-06T12:51:26.170 回答