Синтаксис регулярных выражений XML - PullRequest
0 голосов
/ 02 мая 2011

Я задавал этот вопрос на Справочная служба Википедии , но не получил ответа.Со второй попытки пользователь Mr.98 перенаправил меня сюда, вот и я;)

Я пытаюсь написать свой собственный синтаксический анализатор регулярных выражений, поэтому я читаю соответствующие документы W3C.Стандартный документ Схема XML, часть 2: Типы данных, второе издание дает следующее определение для normal character (с известной ошибкой отсутствия фигурных скобок):

Обычный символ - это любой символ XML, который не является метасимволом.(...)

[10] Char ::= [^.\?*+()|#x5B#x5D]

Затем появляется комментарий:

Обратите внимание, что · нормальный символ · может быть представлен как сам по себеили со ссылкой на символ.http://www.w3.org/TR/2000/WD-xml-2e-20000814#dt-charref

Я не очень хорошо говорю по-английски и не знаю, как это понять.Если авторы делают особый акцент на возможности представления · нормальных символов · ссылками на символы, то я ожидаю, что такое представление для метасимволов не допускается.Прав ли я в этом месте?

И если да, каковы последствия, если ссылка на символ задает кодовую точку метасимвола, скажем, звездочку, как в a*?

  1. Является ли это выражение просто недействительным?
  2. Или, скорее, ссылка становится неявно нормальным символом, а выражение эквивалентно a\* (со звездочкой без знака)?
  3. Что-то еще?

Все примеры, которые я нашел в Google, используют ссылки на символы для помещения метасимволов в группы символов из выражений класса символов .Однако символ Char появляется в производственном синтаксисе 9 регулярного выражения как одна из трех версий Atom, и ни Atom, ни Char сам по себе не используется для определения какого-либо вида chargroup - вместо него используется XmlChar, который, в свою очередь, не имеет комментариев по поводу использования ссылок на символы.

Пожалуйста, уточните беспорядок в моей голове:

  • Метасимвол, указанный со ссылкой на символ, становится нормальным символом?Как должен a* работать?
  • Допустима ли ссылка на символ между [ и ] (внутри выражения класса символов )?

• мы сожалеем, но как механизм предотвращения спама, новые пользователи могут публиковать не более двух гиперссылок.

Ну, я думаю, они помогут читателям попасть в соответствующие разделы половины-мегабайтный документ W3C.Но делай как хочешь - я превратил их в уродливый, плохо читаемый обычный текст.Конечно, я мог бы полностью удалить их с поста, но я не считаю, что робот в этом случае прав.

1 Ответ

0 голосов
/ 02 мая 2011

становится ли метасимвол, указанный со ссылкой на символ, нормальным символом? Как должен * работать?

Нет, он становится a* и * все еще является метасимволом, который может быть экранирован как \*

Переходя к следующему вопросу:

С http://msdn.microsoft.com/en-us/library/ms256185.aspx

charRange ::= seRange | XmlCharRef | XmlCharIncDash

, где

XmlCharRef ::= ( '&#' [0-9]+ ';' ) | ('&#x' [0-9a-fA-F]+ ';' )

Но из w3

charRange ::= seRange | XmlCharIncDash

XmlCharRef не включен. Таким образом,

- ссылка на символ, действительная между [и] (внутри выражений класса символов (http://www.w3.org/TR/xmlschema-2/#dt-charexpr))?

нет

Нет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...