|
Выдернуть данные по неполному пути
|
|||
---|---|---|---|
#18+
Есть следующая структура xml(расписал один offer, остальные типовые)..задача стоит в том, чтобы я через командную строку Xpath-ом указывал, какой параметр мне нужно выдернуть относительно offer. То есть, это должно выглядеть так: msxsl.exe Исходник.xml Стили.xsl -o Результат.csv SecondColumn=param[2] или msxsl.exe Исходник.xml Стили.xsl -o Результат.csv SecondColumn=price/Cat <shop> <offers> <offer id="1" available="true"> <url> https://...</url> <price> <Cat>1</Cat> <Cat>2</Cat> </price> <currencyId>RUR</currencyId> <categoryId>1481</categoryId> <picture>SomeURL.jpg</picture> <name>Product</name> <model>GJSER-1</model> <vendor>Roomaif</vendor> <description>Мягкие кожанные сандали<description> <param>229</param> <param>332</param> <param name="Размер">26</param> <barcode>4690507031995</barcode> <offer> ..... </offer> <offer> ..... </offer> <offers> <shop> Мой xslt: <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl=" http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user=" http://www.contoso.com"> <xsl:output omit-xml-declaration="yes" indent="yes"/> <xsl:param name="SecondColumn" select="SecondColumn"/> <xsl:template match="offer"> <xsl:for-each select="msxsl:node-set($SecondColumn)"> <xsl:value-of select="." /> </xsl:for-each> </xsl:template> <xsl:template match="/"> <xsl:apply-templates select="yml_catalog/shop/offers/offer"> <xsl:with-param name="SecondColumn" /> </xsl:apply-templates> </xsl:template> </xsl:stylesheet> На выходе должен получиться csv файл Плиз хэлп, не вижу вообще никакого решения, а в XSLT новичок ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2019, 15:02 |
|
Выдернуть данные по неполному пути
|
|||
---|---|---|---|
#18+
Принципиальная ошибка zingerion Код: xml 1.
$SecondColumn у вас строка и в набор узлов она не конвертируется. Чтобы из нее получить набор узлов нужно ее вручную распарсить и самому выполнить все XPath запросы. Вторая ошибка zingerion Код: xml 1.
если вам на выходе нужен csv, то сообщите об этом процессору Код: xml 1.
Третья ошибка. Вот эта строка zingerion Код: xml 1.
обозначает "Объявить параметр SecondColumn. А если его значение не было передано снаружи, то присвоить ему значение узла SecondColumn в текущем контексте. Такого узла у вас нет в принципе. В итоге получилось вот так Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 13:46 |
|
Выдернуть данные по неполному пути
|
|||
---|---|---|---|
#18+
Еще вариант решения, т.к. все равно используется MSXML написать на JS функцию, которая вернет набор узлов по указанному XPath Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 15:18 |
|
Выдернуть данные по неполному пути
|
|||
---|---|---|---|
#18+
_Vasilisk_, Спасибо за ответ! $SecondColumn является строкой т к является глобальным параметром? Или из-за того, что передается в коммандной строке? Я так понимаю, для подобного: param[2] нужно прописать отдельный template со своим mode? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2019, 18:28 |
|
Выдернуть данные по неполному пути
|
|||
---|---|---|---|
#18+
zingerionИли из-за того, что передается в коммандной строке?Из-за этого. Из программы можно передать любой VARIANT zingerionЯ так понимаю, для подобного: param[2] нужно прописать отдельный template со своим mode?Нет. Нужно дополнить парсинг в_Vasilisk_ Код: xml 1.
JS функция не подошла? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 14:02 |
|
Выдернуть данные по неполному пути
|
|||
---|---|---|---|
#18+
_Vasilisk_, нужно на чистом xslt, хотя решение на js работает Воплотил замысел как-то так(убрал запяты, т к нужны "|", их я перенес в offer, т к помимо всего прочего нужно вывести offer id) Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 16:53 |
|
Выдернуть данные по неполному пути
|
|||
---|---|---|---|
#18+
Вот это zingerion Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
делается так Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2019, 18:42 |
|
|
start [/forum/topic.php?fid=14&msg=39858051&tid=1331920]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
68ms |
get topic data: |
12ms |
get forum data: |
4ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
others: | 259ms |
total: | 428ms |
0 / 0 |