模式的这一部分给我带来麻烦:
<xs:element name="newrecipients">
<xs:complexType>
<xs:choice>
<xs:element name="csv" type="xs:string" />
<!-- List of recipients -->
</xs:choice>
</xs:complexType>
</xs:element>
Run Code Online (Sandbox Code Playgroud)
收件人列表是诸如以下内容的列表:
<recipient>
<field1>...</field1>
...
<fieldN>...</field>
</recipient>
Run Code Online (Sandbox Code Playgroud)
标签接收者可以包含模式未知的标签的随机序列。所以我用了类似
<xs:element name="recipient">
<xs:complexType>
<xs:sequence>
<xs:any minOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Run Code Online (Sandbox Code Playgroud)
问题是我不怎么定义收件人列表。我知道,<xs:list>但在这种情况下我不明白如何使用它,因为通常我会看到类似
<xs:element name="intvalues" type="valuelist">
<xs:simpleType name="valuelist">
<xs:list itemType="xs:integer"/>
</xs:simpleType>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)
您必须在其中定义包含列表的元素。我要直接csv或直接list。
我想念什么?谢谢。
编辑:输出示例
这个:
<newrecipients>
<csv>myrecipients.csv</csv>
</newrecipients>
Run Code Online (Sandbox Code Playgroud)
或这个:
<newrecipients>
<recipient>
<field1>...</field1>
...
<fieldN>...</field>
</recipient>
...
<recipient>
<field1>...</field1>
...
<fieldN>...</field>
</recipient>
</newrecipients>
Run Code Online (Sandbox Code Playgroud)
小智 5
我不确定在xsd:choice元素内部是否有效:
<xs:element name="newrecipients">
<xs:complexType>
<xs:choice>
<xs:element name="csv" type="xs:string" />
<!-- List of recipients -->
<xs:element name="recipient" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:any minOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
Run Code Online (Sandbox Code Playgroud)
当然,您可以使用此解决方案将xsd:sequence标签中的元素声明包装起来,但是当csv元素丢失时,我不知道您是否希望列表存在。
| 归档时间: |
|
| 查看次数: |
18519 次 |
| 最近记录: |