关于XML语义的问题

时间:2013-09-16 19:36:05

标签: xml configuration semantics

我想将网站的配置基于XML文件。我已经开始编写以下文件,但我想知道几件事:

<config>

    <core>
        <database
            rdbms    = "MySQL"
            name     = "db_name"
            host     = "127.0.0.1"
            login    = "root"
            password = ""
            charset  = "UTF-8"
            engine   = "MyISAM"
        />
        <debug
           log        = "../log.txt"
           models     = "true"
           views      = "true"
           controller = "true"
        />
    </core>

    <application name="app_name">
        <paths>
            <path name="CONTENT_DIR" src="../Content" />
            <path name="LOG_FILE" src="../log.txt" />
        </paths>
        <!-- etc -->
    </application>

</config>
  • 我选择将数据库设为自闭标签,并使用属性存储有关它的详细信息。我可以为它的每个属性创建一个自动关闭标记,如<host value="127.0.0.1" />,并将它们放在数据库标记的内容中,但由于只有一个主机,它似乎不合逻辑。然而,数据库是一个标签,因为可以有几个数据库。这有意义吗?是否会有更清晰/更自然的方式来做到这一点?
  • 调试标签怎么样?应该只有一个调试文件,但是可以通过添加调试标记来定义多个调试文件。我怎么能把它变成“单身人士”?
  • 我可以像我一样对齐属性,使其看起来更干净,还是非标准的,应该避免?
  • 更一般地说:你什么时候制作属性或标签?

我想我有更多问题,但是他们离开了我的脑海,所以如果他们回来我会编辑我的问题:P

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

首先,您使用“tag”一词来表示“元素”。元素通常有两个标记(开始和结束标记),除非它是空的,在这种情况下它可能只有一个空元素标记。

当你“自我关闭标签”时,你应该说“空元素”。空元素是作为自闭标签还是作为没有内容的起始标签/结束标签对而无关紧要。

同样,属性的对齐纯粹是装饰性的,你不应该将它与文件的逻辑设计混淆。作为配置文件格式的设计者,您不会影响实际配置文件的作者如何选择进行布局;这不是你的问题,你不应该在乎。

属性与元素的决定是一个老板栗。当您使用XML进行文档标记时,存在真正的区别(文档的文本内容在元素内容中,元数据在属性中),但是当您使用XML作为结构化数据时,没有这样的区别,因此完全取决于您。在为Saxon设计配置文件格式时,我做了与您相同的决定,并广泛使用了属性,但使用子元素也可以正常工作,也许更常见。事实上,有一个论据说,对于数据,你可以用元素做所有事情,所以根本不要使用属性。