我有一个xml
<name>
<l10n lang="en">abc</l10n>
</name>
此元素的关联xsd为:
<xs:schema elementFormDefault="qualified" targetNamespace="http://iddn.icis.com/ns/core" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:c="http://iddn.icis.com/ns/core" xmlns:conf="http://iddn.icis.com/ns/config" xmlns="http://www.w3.org/1999/xhtml">
<xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd">
</xs:import>
<xs:complexType name="i18n-value">
<xs:sequence>
<xs:element name="l10n" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute ref="lang" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:element name="name" type="c:i18n-value"/>
</xs:schema>
现在我想对元素添加限制&#39; l10n&#39;以某种方式,它的值不应该为null,并且应该抛出模式验证错误,如果输入是:
<name>
<l10n lang="en"></l10n>
</name>
到目前为止,我已经尝试过模式选项,例如 nillable 和 minOccurs ,但没有运气。有人可以建议我解决这个问题的可能方法。
注意: 请忽略xsd或xml中缺少的任何名称空间。
答案 0 :(得分:0)
实际上,你真正想要的是对元素添加限制&#39; I10n&#39;以某种方式,它的值不应该为空。在XML Schema中,空值与空值不同。您需要创建一个不能为空的简单类型。要做到这一点 - 创建一个新的简单类型,它是xs:string的限制 - 添加一个方面minLength =&#34; 1&#34;。 - 使用这种简单类型作为复杂类型与简单内容的基本类型
为了完整性,通过添加属性xsi:nil =&#34; true&#34;显式地表示XML中的null(或更准确,nil)值。在XML Schema中对其进行建模时,等效元素声明必须具有xs:nillable =&#34; true&#34;,否则将是错误。
minOccurs属性指定标记的最小出现次数;它没有说明标签的内容。
答案 1 :(得分:0)
使用以下标记,其中包括检查空,空和空格
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>