|
XSL и lookup (key) во внешнем документе
|
|||
---|---|---|---|
#18+
Есть у меня два XML-файла, data.xml и refs.xml. К ним есть XSL-файл. Содержимое под спойлером. data.xml Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
refs.xml Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
style.xsl Код: xml 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.
Мне нужно, используя key, обращаться к справочникам внешнего файла. Как я понял из документации, в XSLT2 для этого у key есть третий аргумент, т.е. можно написать key('state',@state,$ref). Однако когда я так пишу, получаю ошибку синтаксиса (недопустимое число аргументов key). Если вначале файла стилей пишу xsl:stylesheet version="2.0" , то получаю рантаймовую ошибку; сгенерированная страница выглядит так: Код: plaintext 1. 2. 3. 4. 5. 6.
Подскажите, как правильно указать, что используется XSLT2. Или же как использовать внешние справочники с XSLT1. Использование циклов (select="$ref/Data/References/States/State[@code=/Data/Result/DeviceList/DeviceQuery/@state]/@title") не подходит, справочники большие и страница генерируется долго, нужны именно key. ________________________ Мы смотрим с оптимизмом... ...в оптический прицел. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2012, 11:03 |
|
XSL и lookup (key) во внешнем документе
|
|||
---|---|---|---|
#18+
При переключении контекста: Код: xml 1. 2. 3. 4. 5. 6. 7.
key работает. Но у меня как раз контекст переключать нельзя, у меня key используется внутри select-выражений из других узлов. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2012, 11:14 |
|
XSL и lookup (key) во внешнем документе
|
|||
---|---|---|---|
#18+
Код: xml 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2012, 12:54 |
|
XSL и lookup (key) во внешнем документе
|
|||
---|---|---|---|
#18+
Это я пробовал первым делом, переменные в match не допускаются. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2012, 12:57 |
|
XSL и lookup (key) во внешнем документе
|
|||
---|---|---|---|
#18+
Alibek B.контекст переключать нельзя, у меня key используется внутри select-выражений из других узлов.Используйте переменные Код: xml 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2012, 16:20 |
|
XSL и lookup (key) во внешнем документе
|
|||
---|---|---|---|
#18+
Вообщем вопрос закрывается. Перевел все на XSLT2, трансформацию произвожу внешним процессором (SaxonHE), браузерам подсовываю готовый HTML. Единственный вопрос, если указываю метов вывода html, то элемент BR у меня трансформируется в <br></br>. Впрочем такое происходит со всеми тэгами, в том числе и непарными, но вот конкретно <br></br> в браузерах отображается как два перевода строки. Подскажите, как это убрать? Сейчас я просто произвожу массовую замену текста (заменяю "<br></br>" на "<br/>"). А можно ли сделать так, чтобы пустые тэги (или некоторые пустые тэги) выводились автономными, как это делается в случае типа вывода xml? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2012, 16:25 |
|
XSL и lookup (key) во внешнем документе
|
|||
---|---|---|---|
#18+
_Vasilisk_Используйте переменные Мне нужен именно key. С key страница формируется секунду, с циклами она формируется секунд 40. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2012, 16:27 |
|
XSL и lookup (key) во внешнем документе
|
|||
---|---|---|---|
#18+
Чем XHTML не устраивает? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2012, 16:31 |
|
XSL и lookup (key) во внешнем документе
|
|||
---|---|---|---|
#18+
Alibek B.С key страница формируется секунду, с циклами она формируется секунд 40.Какие циклы??? Вы код видели? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2012, 16:31 |
|
XSL и lookup (key) во внешнем документе
|
|||
---|---|---|---|
#18+
_Vasilisk_Чем XHTML не устраивает? Всем устраивает. Но разве такой output-method существует? Насколько я видел в описании, может быть только xml, html, text. _Vasilisk_Какие циклы??? Вы код видели? Тут циклов нет. Но в случае с более сложными проверками статичными переменными не обойтись. Например такой XML: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Мне нужно отобрать/посчитать строки /Data/QueryList/Query, у которых задан статус с классом class="1". Если использовать key, то это можно сделать так: //Query[key('state',@state)/@class='class1'] Если без key, тогда так: //Query[@state = /Data/Refs/States/State[@class='class']] (и это и будет цикл/перебор) Как тут может помочь переменная, если узел /Refs будет вынесен во внешний файл? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2012, 17:18 |
|
XSL и lookup (key) во внешнем документе
|
|||
---|---|---|---|
#18+
Alibek B.Насколько я видел в описании, может быть только xml, html, text.XHTML = XML Alibek B.Если без key, тогда так: //Query[@state = /Data/Refs/States/State[@class='class']] (и это и будет цикл/перебор)Естественно. А если так Код: xml 1. 2.
то не будет. P.S. Вы гонитесь за скоростью, а сами используете оператор // ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2012, 17:42 |
|
XSL и lookup (key) во внешнем документе
|
|||
---|---|---|---|
#18+
Alibek B.Насколько я видел в описании, может быть только xml, html, text.XHTML = XML Alibek B.Если без key, тогда так: //Query[@state = /Data/Refs/States/State[@class='class']] (и это и будет цикл/перебор)Естественно. А если так Код: xml 1. 2.
то не будет. P.S. Вы гонитесь за скоростью, а сами используете оператор // ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2012, 17:42 |
|
XSL и lookup (key) во внешнем документе
|
|||
---|---|---|---|
#18+
_Vasilisk_XHTML = XML Видимо нет, потому что три разных браузера при этом показывали пустую страницу. Хотя при выполнении команды "Просмотр HTML-кода" содержимое было правильным. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2012, 18:13 |
|
XSL и lookup (key) во внешнем документе
|
|||
---|---|---|---|
#18+
_Vasilisk_P.S. Вы гонитесь за скоростью, а сами используете оператор // Ну я ведь упросил код, чтобы он был компактным. Query у моем случае иерархический, с произвольной глубиной вложения. А вот то, что в переменной может быть набор узлов, а не скаляр, я не знал. Подумаю, как можно переделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2012, 18:15 |
|
XSL и lookup (key) во внешнем документе
|
|||
---|---|---|---|
#18+
Alibek B.Видимо нет, потому что три разных браузера при этом показывали пустую страницу. Хотя при выполнении команды "Просмотр HTML-кода" содержимое было правильным.DOCTYPE правильный был указан? Alibek B.Ну я ведь упросил код, чтобы он был компактным.Почувствуйте разницу между // и .// ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2012, 18:51 |
|
XSL и lookup (key) во внешнем документе
|
|||
---|---|---|---|
#18+
_Vasilisk_DOCTYPE правильный был указан? При выводе в HTML: Код: plaintext 1. 2. 3.
Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2012, 20:42 |
|
XSL и lookup (key) во внешнем документе
|
|||
---|---|---|---|
#18+
А ContentType правильный идет? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2012, 20:48 |
|
XSL и lookup (key) во внешнем документе
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2012, 20:51 |
|
XSL и lookup (key) во внешнем документе
|
|||
---|---|---|---|
#18+
Нет, дело не в mime-типах. Во-первых, у сформированного файла расширение html, поэтому он всегда отдается, как text/html. Только в тех случаях, когда это на самом деле xhtml, страница пустая. Во-вторых, я сейчас переименовал файл в index.xhtml и попробовал открыть страницу через IE. Браузер предложил сохранить файл. То есть хак по ссылке (замена Content-Type на text/html, когда браузер не поддерживает application/xhtml+xml) тут не причем. Где-то я читал, что IE интерпретирует документ как строгий XHTML только тогда, когда во-первых doctype установлен соответствующий (XHTML 1.0 Strict), а во-вторых mime-тип правильный (application/xhtml+xml). Но если mime-тип неправильный (text/html), это сказывается на некоторых отступлениях при рендере страницы, но не на том, что страница не рендерится вообще. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2012, 21:02 |
|
|
start [/forum/topic.php?fid=14&msg=37618393&tid=1332789]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
61ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 10ms |
total: | 153ms |
0 / 0 |