如果元素没有内容,则需要某些属性值

时间:2015-04-21 07:14:07

标签: xml xsd

假设我有类似的类型定义:

<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"

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您无法在XSD 1.0中表达约束,但可以在XSD 1.1中使用xs:assert

XSD 1.1

<?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>