powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Подскажите XSLT: XML -> csv
9 сообщений из 9, страница 1 из 1
Подскажите XSLT: XML -> csv
    #39627546
addolgopolov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Подскажите, как получить на выходе формат csv.

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<?xml version="1.0"?>
<main id1="main_01" id="main_02">
    <level id="lv_01_01">
        <info>Info_01</info>
        <obj>obj_11</obj>
        <obj>obj_12</obj>
    </level>
    <level id="lv_01_02">
        <info>Info_02</info>
        <obj>obj_21</obj>
        <obj>obj_22</obj>
        <obj>obj_23</obj>
        <obj>obj_24</obj>
    </level>
</main>



авторmain_id01 main_id02 level_id Info obj
........ .......... ......... ........ ........
"main_01","main_02","lv_01_01","Info_01","obj_11"
"main_01","main_02","lv_01_01","Info_01","obj_12"
"main_01","main_02","lv_01_02","Info_02","obj_21"
"main_01","main_02","lv_01_02","Info_02","obj_22"
"main_01","main_02","lv_01_02","Info_02","obj_23"
"main_01","main_02","lv_01_02","Info_02","obj_24"
...
Рейтинг: 0 / 0
Подскажите XSLT: XML -> csv
    #39627561
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Подскажите XSLT: XML -> csv
    #39627567
addolgopolov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, это понятно.
Я не могу сделать, чтобы рекурсивно проходило по всем интересующим элементам, и склеивалось в строку CSV.
...
Рейтинг: 0 / 0
Подскажите XSLT: XML -> csv
    #39627681
Фридрих
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
addolgopolov,
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text"/>
  <xsl:template match="/">
    <xsl:apply-templates select="main/level/obj"/>
  </xsl:template>
<xsl:template match="obj">"<xsl:value-of select="ancestor::main[1]/@id1"/>","<xsl:value-of select="ancestor::main[1]/@id"/>","<xsl:value-of select="parent::level/@id"/>","<xsl:value-of select="preceding-sibling::info"/>","<xsl:value-of select="."/>"
</xsl:template>
</xsl:stylesheet>
...
Рейтинг: 0 / 0
Подскажите XSLT: XML -> csv
    #39627931
addolgopolov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Фридрих,

Большое, большое спасибо! )

Пытался сделать через for-each , оказалось намного элегантнее решение есть.
...
Рейтинг: 0 / 0
Подскажите XSLT: XML -> csv
    #39628033
Фридрих
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
addolgopolovПытался сделать через for-each , оказалось намного элегантнее решение есть.
тоже самое
Код: xml
1.
2.
3.
4.
5.
6.
7.
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text"/>
  <xsl:template match="/">
<xsl:for-each select="main/level/obj">"<xsl:value-of select="ancestor::main[1]/@id1"/>","<xsl:value-of select="ancestor::main[1]/@id"/>","<xsl:value-of select="parent::level/@id"/>","<xsl:value-of select="preceding-sibling::info"/>","<xsl:value-of select="."/>"
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
...
Рейтинг: 0 / 0
Подскажите XSLT: XML -> csv
    #39628165
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фридрих,

IMHO, хорошее решение, но какой "тарабарский" язык.
Возможно, из-за недостатка опыта в написании "заклинаний", я так и не смог понять, какие выражения в каких случаях использовать.
Может, есть какое-либо хорошее (не формальное, с примерами) описание xslt и x-path, но не ориентированное на построение html из xml (как во всех примерах), а посвященное именно структуре всей этой "магии"?
Какое-то описание для "императивных" и "типизированных" программистов, достаточное для написания своего xslt-процессора (т.к. понять что-то, означает способность это реализовать)?

Например:
<xsl:value-of select="ancestor::main[1]/@id1">
в "select=..." после равно, что может быть написано и что это будет значить?
Что будет "main[0]"?

Лично мне, использование регулярных выражений и xslt просто выносит мозг.
Простите, накипело. Ну и алкоголь,да.
...
Рейтинг: 0 / 0
Подскажите XSLT: XML -> csv
    #39628185
Фридрих
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
x1ca4064Фридрих,

IMHO, хорошее решение, но какой "тарабарский" язык.
Возможно, из-за недостатка опыта в написании "заклинаний", я так и не смог понять, какие выражения в каких случаях использовать.
Может, есть какое-либо хорошее (не формальное, с примерами) описание xslt и x-path, но не ориентированное на построение html из xml (как во всех примерах), а посвященное именно структуре всей этой "магии"?
Какое-то описание для "императивных" и "типизированных" программистов, достаточное для написания своего xslt-процессора (т.к. понять что-то, означает способность это реализовать)?

Например:
<xsl:value-of select="ancestor::main[1]/@id1">
в "select=..." после равно, что может быть написано и что это будет значить?
Что будет "main[0]"?

Лично мне, использование регулярных выражений и xslt просто выносит мозг.
Простите, накипело. Ну и алкоголь,да.
сколько много вопросов за раз...
1. "Может, есть какое-либо хорошее (не формальное, с примерами) описание xslt и x-path"
Есть такое описание на оффсайте W3C, главное понимать зачем этот язык вообще создавался!? А создавался он для работы с языком разметки - вот и всё, больше ни чего нет в этой технологии... Если ты точно понимаешь что такое XML, то и проблем не будет у тебя...На ютубе есть очень хорошие видеолекции с примерами, я там учился...
YouTube Video
...
Рейтинг: 0 / 0
Подскажите XSLT: XML -> csv
    #39628201
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
x1ca4064Может, есть какое-либо хорошее (не формальное, с примерами) описание xslt и x-path, но не ориентированное на построение html из xml (как во всех примерах), а посвященное именно структуре всей этой "магии"?
XSLT Introduction
XPath Tutorial
x1ca4064Какое-то описание для "императивных" и "типизированных" программистов, достаточное для написания своего xslt-процессора (т.к. понять что-то, означает способность это реализовать)?
Ээ.. я вот понимаю, как устроен автомобиль. Делать сам его я не соберусь никогда - ни собирать по частям, ни делать с нуля.
x1ca4064Например:
<xsl:value-of select="ancestor::main[1]/@id1">
в "select=..." после равно, что может быть написано и что это будет значить?
Что будет "main[0]"?
После = будет xpath-выражение. В приведенном случае выбирается первый предок текущего узла, который является тэгом main дефолтного неймспейса своего ближайшего предка, у которого этот неймспейс объявлен. У этого найденного узла выбирается атрибут c именем id1. Main[0] не вернет ничего, т.к. в xpath индексаторы one-based.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Подскажите XSLT: XML -> csv
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]