|
Шаблон разбора строки с разделителями xslt
|
|||
---|---|---|---|
#18+
Вход: <list> ... <tourists>10/null/IVANOVA/OLGA/MRS|8/2005-09-30/IVANOV/ALEXEY/MR|7/2008-12-15/IVANOVA/ALESYA/MRS|</tourists> ... </list> Ожидаемый результат: <touristInfo> ... <touristGroup> <tourist type='ADT'> <prefix>MRS</prefix> <name>OLGA</name> <surname>IVANOVA</surname> </tourist> <tourist type='CHD' birthDate='2005-09-30'> <prefix>MR</prefix> <name>OLEXEY</name> <surname>IVANOV</surname> </tourist> <tourist type='INF' birthDate='2008-12-15'> <prefix>MRS</prefix> <name>ALESYA</name> <surname>IVANOVA</surname> </tourist> </touristGroup> ... </touristInfo> Подскажите как привети исходный xml файл к виду, представленному в ожидаемом результате ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2017, 15:32 |
|
Шаблон разбора строки с разделителями xslt
|
|||
---|---|---|---|
#18+
Вальтрон, Для начала сформулировать правила трансформации. А потом воспользоваться функциями substring-before(), substring-after() ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2017, 15:56 |
|
Шаблон разбора строки с разделителями xslt
|
|||
---|---|---|---|
#18+
_Vasilisk_, Спасибо! Я пока совсем профан в этом деле, решил познакомится с xslt на реальных задачах. Поясните пожалуйста, что подразумевается под формулировкой правил трансформации? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2017, 17:14 |
|
Шаблон разбора строки с разделителями xslt
|
|||
---|---|---|---|
#18+
Вальтрончто подразумевается под формулировкой правил трансформации?По какому принципу Вы собираетесь исходную строку раскладывать по различным тегам ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2017, 18:25 |
|
Шаблон разбора строки с разделителями xslt
|
|||
---|---|---|---|
#18+
_Vasilisk_, Подскажите пожалуйста, где про это можно подробно почитать ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2017, 23:21 |
|
Шаблон разбора строки с разделителями xslt
|
|||
---|---|---|---|
#18+
ВальтронПодскажите пожалуйста, где про это можно подробно почитать ни где про это не прочитаешь, это чистая логика в программировании...чтоб было понятно о чем тебя спросил _Vasilisk_ делаю поправку: 1. у тебя в входном файле строка - в которой есть два разделителя (так или как?) 2. в исходном файле у тебя появляются значения которых нет в входном файле type='ADT'(откуда они беруться???) 3. birthDate='2005-09-30' - этот параметер тоже не везде (и как с этим жить?) 4. и т.д. Тебе нужно научиться правильно и последовательно понять откуда что береться и куда вставляется....и главное понять как работать с данными если они не по шаблону приходят? если ты только начал изучать технологию XSLT то тебе так же необходимо написаться терминологией чтоб понимать те советы которые тут будут писать иначе будет сложно с тобой общаться.. наберись терпения и посмотри видео уроки на ютубе ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2017, 04:00 |
|
Шаблон разбора строки с разделителями xslt
|
|||
---|---|---|---|
#18+
Фридрих, Спасибо огромное, добрый человек! По поводу задания, полностью звучит оно так: Необходимо написать шаблон для разбора строки с разделителями Каждая строка - это список туристов, путешествующих вместе. Информация о каждом туристе отделена символом '|'. Информация по каждому туристу включает: тип туриста (10 — взрослый, 8 — ребенок, 7 — младенец), день рождения для детей и младенцев, фамилия, имя, префикс. Вся перечисленная выше информация разделяется символом '/'. Необходимо составить xml документ, содержащий данные по всем туристам, сохраняя их принадлежность к группе. Ну и пример описан выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2017, 06:36 |
|
Шаблон разбора строки с разделителями xslt
|
|||
---|---|---|---|
#18+
Вальтрон, звучит так, как будто ты фрилансер, который нарвался на не тривиальную задачу... ты писал "Я пока совсем профан в этом деле, решил познакомится с xslt на реальных задачах" так хоть напиши пару строк кода, чтоб было что тебе исправлять и учиться, а то ты просишь готовое решение, а на готовом решении ты не научишься... _Vasilisk_ тебе уже дал подсказку как работать со строками... если ты не хочешь тут ни кого обманывать то заплати и получи результат _Vasilisk_ тебе поможет, я не зарабатываю на этом.. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2017, 07:58 |
|
Шаблон разбора строки с разделителями xslt
|
|||
---|---|---|---|
#18+
Вальтрон, чуть не забыл, твой пример не тот на котором нужно начинать учиться... потому что нужно делать "временное дерево", что заставляет точно знать какой процессор будет делать преобразование? Так же нужно сделать "справочник" чтоб расшифровывать тип туриста и так же надо знать что делать если возраст не указан или не указанно еще какие данные? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2017, 08:13 |
|
Шаблон разбора строки с разделителями xslt
|
|||
---|---|---|---|
#18+
Фридрих, я не хочу никого обманывать и я не фрилансер. Это тестовое задание для участия в конкурсе на бесплатные курсы по xslt разработке. В требованиях ничего сверхъестественного не было указано, я не думал, что задание окажется таким сложным. Для решения этого задания вроде как может пригодиться tokenize, но я не могу уловить структуру конечного файла, как сделать так, что бы в нем появились теги <prefix>, <name>, <surname> и другие, которых нет в исходном файле. В любом случае спасибо за советы и ссылку на видеоуроки ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2017, 12:25 |
|
Шаблон разбора строки с разделителями xslt
|
|||
---|---|---|---|
#18+
Фридрих, Видимо ответом на мой вопрос про теги кроется в понятии временного дерева) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2017, 12:28 |
|
Шаблон разбора строки с разделителями xslt
|
|||
---|---|---|---|
#18+
Вальтрон, всё верно, нужно использовать расширения в котором есть tokenize поэтому я написал перечень вопросов.... ты хоть что то напиши, хоть начало самого преобразования... я ведь писал что нужно видеть твою логику мышления... и ответь на вопросы 1. какой процессор используется? 2. есть ли для него расширения EXSLT? 3. где будет делаться преобоазование? на сервере или на клиенте? 4. где список того, что означает ребенок или взрослый? 5. что делать если не указан возраст? 6. что делать если не будет хватать других данных? имени или фамилии 7. что делать если будут те данные которые тут вообще не указаны? посмотри видео урок и там всё ясно и так хорошо разжеванно, откуда беруться новые теги(ты их сам пишешь в шаблоне).... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2017, 14:11 |
|
Шаблон разбора строки с разделителями xslt
|
|||
---|---|---|---|
#18+
Вальтрон, и зачем тебе куда то записываться? в этом видео есть всё для начала, этот курс на самом деле классный, делай там задания которые есть и будет тебе халявные курсы...а что не понятно будет - спрашивай на форуме или иши в англоязычном гугле примеры....я так сам и учил... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2017, 14:31 |
|
Шаблон разбора строки с разделителями xslt
|
|||
---|---|---|---|
#18+
Фридрихнужно делать "временное дерево"Не нужно. Обычный линейный рекурсивный разбор с прямым выхлопом. Хотя да, с временным деревом будет немного читабельней ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2017, 14:57 |
|
Шаблон разбора строки с разделителями xslt
|
|||
---|---|---|---|
#18+
Фридрих, по заданию нужно преобразовать следующий xml файл: <?xml version="1.0" encoding="UTF-8"?> <list> <tourists>10/null/IVANOVA/OLGA/MRS|8/2005-09-30/IVANOV/ALEXEY/MR|7/2008-12-15/IVANOVA/ALESYA/MRS|</tourists> <tourists>10/null/PETROV/SERGEI/MR|10/null/PETROVA/KATERINA/MRS|8/2005-09-30/PETVOV/ANDREY/MR|7/2008-12-15/PETROVA/ALLA/MRS|10/null/PETROVA/MARGARITHA/MRS|</tourists> <tourists>10/null/WERDOV/PAVEL/MS|7/2008-12-15/WERDOVA/OKSANA/MRS|</tourists> <tourists>10/null/KAVADERKO/SASHA/MRS|</tourists> <tourists></tourists> </list> Рекомендуется пользоваться: http://www.w3schools.com/ На Ваши вопросы я ответить не могу. Это вся информация, которая у меня есть. Я пока что разобрался как выводить строки в таком виде, каком они есть: <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl=" http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <xsl:for-each select="list/tourists"> <p><xsl:value-of select="."/></p> </xsl:for-each> </xsl:template> </xsl:stylesheet> Сейчас буду пробовать выводить не все данные в строке. Пользуюсь статьей http://www.codenet.ru/webmast/xml/xslt/4_1.php ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2017, 15:20 |
|
Шаблон разбора строки с разделителями xslt
|
|||
---|---|---|---|
#18+
_Vasilisk_, человек решает сложноватую задачу для начинающего и уже пишет про exslt...вот мне и не понятно стало некоторые моменты... ты ведь понимаешь что решать задачи можно только и исключительно любимым методом.... а те видео которые я предложил - я на них сам учился лежа на диване, тупо пересматривал чтоб понять сам принцип преобразования....и аж только потом стал что то сам делать...ты же понимаешь что нет смысла учить xslt как стихотворение...вот как то пытаюсь доносить это до людей... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2017, 16:00 |
|
Шаблон разбора строки с разделителями xslt
|
|||
---|---|---|---|
#18+
Вальтрон, ты в каком редакторе работаешь? или через браузер или как? где делаешь преобразование? вот тебе страница про твое tokenize http://exslt.org/str/functions/tokenize/index.html ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2017, 16:03 |
|
Шаблон разбора строки с разделителями xslt
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2017, 16:06 |
|
Шаблон разбора строки с разделителями xslt
|
|||
---|---|---|---|
#18+
Вальтрон, вот это как раз таки и не понятно, будут ли работать exslt!? пробуй сделать в браузере мозила может там сработает, вроде пишут что должно.... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2017, 16:21 |
|
Шаблон разбора строки с разделителями xslt
|
|||
---|---|---|---|
#18+
Вальтрон, вроде работает то что ты отправил вот тебе еще пример http://xpoint.ru/know-how/XML/XSLT/CookBook/Split ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2017, 16:29 |
|
Шаблон разбора строки с разделителями xslt
|
|||
---|---|---|---|
#18+
Фридрих, На основании нескольких статей, в том числе Вами предложеных, у меня получился такого вида код: <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl=" http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <xsl:for-each select="list/tourists"> <xsl:variable name="varStartWith">2005</xsl:variable> <xsl:variable name="vartourists"> <xsl:value-of select="."/></xsl:variable> <xsl:if test="contains($vartourists,$varStartWith)"> <xsl:value-of select="."/><p/> <xsl:for-each select="tokenize($vartourists, '|')"> <xsl:value-of select="."/> </xsl:for-each> </xsl:if> </xsl:for-each> </xsl:template> </xsl:stylesheet> Но он к сожалению не работает. Может Вы подскажете что здесь не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2017, 17:55 |
|
Шаблон разбора строки с разделителями xslt
|
|||
---|---|---|---|
#18+
Вальтрон, вот тебе xml Код: xml 1. 2.
вот тебе xsl Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
проверь на работоспособность этот пример, будут ли ошибки, если ошибок нет, то 1. сравни загаловки в файлах 2. тебе нужно два раза разбивать строку по разным разделителям 3. результат разбивок записать во временное дерево 4. из временного дерева создавать те теги которые тебе не обходимы для вывода в конечный файл не забудь указать префикс для node-set - это чтоб можно было обратиться к временному дереву... вот такой вот план трансформации... ну и очень важно соблюдать синтаксис и велформ файла... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2017, 18:59 |
|
Шаблон разбора строки с разделителями xslt
|
|||
---|---|---|---|
#18+
Фридрих, В общей с этой задачей я не справлюсь, времени все меньше, разбираться еще видимо долго. Срок сдачи - завтра) Может поможете с другим заданием? Напишите шаблоны работы со строками Исходный документ – Task2.xml Файл содержит 4 элемента, содержимое каждого из которых должно измениться: • Для <str1>: Изменить порядок символов в тексте на противоположный. Пример. “scrap them all” “lla meht parcs” • Для <str2>: Вычленить из текста все цифры. Пример. “s1cr23ap 4 t5hem6 all789” “123456789” • Для <str3>: Вычленить из текста все, кроме цифр. Пример. “s1cr23ap 4 t5hem6 all789” “scrap them all” • Для <str4>: Подсчитать количество пробелов в тексте (включая переводы строки). Пример. “scrap them all” 2 Содержание Task2.xml в прикрепленном файле. я нашел описание функции, которая может мне помочь, но не могу разобраться как ее применить к данному случаю. Может Вы поясните немного подробней? Заранее благодарен. Задача Требуется изменить порядок символов в строке на противоположный. Решение XSLT 1.0 Приведенный ниже шаблон обращает строку $input неочевидным, но весьма эффективным способом. <xsl:template name="reverse"> <xsl:param name="input"/> <xsl:variable name="len" select="string-length($input)"/> <xsl:choose> <!— Строки длиной меньше 2 обращаются тривиально –> <xsl:when test="$len < 2"> <xsl:value-of select="$input"/> </xsl:when> <!– Строки длины 2 также обращаются тривиально –> <xsl:when test="$len = 2"> <xsl:value-of select="substring($input,2,1)"/> <xsl:value-of select="substring($input,1,1)"/> </xsl:when> <xsl:otherwise> <!– Шаблон рекурсивно применяется сначала ко второй, а потом к первой половине входной строки —> <xsl:variable name="mid" select="floor($len div 2)"/> <xsl:call-template name="reverse"> <xsl:with-param name="input" select="substring($input,$mid+1,$mid+1)"/> </xsl:call-template> <xsl:call-template name="reverse"> <xsl:with-param name="input" select="substring($input,1,$mid)"/> </xsl:call-template> </xsl:otherwise> </xsl:choose> </xsl:template> ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2017, 21:08 |
|
Шаблон разбора строки с разделителями xslt
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2017, 21:12 |
|
|
start [/forum/topic.php?fid=14&fpage=5&tid=1332009]: |
0ms |
get settings: |
23ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
58ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
538ms |
get tp. blocked users: |
2ms |
others: | 316ms |
total: | 976ms |
0 / 0 |