根据在线验证服务,这个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>
将此映射到数组时,我是否有可能使用第二步覆盖第一步?
答案 0 :(得分:1)
它是有效的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映射,那么将它们包装在另一个标记中是有意义的。
答案 1 :(得分:-1)
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>