Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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 - Fatal编程技术网

xml-重复元素-这有效吗?

xml-重复元素-这有效吗?,xml,Xml,根据在线验证服务,此XML似乎是有效的,但我怀疑每个步骤都应该包装在一个标记中,以使其唯一。这违反了什么规定 <tasks> <step>fix fan</step> <NoInc>RT260454</NoInc> <step>fix power supply&l

根据在线验证服务,此XML似乎是有效的,但我怀疑每个步骤都应该包装在一个标记中,以使其唯一。这违反了什么规定

<tasks>                                               
       <step>fix fan</step>
       <NoInc>RT260454</NoInc>             

       <step>fix power supply</step>
       <NoInc>RT260456</NoInc>                 
</tasks> 

固定风扇
RT260454
固定电源
RT260456
这样表达是否更好

<tasks>                                               
   <task>
       <step>fix fan</step>
       <NoInc>RT260454</NoInc>             
   </task>
   <task>        
       <step>fix power supply</step>
       <NoInc>RT260456</NoInc>                 
   </task>
</tasks> 

固定风扇
RT260454
固定电源
RT260456

当将此映射到数组时,我是否会冒用第二步覆盖第一步的风险?

这是有效的xml,下面是支持该xml的XSD:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
      xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="tasks" type="tasksType"/>
  <xs:complexType name="tasksType">
    <xs:choice maxOccurs="unbounded" minOccurs="0">
      <xs:element type="xs:string" name="step"/>
      <xs:element type="xs:string" name="NoInc"/>
    </xs:choice>
  </xs:complexType>
</xs:schema>


如果step和noinc之间需要1对1的映射,那么将它们包装在另一个标记中是有意义的。

XML有效且格式良好。但是,如果元素的顺序很重要,则应该仔细考虑文档的设计。同样有效的文件将显示固定电源第一个和固定风扇第二个。或者甚至先是两个
元素,然后是两个
元素

此外,如果
元素以某种方式依赖于
元素,则应在设计中通过将NoInc文本作为
元素的属性或为每对
元素创建父元素来显示这种关系

例如:

  <Task>
      <SubTask>
          <step>fix fan</step>
          <NoInc>RT260454</NoInc>
      </SubTask>
      <SubTask>
          <step>fix power supply</step>
          <NoInc>RT260456</NoInc>
      </SubTask>
  </Task>

固定风扇
RT260454
固定电源
RT260456

它没有违反任何规则。它完全有效。@Robert:它没有违反任何规则,因为该文档没有任何规则。因此它不可能是有效的(无需验证)。这只是格式良好的XML。-1:答案是错误的。它不是有效的XML,只是格式良好。请参考这些链接。它是有效的,因为它验证了一个架构(如上所述)。该架构不是问题的一部分。问题中给出的XML没有模式。因此它是无效的,只是形式正确。查看您在评论中的SO链接。并为此建立了许多学校。这不是你的错,但是如果你把链接粘贴到这个网站上,可能看起来很侮辱人。谢谢你的澄清。我明白你的观点,同意问题中没有提供任何模式。这意味着有一个模式,因为海报声称使用了在线验证服务,如果它是真正的验证,就需要一个模式。我在回答中提供了一个例子,我想说,由于没有给出进一步的参考,OP实际上询问了有效性,但不理解有效XML的实际含义。Abe很可能在询问将日期编码为XML以供以后重用(例如)的最佳实践是什么。然而,由于这是基于观点的,显然是离题的。当你发明模式时,你的答案被OP接受,这似乎支持了我概述的场景。