Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XML属性与元素_Xml_Schema_Modeling - Fatal编程技术网

XML属性与元素

XML属性与元素,xml,schema,modeling,Xml,Schema,Modeling,什么时候应该使用XML属性,什么时候应该使用XML元素 e、 g 或 福 酒吧 我个人喜欢将属性用于简单的单值属性。元素(显然)更适合于复杂类型或重复值 对于单值属性,在大多数API中,属性会导致更紧凑的XML和更简单的寻址。这在很大程度上取决于偏好。 在可能的情况下,我使用元素进行分组,并使用属性进行数据处理,因为我认为这比其他方法更紧凑 例如,我更喜欢 <?xml version="1.0" encoding="utf-8"?> <data> <p

什么时候应该使用XML属性,什么时候应该使用XML元素

e、 g



福
酒吧

我个人喜欢将属性用于简单的单值属性。元素(显然)更适合于复杂类型或重复值


对于单值属性,在大多数API中,属性会导致更紧凑的XML和更简单的寻址。

这在很大程度上取决于偏好。 在可能的情况下,我使用元素进行分组,并使用属性进行数据处理,因为我认为这比其他方法更紧凑

例如,我更喜欢

<?xml version="1.0" encoding="utf-8"?>
<data>
    <people>
        <person name="Rory" surname="Becker" age="30" />
        <person name="Travis" surname="Illig" age="32" />
        <person name="Scott" surname="Hanselman" age="34" />
    </people>
</data>

……而不是

<?xml version="1.0" encoding="utf-8"?>
<data>
    <people>
        <person>
            <name>Rory</name>
            <surname>Becker</surname>
            <age>30</age>
        </person>
        <person>
            <name>Travis</name>
            <surname>Illig</surname>
            <age>32</age>
        </person>
        <person>
            <name>Scott</name>
            <surname>Hanselman</surname>
            <age>34</age>
        </person>
    </people>
</data>

罗里
贝克尔
30
特拉维斯
伊利格
32
斯科特
汉塞尔曼
34
但是,如果我的数据不容易在20-30个字符内表示,或者包含许多引号或其他需要转义的字符,那么我会说是时候分解这些元素了。。。可能是CData块

<?xml version="1.0" encoding="utf-8"?>
<data>
    <people>
        <person name="Rory" surname="Becker" age="30" >
            <comment>A programmer whose interested in all sorts of misc stuff. His Blog can be found at http://rorybecker.blogspot.com and he's on twitter as @RoryBecker</comment>
        </person>
        <person name="Travis" surname="Illig" age="32" >
            <comment>A cool guy for who has helped me out with all sorts of SVn information</comment>
        </person>
        <person name="Scott" surname="Hanselman" age="34" >
            <comment>Scott works for MS and has a great podcast available at http://www.hanselminutes.com </comment>
        </person>
    </people>
</data>

对各种杂七杂八的东西感兴趣的程序员。他的博客可以在http://rorybecker.blogspot.com 他在推特上的名字是@RoryBecker
一个用各种SVn信息帮助我的帅哥
Scott为微软工作,在微软有一个很棒的播客http://www.hanselminutes.com 

属性的限制告诉您在哪里可以使用它们,在哪里不能使用它们:属性名称必须是唯一的,它们的顺序不能很重要,并且名称和值都只能包含文本。相反,元素可以具有非唯一的名称,具有显著的顺序,并且可以具有混合内容


属性在映射到遵循这些规则的数据结构的域中是可用的:对象上属性的名称和值、表行中的列、字典中的条目。(但如果属性不是所有的值类型,或者字典中的条目不是字符串,则不是这样。)

考虑得更好的元素vs属性参数之一来自。这定义了用于与政府相关的XML交换的建模技术,但它有其自身的优点,值得考虑

模式的设计必须确保 元素是元素的主要持有者 XML中的信息内容 实例。属性更合适 保存辅助元数据–简单 提供有关的更多信息的项目 元素内容。属性必须 不用于限定其他 这可能导致的属性 含糊不清

与元素不同,属性不能 保存结构化数据。因此,, 首选元素作为 信息的主要持有者 内容。但是,允许使用 属性来保存有关 元素的内容(例如 日期、度量单位或日期的格式 值集的标识)可以 使实例文档更简单、更简单 更容易理解

可以表示出生日期 在一条信息中:

1975-06-03
但是,可能需要更多的信息 要求,如该日期 出生经过核实。这可能是 定义为属性,使 消息中的元素如下所示:

1975-06-03
以下是不适当的:

1975-06-03
这里不清楚代码是否正确 是否由验证人或 ValueSet属性。更合适的 移交将是:


查看出生证
1975-06-03

IBM网站上有一篇题为“”的文章

虽然似乎没有太多硬性规定,但在帖子中提到了一些好的指导原则。例如,其中一个建议是在数据不能被规范化为空白时使用元素,因为XML处理器可以规范化属性中的数据,从而修改原始文本

在开发各种XML结构时,我会不时地引用本文。希望这对其他人也有帮助

编辑-从网站:

核心内容原则

如果您认为所讨论的信息是XML中表达或传递的基本材料的一部分,则将其放入一个元素中。对于人类可读的文档,这通常意味着要传达给读者的核心内容。对于面向机器的记录格式,这通常意味着直接来自问题域的数据。如果您认为这些信息对主通信是外围的或偶然的,或者纯粹是为了帮助应用程序处理主通信,则使用属性。这避免了核心内容与辅助材料的混乱。对于面向机器的记录格式,这通常意味着在问题域的主数据上使用特定于应用程序的符号

例如,我看到了许多XML格式,通常是在企业中自行开发的,文档标题放在属性中。我认为标题是文档交流的一个基本部分,它应该始终包含在元素内容中。另一方面,我经常看到内部产品标识符作为元素扔进产品的描述性记录中的情况。在其中一些情况下,属性更合适,因为特定的内部产品代码对文档的大多数读者或处理者来说并不重要,尤其是当ID的格式很长或难以理解时

您可能听说过这样的原则:数据放在元素中,元数据放在属性中。以上两个段落
<?xml version="1.0" encoding="utf-8"?>
<data>
    <people>
        <person>
            <name>Rory</name>
            <surname>Becker</surname>
            <age>30</age>
        </person>
        <person>
            <name>Travis</name>
            <surname>Illig</surname>
            <age>32</age>
        </person>
        <person>
            <name>Scott</name>
            <surname>Hanselman</surname>
            <age>34</age>
        </person>
    </people>
</data>
<?xml version="1.0" encoding="utf-8"?>
<data>
    <people>
        <person name="Rory" surname="Becker" age="30" >
            <comment>A programmer whose interested in all sorts of misc stuff. His Blog can be found at http://rorybecker.blogspot.com and he's on twitter as @RoryBecker</comment>
        </person>
        <person name="Travis" surname="Illig" age="32" >
            <comment>A cool guy for who has helped me out with all sorts of SVn information</comment>
        </person>
        <person name="Scott" surname="Hanselman" age="34" >
            <comment>Scott works for MS and has a great podcast available at http://www.hanselminutes.com </comment>
        </person>
    </people>
</data>
 <DateOfBirth>1975-06-03</DateOfBirth> 
<DateOfBirth VerifiedBy="View of Birth Certificate">1975-06-03</DateOfBirth> 
<DateOfBirth VerifiedBy="View of Birth Certificate" ValueSet="ISO 8601" Code="2">1975-06-03</DateOfBirth>   
 <DateOfBirth>    
   <VerifiedBy Code="2">View of Birth Certificate</VerifiedBy>     
   <Value ValueSet="ISO 8601">1975-06-03</Value>
 </DateOfBirth>
<?xml version="1.0" encoding="utf-8"?>
<item id="69" type="book">
    <authors count="1">
        <author>
            <name>John Smith</name>
        <author>
    </authors>
    <ISBN>123456790</ISBN>
</item>