|
|
|
Удаление ноды из key()
|
|||
|---|---|---|---|
|
#18+
Добрый день! Есть хмл Код: 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. Код: 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. Я сделал такое преобразование: Код: 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. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Пробовал такую запись <xsl:copy-of select="key('operationO', .)[name()!='Group']"> и <xsl:copy-of select="key('operationO', .[name()!='Group'])"> Результат тот же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2008, 12:58 |
|
||
|
Удаление ноды из key()
|
|||
|---|---|---|---|
|
#18+
ключика на самом деле достаточно и одного. я бы сделал как-то так: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2008, 23:00 |
|
||
|
Удаление ноды из key()
|
|||
|---|---|---|---|
|
#18+
Большое спасибо за ответ. Только у меня осталось 2 вопоса. Почему записи типа <xsl:copy-of select="key('operationO', .)[name()!='Group']">и <xsl:copy-of select="key('operationO', .[name()!='Group'])"> (не могу понять как XSLTпроцессор обрабатывает эту инструкцию) не удаляют из множества нод возвращаемых функцией key() ноды с именем Group. И 2рой вопрос: существует ли способ многократного преобразования одной и той же ноды т.е. первый раз я получаю Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2008, 12:08 |
|
||
|
Удаление ноды из key()
|
|||
|---|---|---|---|
|
#18+
alexandererПочему записи типа <xsl:copy-of select="key('operationO', .)[name()!='Group']">и <xsl:copy-of select="key('operationO', .[name()!='Group'])"> (не могу понять как XSLTпроцессор обрабатывает эту инструкцию) не удаляют из множества нод возвращаемых функцией key() ноды с именем Group.а почему они должны это делать? <xsl:copy-of> делает полную репликацию того узла, который вы указываете в select. вариант <xsl:copy-of select="key('operationO', .[name()!='Group']) у меня вообще ругнулся на unexpected token "[name()!='Group']" а <xsl:copy-of select="key('operationO', .)[name()!='Group']"> делает то, что Вы ему и говорите. сделай копию узла, но только если имя не 'Group'. Т.к. у нас имя Operation - он его полностью и копирует. Сделайте <xsl:copy-of select="key('operationO', .)[name()!='Operation']"> и поймете разницу. alexandererИ 2рой вопрос: существует ли способ многократного преобразования одной и той же ноды т.е. ... а потом на этот результат наложить что-нибудь типа темплейта котороый скопирует все кроме ноды Group.так по-моему нельзя в трансформациях вы работает с данными, которые в изначальном XML - не промежуточные расчеты. Конечно, никто Вас не ограничивает сделать трансформацию в два этапа, а дальше у себя, смотря где это нужно, объединить это все в одно действие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2008, 12:57 |
|
||
|
Удаление ноды из key()
|
|||
|---|---|---|---|
|
#18+
PS а чем Вас вариант не устроил, который я привел? Если нужно динамически аттрибуты по <Operation>, можно вместо: Код: plaintext 1. 2. 3. Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2008, 14:05 |
|
||
|
Удаление ноды из key()
|
|||
|---|---|---|---|
|
#18+
Нет, меня все устроило в Вашем варианте. Проблема в том, что не понимая до конца механизма функции key() я не могу понять как решить более общюю задачу т.е. из Код: 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. Код: 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. Придумал только Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2008, 15:37 |
|
||
|
Удаление ноды из key()
|
|||
|---|---|---|---|
|
#18+
Кажется начал немного понимать. Для <xsl:key match="Operation" name="oper" use="@orgId"/> набор нод это Код: plaintext 1. 2. 3. 4. 5. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2008, 18:33 |
|
||
|
Удаление ноды из key()
|
|||
|---|---|---|---|
|
#18+
Хм... Вобщем как-то получилось. Создал 3 ключа Код: plaintext 1. 2. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. <xsl:if test="key('oper', $currentOrgId)/Group/@id = $grp"> не ясно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2008, 14:17 |
|
||
|
Удаление ноды из key()
|
|||
|---|---|---|---|
|
#18+
альтернативый вариант: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2008, 21:37 |
|
||
|
Удаление ноды из key()
|
|||
|---|---|---|---|
|
#18+
Все таки результат мне не понятен... Я несколько упростил хмл Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. Код: 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. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2008, 13:52 |
|
||
|
Удаление ноды из key()
|
|||
|---|---|---|---|
|
#18+
alexandererкак такое может быть? Такое впечатление что в <xsl:if> key('oper', $currentId)/Group/@id пробегает по всем Group/@id каждой ноды из набора возвращаемых нод, однако <xsl:value-of select="key('oper', $currentId)/Group/@id"/> возвращает только первое id. Что это? Особенность <xsl:if>?это скорее особенность <xsl:value-of> причем только для XSLT 1.0: INPUT XML: Код: plaintext 1. 2. 3. 4. XSLT 1.0: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. RESULT for XSLT 1.0: Код: plaintext 1. 2. 3. 4. для того же XML применим XSLT 2.0: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. RESULT for XSLT 2.0: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2008, 19:17 |
|
||
|
Удаление ноды из key()
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. Attributes select Required. The Expressions to be evaluated against the current context. The results are converted to a string, as by a call to the string() function. A node-set is converted to a string by inserting the string value of the first node in the set. С уважением, Vasilisk ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2008, 23:09 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=14&tid=1333849]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
59ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
| others: | 246ms |
| total: | 404ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...