|
Как перенести элемент на уровень выше с помощью XSLT?
|
|||
---|---|---|---|
#18+
Уважаемые, подскажите пожалуйста, как перенести элемент на уровень выше? Вот моя предыдущая тема по конвертеру FB2DocBook , позволяющему сделать из FB2 документ PDF или EPUB трансформацией FB2 — DocBook — XSL-FO — PDF|EPUB: http://www.sql.ru/forum/actualthread.aspx?tid=836994 Теперь возникла проблема со сносками внутри сносок. DocBook-XSL допускает вложения <footnote> одного в другое, а FOP поддерживает только один уровень (вылетая с ошибкой при большем их числе). Сейчас я сделал ссылки второго и ниже уровней вложения как простой текст внутри сноски первого уровня. Можно ли как-то переносить сами сноски на уровень выше, или хотя бы в самый конец сноски первого уровня как простой текст? Вот код шаблона трансформаций, ответственный за ссылки: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2011, 13:19 |
|
Как перенести элемент на уровень выше с помощью XSLT?
|
|||
---|---|---|---|
#18+
kaznelson, Можно упростить вопрос? В чем суть проблемы? Сделать из Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2011, 13:52 |
|
Как перенести элемент на уровень выше с помощью XSLT?
|
|||
---|---|---|---|
#18+
refreg Cовершенно верно. Сейчас я добился только такого результата, т.е. текст вставляется прямо на место маркёра сноски: Код: plaintext 1. 2. 3. 4. 5. 6.
Вынести вложенные сноски наверное более корректно, однако такой вариант тоже подойдёт: Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2011, 14:04 |
|
Как перенести элемент на уровень выше с помощью XSLT?
|
|||
---|---|---|---|
#18+
kaznelson, Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2011, 14:09 |
|
Как перенести элемент на уровень выше с помощью XSLT?
|
|||
---|---|---|---|
#18+
refreg, Псмотрел, но не понял как прикрутить к шаблону. Элемента <footnotes > в трансформации нет, а результирующий *.docbook с вложенными сносками выглядит так: Код: plaintext
По сути всё, что я могу сделать, происходит в a_footnote_in ... PS: note-link задаётся в начале шаблона: Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2011, 14:44 |
|
Как перенести элемент на уровень выше с помощью XSLT?
|
|||
---|---|---|---|
#18+
kaznelson, xml Код: plaintext 1. 2. 3. 4.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2011, 14:54 |
|
Как перенести элемент на уровень выше с помощью XSLT?
|
|||
---|---|---|---|
#18+
Или так, если хочется рекурсии (второй вариант) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2011, 15:01 |
|
Как перенести элемент на уровень выше с помощью XSLT?
|
|||
---|---|---|---|
#18+
refreg, Так не получается, по крайней мере у меня. :( Давайте я попробую объяснить, как работает этот шайтан-конвертер. Дело в том, что элемента <footnote> в схеме FB2 нету. Есть специальный тип тела <body name="notes "> и ссылки вида <a l:href="#n_18" type="note ">[18]</a>, ведущие на элементы <section id="n_18"> в этом теле. Конвертер с этим телом работает просто - выдёргивает секции со сносками а само тело удаляет. Так что обрабатывать пакетно вероятно не получится, т.к. нечего. Соответственно <footnote> появляются непосредственно в процессе трансформации в *.docbook, в приведённом мной куске шаблона (а именно - в <xsl:template name="a_footnote"> ). ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2011, 15:31 |
|
Как перенести элемент на уровень выше с помощью XSLT?
|
|||
---|---|---|---|
#18+
kaznelson, Ну, приведите исходный xml, и результирующий xml - маленький пример, решение которого дало бы ответ: как сделать вашу реальную задачу. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2011, 15:44 |
|
Как перенести элемент на уровень выше с помощью XSLT?
|
|||
---|---|---|---|
#18+
refreg, Вот архив: http://rghost.ru/4998268 fb2docbook.xsl - шаблон трансформаций, где сейчас сноски в сносках заменяются на текст в сносках; ___Test.fb2 - тестовая книга с вложенными сносками; 1___Test.fb2.docbook - готовый файл docbook со сносками в сносках, на которых FOP валится; 2___Test.fb2.docbook - готовый файл с заменёнными на текст сносками, сделаный через приложенный fb2docbook.xsl . Могу дать здесь как листинги, если так будет удобнее... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2011, 16:17 |
|
Как перенести элемент на уровень выше с помощью XSLT?
|
|||
---|---|---|---|
#18+
kaznelson, Ясно... Видимо, все таки лучше "сноску в сноске" писать в этой же сноске с новой строки (можно звездочку поставить перед началом такой сноски). Может, вечером гляну, если никто не поможет к этому времени. Навскидку, 10445988 - этот вариант те поможет ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2011, 17:06 |
|
Как перенести элемент на уровень выше с помощью XSLT?
|
|||
---|---|---|---|
#18+
refreg, ОК, буду ждать. авторвсе таки лучше "сноску в сноске" писать в этой же сноске с новой строки В общем да, только наверное придётся как-то расширять шаблон <xsl:template name="a_footnote"> , чтобы он понимал сноски в сносках и мог их перемещать... Если что - вот весь конвертер, 33 Мб: fb2docbook_kdx.7z Кроме Java ему ничего не надо, распаковать куда угодно и запустить confsetup.ехе . Тестовый FB2 в комплекте есть со сноской в сноске (глава "Цитаты"), достаточно перетащить на btransformer.cmd ... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2011, 17:42 |
|
Как перенести элемент на уровень выше с помощью XSLT?
|
|||
---|---|---|---|
#18+
kaznelson, Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2011, 20:47 |
|
Как перенести элемент на уровень выше с помощью XSLT?
|
|||
---|---|---|---|
#18+
refreg, К сожалению, не получается. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2011, 12:14 |
|
Как перенести элемент на уровень выше с помощью XSLT?
|
|||
---|---|---|---|
#18+
Если я выхожу за пределы шаблоша <xsl:template name="a_footnote"> , то рушится обработка других элементов. А сам a_footnote обрабатывает только одну ссылку, полученную из цикла <xsl:template match="fb:a"> , и прикрепить вложенную ссылку в произвольное место вышестоящей не выходит... ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2011, 12:21 |
|
|
start [/forum/topic.php?fid=14&msg=37192074&tid=1332982]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
135ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 328ms |
total: | 546ms |
0 / 0 |