Я хочу написать XSD, чтобы ограничить содержимое допустимых элементов XML типа xsd: token таким образом, чтобы при проверке они были бы неотличимы от того же содержимого, заключенного в xsd: string.Каково регулярное выражение для набора строк, которое точно подтверждает то же самое для xsd: token и xsd: string?
I.e. они не содержат символы возврата каретки (#xD), строки (#xA) и символы табуляции (# x9), начинаются или заканчиваются символом пробела (# x20) и не включают в себя последовательность из двух или более смежных пространств персонажи.
Я думаю, что регулярное выражение для использования заключается в следующем:
\S+(\S+)*
(некоторые непробельные, необязательные [единичные пространства рядом с одним или более не непечатаемыми], в том числе всегда непробельный закрыть)
Это работает с различными инструментами тестирования регулярных выражений, но я не могу проверить его с помощью редактора XML oXygen; двойные пробелы, начальные и конечные пробелы, вкладки и разрывы строк в строках, по-видимому, позволяют экземпляру XML по-прежнему проходить проверку.
Вот реализация XSD:
<xs:simpleType name="Tokenized500Type">
<xs:restriction base="xs:token">
<xs:maxLength value="500"/>
<xs:minLength value="1"/>
<xs:pattern value="\S+(\S+)*"/>
</xs:restriction>
</xs:simpleType>
Есть ли какая особенность
- XML
или
- XSD
или
- Oxygen XML редактор
что предотвращает эту работу?
Если вы используете регулярное выражение non XML Schema, вам нужно '^ \ S + (\ s \ S +) * $'. В регулярном выражении XML Schema привязки не нужны - '\ S + (\ s \ S +) *' –
Спасибо, это в контексте проверки XSD, поэтому я использовал обычный синтаксис XML Schema без^и $. Вы видите, почему моя более длинная версия выше не работает? И как бы '\ S + (\ s \ S +) *' исключить, например. разрывы строк и вкладки? '\ S' включает в себя как' \ n', так и '\ t' – Michael
Привет @ WiktorStribiżew - я думаю, что это регулярное выражение, которое мне нужно, спасибо за то, что оно было менее подробным:' \ S + (\ S +) * '- обратите внимание сингл преднамеренно буквальный «космический» характер. – Michael