以下是我希望能够作为XML示例(请注意file
元素)的示例:
...
<run-list>
<topic name="topic1"/>
<topic name="topic2">
<file number="2"/>
<file number="3">
/a/b/c /a/b/d /a/b/g/h/i
</file>
</topic>
</run-list>
...
run-list
元素可以包含任意数量的topic
元素。 topic
元素可以包含零个或多个file
个元素。 file
元素具有number
属性(必需),可能包含零个或多个路径字符串(列表)。
我无法弄清楚如何定义模式类型以允许如上所述定义file
元素。我需要file
元素具有number
属性,并且我希望能够指定路径值的可选列表。我已经能够为其他情况定义简单列表类型,但它们没有任何属性。
我能够做一些与此接近的事情,但需要为路径定义另一种模式类型,并将其作为file
元素中的元素实现。所以我会有这样的事情:
...
<file number="3">
<path>/a/b/c</path>
<path>/a/b/d</path>
<path>/a/b/g/h/i</path>
</file>
...
我想避免必须定义单独的模式类型和元素来指定给定file
元素下的路径。
任何帮助都将不胜感激。
答案 0 :(得分:0)
我想我明白了。这里的模式似乎有效:
<xs:complexType name="TestSpecification">
<xs:sequence>
<xs:element name="topic" type="TopicSpecification"
minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="TopicSpecification">
<xs:sequence>
<xs:element name="file" type="FileSpecification" minOccurs="0"
maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required" />
</xs:complexType>
<xs:complexType name="FileSpecification">
<xs:simpleContent>
<xs:extension base="EntityPathList">
<xs:attribute name="number" type="xs:positiveInteger" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="EntityPathList">
<xs:list itemType="xs:string" />
</xs:simpleType>
如果有人发现任何潜在的问题,建议如何改进或替代,请随时发表评论。