Шаблон ограничения схемы XML для недопущения пустых строк
В моей XML-схеме у меня есть элемент строки типа, который я не хочу быть пустым (если он содержит пробелы и т.д. Я также считаю его пустым)
Я применил ограничение, которое я нашел в http://blogs.msdn.com/b/neerajag/archive/2005/08/12/450723.aspx
<xsd:restriction base = "xsd:string">
<xs:minLength value="1" />
<xs:pattern value=".*[^\s].*" />
</xsd:restriction>
Что именно делает этот шаблон и будет делать то, что я ожидаю?
Ответы
Ответ 1
не делает ли это именно то, что вы хотите?
<xs:restriction base="xs:token">
<xs:minLength value="1"/>
</xs:restriction>
Если строка содержит только пробелы (фиды строк, возврат каретки, вкладки, начальные и конечные пробелы), процессор удалит их, поэтому проверка не удастся; если что-то еще, проверка будет успешной.
(обратите внимание, что: внутренние последовательности из двух или более пробелов будут удалены - убедитесь, что вы в порядке с этим)
Ответ 2
Образец:
- ноль или более символов
.*
(.
соответствует любому символу).
- совпадает с чем-либо, не указанным в списке символов.
\s
- это пробел, поэтому [^\s]
означает совпадение с чем-то, что не является пробелом. Начальный ^
в матче отрицает нормальное соответствие любому из этих символов.
- ноль или более символов.
Ответ 3
Я не знаю, насколько полезен, но я нашел лучший образец, чем первый опубликованный. Вот он:
<xs:simpleType name="nonEmptyString">
<xs:restriction base="xs:string">
<xs:pattern value="(\s*[^\s]\s*)+"></xs:pattern>
</xs:restriction>
</xs:simpleType>
Использование Eclipse, кажется, работает нормально.
Ответ 4
Взгляд на тему публикации "шаблон для недопущения пустых строк", который до сих пор остается без ответа. Вы можете сделать это с помощью тега <xsd:whiteSpace value="collapse" />
, чтобы запретить пробелы
whiteSpace
, установленный в "collapse"
, он выполнит следующее
- удаляет все символы пробела, включая линейные каналы, вкладки,
пробелы, возврат каретки
- удаляются ведущие и конечные пробелы.
- несколько пробелов сводятся к одному пространству
Ссылка: W3C whiteSpace