【问题标题】:Naming XML Tags命名 XML 标签
【发布时间】:2010-09-14 01:03:57
【问题描述】:

这不是技术问题。更多的是标准化的事情。我有一堆需要序列化为 XML 的业务对象。在最简单的形式中,我得到了对象 X 持有类型 Y 的对象。Y 扩展为 Y1、Y2、Y3。

我的问题是,我应该选择:

<X>
  <Y>
    <Y1 />
    <Y2 />
    <Y1 />
    <Y3 />
  </Y>
</X>

或:

<X>
  <Y Type="Y1" />
  <Y Type="Y2" />
</X>

当然,第一种方式更具可读性,这是我想要的。这有什么不好的原因吗?我想我是在征求意见...... ;)

【问题讨论】:

标签: xml xml-serialization


【解决方案1】:

我认为这样一个笼统的问题没有答案——你真的需要给出更具体的例子来说明你想要达到的目标。格式不存在于真空中;预期的用法也很重要(“形式跟随功能”)。

【讨论】:

    【解决方案2】:

    我试图用其他方式解释其他人已经写信给你的内容。 您的问题包含的信息太少,无法回答。为什么?

    在我看来,您问题的主要问题是您提供的有关您希望使用 XML 的主题的信息太少。 XML 是一种元语言,而不是一种语言。 XML 只定义了一些简单的基本规则。例如 XHTML、XML Schema 或 XQuery 是基于 XML 的语言。我们如何在那里进行比较?就一种语言的某种语言结构的用法向您提供建议要比在非常一般的情况下向您提供任何建议要容易得多。

    可以为您提供具有 XML 元素和具有 XML 属性的一般限制。您可以在 jasso 对您的问题的评论中找到一些很好的链接。但是提供的信息并不能解决您的问题。

    像“元素在你的情况下似乎更好”这样的答案也不能真正解决你的问题。例如,您可以用不同的方式编写“Y 扩展为Y1Y2Y3”的信息。比如像

    <Y1 base="Y" />
    <Y2 base="Y" />
    <Y3 base="Y" />
    

    <class name="Y1" base="Y" />
    <class name="Y2" base="Y" />
    <class name="Y3" base="Y" />
    

    或其他一些方式,而不是像您在问题中写的那样。所有这些 XML 文档都是不同的XML 语言。问题不仅在于您拥有哪些信息,还在于您希望从哪方面查看信息。我们如何比较可以包含相同信息的不同“XML 语言”?如果您在 XML 文件中写入一些信息,您可能希望稍后再读取这些信息。取决于您以后需要的什么信息以及在什么情况下按什么顺序等等来比较不同的建议XML语言,你可以使用。

    所以关于元语言 XML 的一般问题无法得到很好的回答。

    【讨论】:

      【解决方案3】:

      我认为这取决于您如何使用序列化数据 - 是否用于交换、临时存储、长期存储等。更重要的是,您是否需要从序列化中创建对象的实例?

      如果它是为了交换,那么我会说它的属性名称本身以及它们所持有的任何值都不是那么重要的类型,因此类型应该是一个属性。另一方面,如果这是出于存储目的,那么如果您需要基于序列化实例化对象,那么类型名称可能同样重要,这可能会使使用类型名称作为元素更好。

      【讨论】:

        猜你喜欢
        • 2023-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多