Я использую JRuby 1.7.18 и даже пробовал это в JRuby 9000 (последняя версия), где получаю ту же ошибку. Я использую библиотеки soap-4r
и nokogiri
для анализа XML-файла wsdl.
Когда нижеприведенная часть wsdl анализируется
<xs:pattern value="[\p{IsBasicLatin}]*"/>
Я получаю следующую ошибку
RegexpError: (RegexpError) invalid character property name <IsBasicLatin>: /\A[\p{IsBasicLatin}]*\z/n
nokogiri/XmlSaxParserContext.java:252:in `parse_with'
nokogiri/XmlSaxParserContext.java:252:in `parse_with'
nokogiri/XmlSaxParserContext.java:252:in `parse_with'
В Ruby 1.9, одной из версий Ruby, с которой совместим JRuby 1.7.18, я читал, что блоки символов, такие как \p{IsBasicLatin}
, не поддерживаются. Но скрипты типа \p{Latin}
поддерживаются. Я пытался изменить IsBasicLatin
на Latin
и даже попробовал несколько других, таких как InBasicLatin
и InBasic_Latin
, но все они возвращают одну и ту же ошибку.
Это есть как в JRuby 1.7.18, так и в JRuby 9000, которая является последней версией.
Что здесь происходит не так и как я могу это исправить?
In_Basic_Latin
. Может быть, кодировка регулярного выражения не является Unicode (модификаторu
для UTF-8, но он должен быть по умолчанию) или JRuby 9000 еще не поддерживает свойства символов (по крайней мере, те)? - person cremno   schedule 10.08.2015In_Basic_Latin
и получил ту же ошибку. Кроме того, я подумал, что это тоже проблема с Unicode, поэтому я просмотрел исходный код nokogiri, и его кодировка определенно устанавливается наUTF-8
. Там это жестко закодировано. Если только он не потеряется при переходе на Java. Если вы заметили в моем журнале ошибок выше, исходные файлы на самом деле являются классами Java. - person Graham   schedule 10.08.2015IsBasicLatin
неверно (в Ruby), ноIn_Basic_Latin
должно работать. Редактирование файла для исправления ошибки — это нормально, не так ли? - person cremno   schedule 10.08.2015In_Basic_Latin
. Я отредактировал файл wsdl, чтобы он использовал его вместоIsBasicLatin
. Думаю, мне придется связаться с разработчиками JRuby. - person Graham   schedule 10.08.2015