Не могли бы вы иметь более двух разделителей в будущем? Если это так, попробуйте этот XSLT, который можно легко расширить, чтобы иметь больше разделителей (одного символа). Просто измените параметры delimiters
в шаблоне ConvertXmlStyleToCamelCase
.
-
Next delimiter is
См. В действии на http://xsltfiddle.liberty-development.net/gWvjQeR , где я использовал третий разделитель в качестве примера.
Что касается двойного перевода, цель этого состоит в том, чтобы найти следующий разделитель в строке. Для этого (в XSLT 1.0) вам необходимо удалить все символы, которые не являются разделителями. Выполнение translate($text, $delimiters, '')
удаляет все разделители и возвращает все символы, которые не являются разделителями. Если вы затем примените этот результат к исходной строке, у вас останутся только разделители. Первый символ будет следующим разделителем.
У меня есть подобные проблемы на Солярисе с GCC - и я использую 'стандартную' технику:
CONFIG_SHELL=/bin/bash ./configure ...
(Или на самом деле я использую/bin/ksh, но установка огибающего var CONFIG_SHELL позволяет Вам говорить autoconf сценарии, которые окружают для использования.)
Я проверил настраивать сценарий на мерзавца и gd (они, оказалось, были извлечены) проверять, что это не было специфическим огибающим var GCC.
Где SHELL устанавливает на это? Что выполняется с/bin/sh, когда Вы хотите/bin/bash?
настройте сценарии, предназначены для выполнения куда угодно, даже на ужасно поврежденный и оболочки не-Bash, которые существуют в дикой природе.
Править: Какова точно проблема?
Другое редактирование: Возможно, Вы хотели бы, чтобы сценарий повторно выполнил себя, что-то вроде этого. Это - вероятно, багги:
if test "$SHELL" = "/bin/sh" && test -x /bin/bash; then
exec /bin/bash -c "$0" "$@"
fi
ln -f /bin/bash /bin/sh
:-P (Нет, это не серьезный ответ. Не поливайте из шланга свою систему путем выполнения его!)
В чем заключаются «огромные проблемы»? autoconf очень усердно работает над созданием скрипта настройки, который работает с очень большим процентом оболочек. Если у вас есть пример конструкции, которую пишет autoconf, которая не является переносимой, сообщите об этом в список рассылки autoconf. С другой стороны, если проблемы, с которыми вы столкнулись, являются результатом того, что ваш собственный код оболочки в configure.ac не является переносимым (например, вы используете bashisms), то решение состоит в том, чтобы либо прекратить использование непереносимого кода, либо потребовать пользователь должен явно установить SHELL или CONFIG_SHELL во время настройки.
Похоже, проблема, с которой вы столкнулись, заключается в среде пользователя, запускающего configure. В Linux у вашего пользователя SHELL установлен в / bin / bash, но в OS X он установлен в / bin / sh. Сценарий configure, сгенерированный autoconf, выполняет некоторые начальные тесты оболочки, в которой он запущен, и пытается повторно запустить себя с использованием другой оболочки, если предоставленной оболочке отсутствуют определенные функции. Однако, если вы вводите непереносимый код оболочки в configure.ac, вы нарушаете одну из основных философий autoconf, а именно, что скрипты configure должны быть переносимыми. Если вы действительно хотите использовать bashisms в вашем коде оболочки, то вам необходимо, чтобы ваш пользователь передавал SHELL = / bin / bash в качестве аргумента скрипту настройки. Это не ошибка autoconf, но многие сочтут это ошибкой в сборке вашего проекта.
если вы вводите непереносимый код оболочки в configure.ac, то вы нарушаете одну из основных философий autoconf, а именно, что скрипты configure должны быть переносимыми. Если вы действительно хотите использовать bashisms в вашем коде оболочки, то вам необходимо, чтобы ваш пользователь передавал SHELL = / bin / bash в качестве аргумента скрипту настройки. Это не ошибка autoconf, но многие сочтут это ошибкой в сборке вашего проекта. если вы вводите непереносимый код оболочки в configure.ac, то вы нарушаете одну из основных философий autoconf, а именно, что скрипты configure должны быть переносимыми. Если вы действительно хотите использовать bashisms в своем коде оболочки, тогда вам необходимо, чтобы ваш пользователь передавал SHELL = / bin / bash в качестве аргумента сценария настройки. Это не ошибка autoconf, но многие сочтут это ошибкой в сборке вашего проекта.