Элемент XSD не нулевой или пустое ограничение для XML? - PullRequest
23 голосов
/ 10 декабря 2010

Это мой пример XML-кода:

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

Я использую:

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

XSD должен быть проверен lastName как не нулевой или не пустой.

Ответы [ 5 ]

51 голосов
/ 10 декабря 2010

Попробуйте

<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>
16 голосов
/ 11 октября 2012
<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>
9 голосов
/ 23 июля 2013

Это ИМХО лучший шаблон:

<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>
9 голосов
/ 10 декабря 2010

@ Камаль дал вам в основном правильный ответ здесь.Вот почему - nillable всегда вызывает проблемы.По сути, вы можете рассматривать nillable как значение , разрешающее атрибут xsi:nil для этого элемента .Спецификация XML-схемы описывает нуль-сигнал как внеполосный сигнал - в основном он используется для указания NULL на базы данных.

Требуется элемент, который долженкак минимум один символ длиной, заданный @ Kamal

0 голосов
/ 23 августа 2016

Это было мое любимое решение.

<xs:simpleType name="NonEmptyString">
    <xs:restriction base="xs:string">
        <xs:pattern value="[\s\S]*[^ ][\s\S]*"/>
    </xs:restriction>
</xs:simpleType>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...