【问题标题】:How to add null value restriction to ComplexType element如何向 ComplexType 元素添加空值限制
【发布时间】:2016-03-16 20:00:25
【问题描述】:

我有一个 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>

现在我想对元素 'l10n' 添加一个限制,使其值不应该为空,并且如果输入是:

应该抛出架构验证错误
<name>
    <l10n lang="en"></l10n>
</name>

到目前为止,我已经尝试过 nillable 和 minOccurs 等架构选项,但没有成功。有人可以建议我解决这个问题的可能方法吗?

注意: 请忽略 xsd 或 xml 中任何缺失的命名空间。

【问题讨论】:

    标签: xml validation xslt xsd


    【解决方案1】:

    实际上,您真正想要的是对元素“I10n”添加限制,使其值不应为空。在 XML Schema 中,空值与空值不同。您需要创建一个不能为空的简单类型。要做到这一点 - 创建一个新的简单类型,它是 xs:string 的限制 - 添加一个方面 minLength="1"。 - 使用那个简单类型作为你的 complex-type-with-simple-content 的基本类型

    为了完整起见,XML 中的 null(或更准确地说,nil)值通过添加属性 xsi:nil="true" 显式发出信号。在 XML Schema 中建模时,等效元素声明必须具有 xs:nillable="true",否则将出错。

    minOccurs 属性指定一个标签的最小出现次数;它没有说明标签的内容。

    【讨论】:

      【解决方案2】:

      使用下面的标签来检查空、空和空白空间

       <xs:simpleType>
          <xs:restriction base="xs:string">
                          <xs:whiteSpace value="collapse"/>
                         <xs:minLength value="1"/>
                       </xs:restriction>
              </xs:simpleType>
      

      【讨论】:

        猜你喜欢
        • 2019-07-28
        • 1970-01-01
        • 1970-01-01
        • 2013-10-10
        • 1970-01-01
        • 1970-01-01
        • 2023-03-29
        • 2010-10-15
        相关资源
        最近更新 更多