2

无需过多详细介绍,我们希望使用 XML 作为元数据来描述属性约束(这是一个缩减示例,XSD 不支持我们提出的复杂模型),有两个选项正在考虑,以下哪个 XML结构更有意义?

选项1)

<?xml version="1.0" encoding="us-ascii"?>
<Properties xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <Property type="string">
      <name>quanitity</name>
      <contraints>
         <contraint type="isRequired">
            <value>true</value>
         </contraint>
         <contraint type="regex">
            <value>^[0-9]$</value>
         </contraint>
         <contraint type="regex">
            <value>^[a-zA-Z]$</value>
         </contraint>
      </contraints>
   </Property>
</Properties>

选项 2)

<?xml version="1.0" encoding="us-ascii"?>
<Properties xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <Property type="string">
      <name>quantity</name>
      <IsRequired>true</IsRequired>
      <Regex>^[0-9]$</Regex>
      <Regex>^[a-zA-Z]$</Regex>
   </Property>
</Properties>
4

4 回答 4

1

为了灵活性,我会选择#1。这将允许您添加许多不同类型的约束和自定义规则。

于 2009-07-01T14:07:59.873 回答
1

我可能会选择选项#2,因为 XML 作业在描述数据方面做得更好(这毕竟是 XML 应该做的),因此更容易阅读且不那么冗长。选项#1有点接近我喜欢的<name>标签<value>

于 2009-07-01T14:10:02.303 回答
1

这取决于您希望如何解析/处理 XML 以及您是否希望能够验证它。

从验证的角度来看(如果您正在考虑在编译时通过 XSD 进行自动验证)选项 2 是更好的选择,因为标签的内容将具有某种类型(例如,正则表达式),而<value>标签可以不检查内容是否正确。

此外,如果您使用的是 SAX 解析器,我可能会选择关于解析和处理的选项 2,因为您可以根据标签切换状态。

于 2009-07-01T14:10:22.787 回答
0

就个人而言,我会选择第一个,我怀疑编写代码来解析和进行错误检查会更容易。另外,它在我的大脑中更有意义。

也就是说,我认为您会发现这是“个人选择”,两者都可以。

于 2009-07-01T14:09:54.693 回答