簡體   English   中英

對於Xml,XSD元素不為空或空約束?

[英]XSD Element Not Null or Empty Constraint For Xml?

這是我的示例XML代碼:

<bestContact>
<firstName><![CDATA[12345]]></firstName>
<lastName />
</bestContact>

我在用:

<xs:element name="lastName" type="xs:string" minOccurs="1" nillable="false"/>

XSD應該將lastName驗證為非null或空。

嘗試

<xs:element name="lastName" minOccurs="1" nillable="false">
  <xs:simpleType>
     <xs:restriction base="xs:string">
       <xs:minLength value="1"/>
     </xs:restriction>
  </xs:simpleType>
</xs:element>
<xsd:element name="lastName" type="NonEmptyString" nillable="false"/>

<xsd:simpleType name="NonEmptyString">
  <xsd:restriction base="xs:string">
    <xsd:minLength value="1" />
    <xsd:pattern value=".*[^\s].*" />
  </xsd:restriction>
</xsd:simpleType>

這是恕我直言更好的模式:

<xs:simpleType name="NonEmptyString">
   <xs:restriction base="xs:string">
      <xs:pattern value="^(?!\s*$).+" />
   </xs:restriction>
</xs:simpleType>

要么

<xs:simpleType name="NonEmptyStringWithoutSpace">
   <xs:restriction base="xs:string">
      <xs:pattern value="\S+"/>
   </xs:restriction>
</xs:simpleType>

@Kamal在這里給了你基本正確的答案。 這就是為什么 - nillable似乎總是會導致問題。 實際上,您可以將nillable視為允許此元素的xsi:nil屬性 XML Schema規范將nillable描述為帶外信號 - 它基本上用於向數據庫指示NULL

你想要的是一個必須至少有一個字符的元素,由@Kamal給出

這是我最喜歡的解決方案。

<xs:simpleType name="NonEmptyString">
    <xs:restriction base="xs:string">
        <xs:pattern value="[\s\S]*[^ ][\s\S]*"/>
    </xs:restriction>
</xs:simpleType>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM