|
XSLT. Преобразование XML-XML с учетом отношения один-ко-многим.
|
|||
---|---|---|---|
#18+
Добрый день, Коллеги! Есть экспортированные данные в виде 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. 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.
Это древовидный список изделий и их комплектующих. В базе данных связь «один-ко-многим». Файл этот необходимо преобразовать для дальнейшего использования. Связи между изделиями и комплектующими задаются тегами <relation> и <occurrence>. В <occurrence> задаётся ссылка на параметры дочернего объекта, а <relation> указывает на «коды» дочернего и родительского объектов. Немного запутано, но не смертельно =) С 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. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65.
В результате получается XML: Результат получает некорректный т.к. в <Part> с <importID>=form_1 не должно быть тегов <ParentID> и <ChildID>. Корректный результат будет выглядеть так: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Архив с файлами во вложении. Как это сделать не понимаю. Помогите, пожалуйста! =) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2019, 11:43 |
|
XSLT. Преобразование XML-XML с учетом отношения один-ко-многим.
|
|||
---|---|---|---|
#18+
Oleg071984Результат получает некорректный т.к. в <Part> с <importID>=form_1 не должно быть тегов <ParentID> и <ChildID>.Их и нет. Они появляются от form_2 Чего вы хотели добиться этим кодом? Oleg071984 Код: xml 1. 2. 3. 4.
Потому, что по факту получается вот это Код: 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.
Ну и вот это Oleg071984 Код: xml 1.
проще записывать так Код: xml 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2019, 15:06 |
|
XSLT. Преобразование XML-XML с учетом отношения один-ко-многим.
|
|||
---|---|---|---|
#18+
_Vasilisk_, Опыта работы с XSL - 1 день, поэтому могут быть ошибки. Мне необходимо из form2 и form3 перекинуть тег "Идентификатор родительского объекта" в form4 и form5. Никак не могу понять как это сделать. Получается только все запихнуть в form1. Другими словами, form1 состоит из form4 и form5, а связь установлена form1.VART_ID > form4(5).Идентификатор родительского объекта. Как этого добиться в коде? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2019, 15:35 |
|
XSLT. Преобразование XML-XML с учетом отношения один-ко-многим.
|
|||
---|---|---|---|
#18+
Я так до конца и не понял задачу Есть набор узлов art Oleg071984 Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9.
которые описывают связи между объектам. Элемент art/relation указывает на основной объект. Элементы art/occurence/relation на дочерние. Запись Oleg071984 Код: xml 1.
обозначает, что нужно найти элемент с именем elementtype="form" и id =ref="form_4" Если все так, то тогда вопрос какие поля нужно достать из главного элемента, а какие из дочерних? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2019, 16:19 |
|
XSLT. Преобразование XML-XML с учетом отношения один-ко-многим.
|
|||
---|---|---|---|
#18+
_Vasilisk_, Да верно. Вот что должно получиться в итоге. Названия полей файла-источника я закомментил Код: 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.
Во вложении скрин из программы, в которой используются эти данные. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 09:53 |
|
XSLT. Преобразование XML-XML с учетом отношения один-ко-многим.
|
|||
---|---|---|---|
#18+
Oleg071984Вот что должно получиться в итоге.Ответа на вопрос_Vasilisk_какие поля нужно достать из главного элемента, а какие из дочерних?я так и не увидел ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 14:44 |
|
XSLT. Преобразование XML-XML с учетом отношения один-ко-многим.
|
|||
---|---|---|---|
#18+
Поля, которые достаются из главного элемента: 1. "VART_ID" 2. "ART_ID" 3. "Идентификатор версии объекта" 4. "Наименование" Поля, которые нужно достать из дочерних элементов: 1. "VART_ID" 2. "ART_ID" 3. "Идентификатор версии объекта" 4. "Наименование" 5. "Идентификатор родительского объекта" Я в прошлом посте написал комменты в коде. Oleg071984Вот что должно получиться в итоге. Названия полей файла-источника я закомментил ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 15:04 |
|
XSLT. Преобразование XML-XML с учетом отношения один-ко-многим.
|
|||
---|---|---|---|
#18+
Oleg071984, И для каждого объекта нужен свой <Part>? Или один <Part> на всю группу? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 15:33 |
|
XSLT. Преобразование XML-XML с учетом отношения один-ко-многим.
|
|||
---|---|---|---|
#18+
_Vasilisk_, Да, совершенно верно. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 15:40 |
|
XSLT. Преобразование XML-XML с учетом отношения один-ко-многим.
|
|||
---|---|---|---|
#18+
_Vasilisk_, Да. Для каждого объекта нужен свой <Part>. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 15:42 |
|
XSLT. Преобразование XML-XML с учетом отношения один-ко-многим.
|
|||
---|---|---|---|
#18+
Oleg071984Да, совершенно верно.Что из этого_Vasilisk_для каждого объекта нужен свой <Part>? Или один <Part> на всю группу?верно? Это два противоречащих друг-другу утверждений ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 15:43 |
|
XSLT. Преобразование XML-XML с учетом отношения один-ко-многим.
|
|||
---|---|---|---|
#18+
Oleg071984_Vasilisk_, Да. Для каждого объекта нужен свой <Part>. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 15:46 |
|
XSLT. Преобразование XML-XML с учетом отношения один-ко-многим.
|
|||
---|---|---|---|
#18+
Код: 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. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 16:56 |
|
XSLT. Преобразование XML-XML с учетом отношения один-ко-многим.
|
|||
---|---|---|---|
#18+
_Vasilisk_, приветствую! Попробовал сделать конвертацию на сайте https://www.freeformatter.com/xsl-transformer.html. Результат вот такой: Код: 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.
Почему то ParentID нет в form_4 и form_5. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 08:47 |
|
XSLT. Преобразование XML-XML с учетом отношения один-ко-многим.
|
|||
---|---|---|---|
#18+
Oleg071984Почему то ParentID нет в form_4 и form_5.Oleg071984 Код: 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.
Где здесь атрибут Oleg071984 Код: xml 1.
? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 13:58 |
|
XSLT. Преобразование XML-XML с учетом отношения один-ко-многим.
|
|||
---|---|---|---|
#18+
_Vasilisk_, Он здесь должен появиться после преобразования. Я же писал в комментариях. Берутся эти параметры из form_2 и form_3 Oleg071984 Код: xml 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 15:04 |
|
XSLT. Преобразование XML-XML с учетом отношения один-ко-многим.
|
|||
---|---|---|---|
#18+
Покажите, где здесь Oleg071984 Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
атрибутOleg071984 Код: xml 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 15:07 |
|
XSLT. Преобразование XML-XML с учетом отношения один-ко-многим.
|
|||
---|---|---|---|
#18+
_Vasilisk_, В этом фрагменте нет. И...? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 15:16 |
|
XSLT. Преобразование XML-XML с учетом отношения один-ко-многим.
|
|||
---|---|---|---|
#18+
Oleg071984В этом фрагменте нет. И...?Если в form_4 нет атрибута 'Идентификатор родительского объекта' то тогда откуда ему взяться в выходном файле? Если значение элемента ParentID должно браться именно из этого атрибута? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 15:33 |
|
XSLT. Преобразование XML-XML с учетом отношения один-ко-многим.
|
|||
---|---|---|---|
#18+
_Vasilisk_, Я думаю, что его можно взять из: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 15:49 |
|
XSLT. Преобразование XML-XML с учетом отношения один-ко-многим.
|
|||
---|---|---|---|
#18+
Oleg071984Я думаюВы можете много чего думать. Я мысли читать не умею Oleg071984его можно взять из:Из какого из восьми атрибутов. Если хотите нужный результат - внятно сформулируйте требования. И постарайтесь их не менять ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 16:03 |
|
XSLT. Преобразование XML-XML с учетом отношения один-ко-многим.
|
|||
---|---|---|---|
#18+
_Vasilisk_, Согласен, могу. Так вот чтобы исключить возможное непонимание я специально привёл конечный результат XML с комментариями. И потом ещё обсудил какие поля откуда брать. Предлагаю конструктивно подойти к вопросу. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 16:12 |
|
XSLT. Преобразование XML-XML с учетом отношения один-ко-многим.
|
|||
---|---|---|---|
#18+
Oleg071984я специально привёл конечный результат XML с комментариямиМой код ему полностью соответствует ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 16:44 |
|
XSLT. Преобразование XML-XML с учетом отношения один-ко-многим.
|
|||
---|---|---|---|
#18+
_Vasilisk_, В приведённом мной конечном результате: 1. Значения полей parentID взяты из form2 и form3 и добавлены в form4 и form5 в соответствии с заданным relation и occurence. 2. Form2 и Form3 отсутствуют. Результат работы Вашего кода не решает проблему. Вот зачем спорить? Я уверен, что с Вашими навыками в XSL изменения внести 10 минут времени. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 17:47 |
|
XSLT. Преобразование XML-XML с учетом отношения один-ко-многим.
|
|||
---|---|---|---|
#18+
Oleg071984Я уверен, что с Вашими навыками в XSL изменения внести 10 минут времени.Да. Если я пойму, что вам нужно. Сейчас я не понимаю. Вообще Oleg0719842. Form2 и Form3 отсутствуют.Почему они должны отсутствовать? Oleg071984 Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9.
Oleg071984Для каждого объекта нужен свой <Part>. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 14:45 |
|
|
start [/forum/topic.php?fid=14&msg=39821736&tid=1331930]: |
0ms |
get settings: |
11ms |
get forum list: |
6ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
49ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
429ms |
get tp. blocked users: |
0ms |
others: | 309ms |
total: | 810ms |
0 / 0 |