哪种XML结构更有意义?

时间:2009-07-01 14:06:09

标签: xml structure

我们没有深入细节,我们希望使用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 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

我可能会选择#2选项,因为XML作业可以更好地描述数据(这毕竟是XML应该做的事情),因此更容易阅读,更简洁。选项#1与我喜欢的<name><value>标签有点接近。

答案 2 :(得分:1)

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

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

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

答案 3 :(得分:0)

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

那就是说,我认为你会发现这是'个人选择',要么就好了。