xsd - 带有可选元素和任何元素的 XSD 序列
问题描述
是否可以定义一个复杂类型序列,其中包含可选元素,后跟 n 个可选的任何元素?目前我有这个违反 UPA 的 XSD:
<xs:complexType name="itemtype">
<xs:sequence>
<xs:element name="uuid" type="uuidtype"/>
<xs:element name="lastname" type="nametype"/>
<xs:element name="isActive" minOccurs="0" type="isactivetype"/>
<xs:element name="countries_scope" type="countryscopetype"/>
<xs:element name="origin" minOccurs="0" type="nametype"/>
<xs:element name="url" minOccurs="0" type="nametype"/>
<xs:element name="email" minOccurs="0" type="emailtype"/>
<xs:element name="description" minOccurs="0" type="nametype"/>
<xs:element name="town" minOccurs="0" type="nametype"/>
<xs:element name="role" minOccurs="0" type="nametype"/>
<xs:element name="source" minOccurs="0" type="nametype"/>
<xs:element name="origin_zip" minOccurs="0" type="nametype"/>
<xs:element name="town_zip" minOccurs="0" type="nametype"/>
<xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
</xs:sequence>
</xs:complexType>
一个可能的 XML 可能是:
<item>
<uuid>1</uuid>
<lastname>Yanick</lastname>
<country_scope>CHE</country_scope>
<role>Student</role>
<age>24</age>
</item>
此处仅使用可选角色,并且年龄将是任何元素之一。
解决方案
解决方案很简单。any 之前的最后一个元素不能是可选的。这个 XSD 可以工作:
<xs:complexType name="itemtype">
<xs:sequence>
<xs:element name="uuid" type="uuidtype"/>
<xs:element name="lastname" type="nametype"/>
<xs:element name="isActive" minOccurs="0" type="isactivetype"/>
<xs:element name="origin" minOccurs="0" type="nametype"/>
<xs:element name="url" minOccurs="0" type="nametype"/>
<xs:element name="email" minOccurs="0" type="emailtype"/>
<xs:element name="description" minOccurs="0" type="nametype"/>
<xs:element name="town" minOccurs="0" type="nametype"/>
<xs:element name="role" minOccurs="0" type="nametype"/>
<xs:element name="source" minOccurs="0" type="nametype"/>
<xs:element name="origin_zip" minOccurs="0" type="nametype"/>
<xs:element name="town_zip" minOccurs="0" type="nametype"/>
<xs:element name="countries_scope" type="countryscopetype"/>
<xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
</xs:sequence>
推荐阅读
- oop - Common Lisp 对象系统中的通用调度与经典 OOP 中的动态调度相同吗?
- fortran - 在其他语言中是否有类似的“COMMON”(来自 Fortran 的引用环境)的实现?
- reactjs - 将 android:usesCleartextTraffic 更改为 false
- javascript - 检查更改编号是否已更改刷新页面
- android - Kotlin - 如何从对话框中的按钮选择中获取价值?
- python - ValueError: 层序贯_1 的输入 0 与层不兼容:预期 ndim=3,发现 ndim=2。收到的完整形状:(无,93)
- python-3.x - 使用 Python 从“扁平化”/不可编辑的 PDF 中识别和提取表单字段及其对应的值
- windows - 松露细雨教程在最后一步“npm run dev”上失败
- java - 如何在junit 5中实现类似“围绕每个”回调的东西?
- python - NoReverseMatch at /contact/ Reverse for 'contact_result' 未找到。“contact_result”不是有效的视图函数或模式名称