繁体   English   中英

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

[英]xml - repeating elements - is this valid?

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

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

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

这样表达更好吗?

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

将其映射到数组时,我会冒着将第一步覆盖第二步的风险吗?

这是有效的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之间需要一对一的映射,则将它们包装在另一个标签中是有意义的。

XML有效且格式正确。 但是,如果元素的顺序很重要,则应仔细考虑文档的设计。 同样有效的文档将首先显示固定电源,然后显示固定风扇 甚至首先是两个<NoInc>元素,然后是两个<Step>元素。

此外,如果<NoInc>元素以某种方式依赖于<Step>元素,则应在设计中显示此关系,方法是将NoInc文本设置为<Step>元素的属性,或者为每对创建一个父元素<Step><NoInc>元素的集合。

例如:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM