【发布时间】:2019-11-27 19:06:09
【问题描述】:
我有一个 XSD,其中 xs:float 类型的相同属性(例如 FullStartOrder)用于多个元素,但不是所有元素。 XSD 不需要该属性(例如 FullStartOrder)。有一个编辑要求是确保在提供(例如 FullStartOrder)属性的所有元素中不使用相同的浮点数。
我的理解是不能使用身份约束“key”,因为“key”需要“身份约束Selector”和“身份约束字段”来存在。不符合此用例,因为该属性是可选的。因此,正在使用“唯一身份约束”。 标识约束在根元素上,因为根元素是定义唯一性的范围。但是以下每个“身份约束选择器”都有某种类型的错误。我也理解身份约束中的 XPath 规则支持 1.1 版中的完整 XPath 规范。
测试 1
当
<xs:unique name="NoDuplicateFullStartOrder">
<xs:selector xpath="utils:."/>
<xs:field xpath="@FullStartOrder"/>
</xs:unique>
已尝试 XSD 或示例 XML 中没有错误。
失败 1
但存在重复值时不会出错。
测试 1.1
当
<xs:unique name="NoDuplicateFullStartOrder">
<xs:selector xpath="utils:."/>
<xs:field xpath="utils:@FullStartOrder"/>
</xs:unique>
尝试在 XSD 的验证检查期间产生以下错误。
失败1.1
身份约束定义“utils:NoDuplicateFullStartOrder”的属性“xpath”的值“utils:@FullStartOrder”不是有效的受限 XPath 表达式。
测试 2
当
<xs:unique name="NoDuplicateFullStartOrder">
<xs:selector xpath="utils://"/>
<xs:field xpath="@FullStartOrder"/>
</xs:unique>
尝试在 XSD 的验证检查期间产生以下错误。
失败2
身份约束定义“NoDuplicateFullStartOrder”的属性“//”的值“//”不是有效的受限 XPath 表达式。
测试 3
什么时候
<xs:unique name="NoDuplicateFullStartOrder">
<xs:selector xpath="utils:."/>
<xs:field xpath="@FullStartOrder"/>
</xs:unique>
尝试在 XSD 的验证检查期间产生以下错误。
失败 3
身份约束定义“NoDuplicateFullStartOrder”的属性“//”的值“//”不是有效的受限 XPath 表达式。
我什至尝试过添加(未在 XSD sn-p 下面显示。)但随后 id 也不起作用。
xmlns:utils=http://www.mycompany.com/utils
targetNamespace="http://www.mycompany.com/utils"
elementFormDefault="qualified"
应如何指定以下身份约束以满足要求?
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" elementFormDefault="qualified" attributeFormDefault="unqualified" vc:minVersion="1.1">
<xs:element name="ENTER_NAME_OF_ROOT_ELEMENT_HERE">
.
.
.
<xs:unique name="NoDuplicateFullStartOrder">
<xs:selector xpath="."/>
<xs:field xpath="@FullStartOrder"/>
</xs:unique>
.
.
.
</xs:element>
</xs:schema>
示例无效文档。
所有 FullStartOrder 属性都有相同的值,1.0
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2020 (x64) (http://www.altova.com)-->
<utils:Utils xmlns:utils="http://www.bcbst.com/utils" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.bcbst.com/utils utils_properties_1_1_1.xsd">
.
.
.
<utils:Hosts>
<utils:Host utils:FullStartOrder="1.0" utils:FullStopOrder="1.0" utils:InvokeType="asynchronous" utils:CellStartOrder="1.0" utils:CellStopOrder="1.0">
<utils:Host_FQDN>anwas42.bcbst.com</utils:Host_FQDN>
.
.
.
</utils:Host>
<utils:Host utils:FullStartOrder="1.0" utils:FullStopOrder="1.0" utils:InvokeType="synchronous" utils:CellStartOrder="1.0" utils:CellStopOrder="1.0">
.
.
.
</utils:Host>
<utils:Host utils:FullStartOrder="1.0" utils:FullStopOrder="1.0" utils:InvokeType="asynchronous" utils:CellStartOrder="1.0" utils:CellStopOrder="1.0">
.
.
.
</utils:Host>
</utils:Hosts>
<utils:Deployment_Managers>
<utils:Deployment_Manager utils:FullStartOrder="1.0" utils:FullStopOrder="1.0" utils:InvokeType="synchronous" utils:CellStartOrder="1.0" utils:CellStopOrder="1.0">
.
.
.
</utils:Deployment_Manager>
<utils:Deployment_Manager utils:FullStartOrder="1.0" utils:FullStopOrder="1.0" utils:InvokeType="asynchronous" utils:CellStartOrder="1.0" utils:CellStopOrder="1.0">
.
.
.
</utils:Deployment_Manager>
<utils:Deployment_Manager utils:FullStartOrder="1.0" utils:FullStopOrder="1.0" utils:InvokeType="synchronous" utils:CellStartOrder="1.0" utils:CellStopOrder="1.0">
.
.
.
</utils:Deployment_Manager>
</utils:Deployment_Managers>
<utils:Node_Agents>
<utils:Node_Agent utils:FullStartOrder="1.0" utils:FullStopOrder="1.0" utils:InvokeType="asynchronous" utils:CellStartOrder="1.0" utils:CellStopOrder="1.0">
.
.
.
</utils:Node_Agent>
<utils:Node_Agent utils:FullStartOrder="1.0" utils:FullStopOrder="1.0" utils:InvokeType="synchronous" utils:CellStartOrder="1.0" utils:CellStopOrder="1.0">
.
.
.
</utils:Node_Agent>
<utils:Node_Agent utils:FullStartOrder="1.0" utils:FullStopOrder="1.0" utils:InvokeType="asynchronous" utils:CellStartOrder="1.0" utils:CellStopOrder="1.0">
.
.
.
</utils:Node_Agent>
</utils:Node_Agents>
<utils:Clusters>
<utils:Cluster utils:FullStartOrder="1.0" utils:FullStopOrder="1.0" utils:InvokeType="synchronous" utils:CellStartOrder="1.0" utils:CellStopOrder="1.0">
.
.
.
</utils:Cluster_Member>
.
.
.
</utils:Cluster>
</utils:Clusters>
.
.
.
</utils:Utils>
有效文件示例
所有 FullStartOrder 属性都有不同的值
FullStopOrder、CellStartOrder 和 CellStopOrder 没有任何约束,但是一旦 FullStartOrder 约束起作用
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2020 (x64) (http://www.altova.com)-->
<utils:Utils xmlns:utils="http://www.bcbst.com/utils" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.bcbst.com/utils utils_properties_1_1_1.xsd">
.
.
.
<utils:Hosts>
<utils:Host utils:FullStartOrder="1.0" utils:FullStopOrder="1.0" utils:InvokeType="asynchronous" utils:CellStartOrder="1.0" utils:CellStopOrder="1.0">
<utils:Host_FQDN>anwas42.bcbst.com</utils:Host_FQDN>
.
.
.
</utils:Host>
<utils:Host utils:FullStartOrder="2.0" utils:FullStopOrder="1.0" utils:InvokeType="synchronous" utils:CellStartOrder="1.0" utils:CellStopOrder="1.0">
.
.
.
</utils:Host>
<utils:Host utils:FullStartOrder="3.0" utils:FullStopOrder="1.0" utils:InvokeType="asynchronous" utils:CellStartOrder="1.0" utils:CellStopOrder="1.0">
.
.
.
</utils:Host>
</utils:Hosts>
<utils:Deployment_Managers>
<utils:Deployment_Manager utils:FullStartOrder="4.0" utils:FullStopOrder="1.0" utils:InvokeType="synchronous" utils:CellStartOrder="1.0" utils:CellStopOrder="1.0">
.
.
.
</utils:Deployment_Manager>
<utils:Deployment_Manager utils:FullStartOrder="5.0" utils:FullStopOrder="1.0" utils:InvokeType="asynchronous" utils:CellStartOrder="1.0" utils:CellStopOrder="1.0">
.
.
.
</utils:Deployment_Manager>
<utils:Deployment_Manager utils:FullStartOrder="6.0" utils:FullStopOrder="1.0" utils:InvokeType="synchronous" utils:CellStartOrder="1.0" utils:CellStopOrder="1.0">
.
.
.
</utils:Deployment_Manager>
</utils:Deployment_Managers>
<utils:Node_Agents>
<utils:Node_Agent utils:FullStartOrder="7.0" utils:FullStopOrder="1.0" utils:InvokeType="asynchronous" utils:CellStartOrder="1.0" utils:CellStopOrder="1.0">
.
.
.
</utils:Node_Agent>
<utils:Node_Agent utils:FullStartOrder="8.0" utils:FullStopOrder="1.0" utils:InvokeType="synchronous" utils:CellStartOrder="1.0" utils:CellStopOrder="1.0">
.
.
.
</utils:Node_Agent>
<utils:Node_Agent utils:FullStartOrder="9.0" utils:FullStopOrder="1.0" utils:InvokeType="asynchronous" utils:CellStartOrder="1.0" utils:CellStopOrder="1.0">
.
.
.
</utils:Node_Agent>
</utils:Node_Agents>
<utils:Clusters>
<utils:Cluster utils:FullStartOrder="10.0" utils:FullStopOrder="1.0" utils:InvokeType="synchronous" utils:CellStartOrder="1.0" utils:CellStopOrder="1.0">
.
.
.
</utils:Cluster_Member>
.
.
.
</utils:Cluster>
</utils:Clusters>
.
.
.
</utils:Utils>
XSD
【问题讨论】: