假设我有类似的类型定义:
<xs:complexType name="title-type">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="hide" type="xs:boolean" default="false" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
这允许空内容,这很好。但是,我想要如果内容为空,那么属性hide="true"
。
我该怎么做?
答案 0 :(得分:0)
您无法在XSD 1.0中表达约束,但可以在XSD 1.1中使用xs:assert
。
<?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"
vc:minVersion="1.1">
<xs:complexType name="title-type">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="hide" type="xs:boolean" default="false" />
<xs:assert test=". != '' or @hide = true()"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:element name="title" type="title-type"/>
</xs:schema>