Hello!
Жень, я тоже не до конца вьехал почему нужно несколько выходных
файлов. Цель - получить HRC из XSD для разбора расширения XSLT.
xs:redefine не поддерживается, согласен.
Не, к этой конкретной задаче оно прямого отношения уже не имеет.
Несколько файлов -- это один из возможных способов как раз реализовать
эту самую поддержку redefine. Если там все лепить в один файл, придется
сильно извращаться с именами переопределяемых сущностей. Лучше их по
разным неймспейсам разнести...
Ну или как вариант -- предусмотреть что-нибудь вроде вложенных пакетов,
которые глобально не видны. Кстати, де-факто такие структуры уже
используются (в том же xpath.hrc), и колорер из-за них мусорит в лог...
Но можно пойти более тупым путем - взять xslt.xsd и в него вписать
нужные изменения. Понятно что не совсем прямо (redefine выглядел бы
лучше), но xslt.xsd вряд-ли будет еще меняться - так что не так уж оно
и криво.
Будет еще один XSD являющийся модификацией xslt.xsd и для него пишется
простейший custom.*.xml для впихивания туда лиспа или чего там
требуется впихнуть...
Там все не так просто. Посмотри сколько всего наворочено в
custom.xslt.xml. Если делать методом copy/paste -- это все тоже придется
копировать. Да и сам такой подход мне сильно не нравится... Кстати,
XSieve относится к другому пространству имен, так что схему для его
элементов все равно придется писать отдельно, хоть их там всего две штуки.
Вообще, я думаю сделать проще -- xsieve.xsd и порожденный им пакет +
небольшой hrc-враппер, который запихивает его элементы в
xslt:top-levelGroup-group и xslt:instructions-group.
Технические проблемы я здесь вижу с особенностями формата XML -
возможностью юзать " ( внутри того-же лиспового кода - текст
с такими вкраплениями колореру не по силам будет разобрать.
Ну, с этим уж ничего не сделаешь. Кстати, такого рода вещи наводят меня
на мысли, что в колорере надо ввести что-то вроде "слоев парсинга", для
случая, когда один язык включается в другой, и квотится по его законам.
Т.е. идея (на перспективу / на colorer-6) примерно такая:
Во "внешнем" языке некоторые блоки помечаются, как включающие, помимо
какой-нибудь схемы, допустим, "escaped-string", "внутренний" язык. И
этому "внутреннему" языку содержимое блока передается уже
"расковыченное" (как именно его обрабатывать -- должно определяться
специальными регекспами). А дальше на ту разметку, которую дало
применение схемы "внутреннего" языка, накладывается применение схемы
"escaped-string" "внешнего" языка...
--
WBR, Eugene
-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642