powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Шаблон разбора строки с разделителями xslt
25 сообщений из 33, страница 1 из 2
Шаблон разбора строки с разделителями xslt
    #39526532
Вальтрон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вход:
<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 файл к виду, представленному в ожидаемом результате
...
Рейтинг: 0 / 0
Шаблон разбора строки с разделителями xslt
    #39526560
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вальтрон,

Для начала сформулировать правила трансформации. А потом воспользоваться функциями substring-before(), substring-after()
...
Рейтинг: 0 / 0
Шаблон разбора строки с разделителями xslt
    #39526634
Вальтрон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_,
Спасибо!
Я пока совсем профан в этом деле, решил познакомится с xslt на реальных задачах. Поясните пожалуйста, что подразумевается под формулировкой правил трансформации?
...
Рейтинг: 0 / 0
Шаблон разбора строки с разделителями xslt
    #39526678
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вальтрончто подразумевается под формулировкой правил трансформации?По какому принципу Вы собираетесь исходную строку раскладывать по различным тегам
...
Рейтинг: 0 / 0
Шаблон разбора строки с разделителями xslt
    #39526792
Вальтрон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_,

Подскажите пожалуйста, где про это можно подробно почитать
...
Рейтинг: 0 / 0
Шаблон разбора строки с разделителями xslt
    #39526830
Фридрих
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВальтронПодскажите пожалуйста, где про это можно подробно почитать
ни где про это не прочитаешь, это чистая логика в программировании...чтоб было понятно о чем тебя спросил _Vasilisk_ делаю поправку:
1. у тебя в входном файле строка - в которой есть два разделителя (так или как?)
2. в исходном файле у тебя появляются значения которых нет в входном файле type='ADT'(откуда они беруться???)
3. birthDate='2005-09-30' - этот параметер тоже не везде (и как с этим жить?)
4. и т.д.
Тебе нужно научиться правильно и последовательно понять откуда что береться и куда вставляется....и главное понять как работать с данными если они не по шаблону приходят?

если ты только начал изучать технологию XSLT то тебе так же необходимо написаться терминологией чтоб понимать те советы которые тут будут писать иначе будет сложно с тобой общаться.. наберись терпения и посмотри видео уроки на ютубе
YouTube Video
...
Рейтинг: 0 / 0
Шаблон разбора строки с разделителями xslt
    #39526832
Вальтрон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Фридрих,

Спасибо огромное, добрый человек!
По поводу задания, полностью звучит оно так:
Необходимо написать шаблон для разбора строки с разделителями
Каждая строка - это список туристов, путешествующих вместе. Информация о каждом туристе отделена символом '|'. Информация по каждому туристу включает:
тип туриста (10 — взрослый, 8 — ребенок, 7 — младенец),
день рождения для детей и младенцев,
фамилия,
имя,
префикс.
Вся перечисленная выше информация разделяется символом '/'. Необходимо составить xml документ, содержащий данные по всем туристам, сохраняя их принадлежность к группе.

Ну и пример описан выше.
...
Рейтинг: 0 / 0
Шаблон разбора строки с разделителями xslt
    #39526840
Фридрих
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вальтрон,

звучит так, как будто ты фрилансер, который нарвался на не тривиальную задачу...
ты писал "Я пока совсем профан в этом деле, решил познакомится с xslt на реальных задачах"
так хоть напиши пару строк кода, чтоб было что тебе исправлять и учиться, а то ты просишь готовое решение, а на готовом решении ты не научишься... _Vasilisk_ тебе уже дал подсказку как работать со строками... если ты не хочешь тут ни кого обманывать то заплати и получи результат _Vasilisk_ тебе поможет, я не зарабатываю на этом..
...
Рейтинг: 0 / 0
Шаблон разбора строки с разделителями xslt
    #39526845
Фридрих
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вальтрон,

чуть не забыл, твой пример не тот на котором нужно начинать учиться... потому что нужно делать "временное дерево", что заставляет точно знать какой процессор будет делать преобразование? Так же нужно сделать "справочник" чтоб расшифровывать тип туриста и так же надо знать что делать если возраст не указан или не указанно еще какие данные?
...
Рейтинг: 0 / 0
Шаблон разбора строки с разделителями xslt
    #39527046
Вальтрон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Фридрих,

я не хочу никого обманывать и я не фрилансер. Это тестовое задание для участия в конкурсе на бесплатные курсы по xslt разработке. В требованиях ничего сверхъестественного не было указано, я не думал, что задание окажется таким сложным.
Для решения этого задания вроде как может пригодиться tokenize, но я не могу уловить структуру конечного файла, как сделать так, что бы в нем появились теги <prefix>, <name>, <surname> и другие, которых нет в исходном файле.
В любом случае спасибо за советы и ссылку на видеоуроки
...
Рейтинг: 0 / 0
Шаблон разбора строки с разделителями xslt
    #39527048
Вальтрон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Фридрих,
Видимо ответом на мой вопрос про теги кроется в понятии временного дерева)
...
Рейтинг: 0 / 0
Шаблон разбора строки с разделителями xslt
    #39527123
Фридрих
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вальтрон,

всё верно, нужно использовать расширения в котором есть tokenize поэтому я написал перечень вопросов....
ты хоть что то напиши, хоть начало самого преобразования... я ведь писал что нужно видеть твою логику мышления...
и ответь на вопросы
1. какой процессор используется?
2. есть ли для него расширения EXSLT?
3. где будет делаться преобоазование? на сервере или на клиенте?
4. где список того, что означает ребенок или взрослый?
5. что делать если не указан возраст?
6. что делать если не будет хватать других данных? имени или фамилии
7. что делать если будут те данные которые тут вообще не указаны?

посмотри видео урок и там всё ясно и так хорошо разжеванно, откуда беруться новые теги(ты их сам пишешь в шаблоне)....
...
Рейтинг: 0 / 0
Шаблон разбора строки с разделителями xslt
    #39527135
Фридрих
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вальтрон,

и зачем тебе куда то записываться? в этом видео есть всё для начала, этот курс на самом деле классный, делай там задания которые есть и будет тебе халявные курсы...а что не понятно будет - спрашивай на форуме или иши в англоязычном гугле примеры....я так сам и учил...
...
Рейтинг: 0 / 0
Шаблон разбора строки с разделителями xslt
    #39527153
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фридрихнужно делать "временное дерево"Не нужно. Обычный линейный рекурсивный разбор с прямым выхлопом.

Хотя да, с временным деревом будет немного читабельней
...
Рейтинг: 0 / 0
Шаблон разбора строки с разделителями xslt
    #39527171
Вальтрон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Фридрих,

по заданию нужно преобразовать следующий 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
...
Рейтинг: 0 / 0
Шаблон разбора строки с разделителями xslt
    #39527189
Фридрих
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

человек решает сложноватую задачу для начинающего и уже пишет про exslt...вот мне и не понятно стало некоторые моменты...
ты ведь понимаешь что решать задачи можно только и исключительно любимым методом....
а те видео которые я предложил - я на них сам учился лежа на диване, тупо пересматривал чтоб понять сам принцип преобразования....и аж только потом стал что то сам делать...ты же понимаешь что нет смысла учить xslt как стихотворение...вот как то пытаюсь доносить это до людей...
...
Рейтинг: 0 / 0
Шаблон разбора строки с разделителями xslt
    #39527194
Фридрих
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вальтрон,

ты в каком редакторе работаешь? или через браузер или как? где делаешь преобразование?
вот тебе страница про твое tokenize http://exslt.org/str/functions/tokenize/index.html
...
Рейтинг: 0 / 0
Шаблон разбора строки с разделителями xslt
    #39527196
Вальтрон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Фридрих,

Преобразования делаю здесь: http://www.w3schools.com/
Благодарю за ссылку!
...
Рейтинг: 0 / 0
Шаблон разбора строки с разделителями xslt
    #39527208
Фридрих
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вальтрон,

вот это как раз таки и не понятно, будут ли работать exslt!? пробуй сделать в браузере мозила может там сработает, вроде пишут что должно....
...
Рейтинг: 0 / 0
Шаблон разбора строки с разделителями xslt
    #39527213
Фридрих
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вальтрон,

вроде работает то что ты отправил вот тебе еще пример
http://xpoint.ru/know-how/XML/XSLT/CookBook/Split
...
Рейтинг: 0 / 0
Шаблон разбора строки с разделителями xslt
    #39527248
Вальтрон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Фридрих,

На основании нескольких статей, в том числе Вами предложеных, у меня получился такого вида код:

<?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>

Но он к сожалению не работает. Может Вы подскажете что здесь не так?
...
Рейтинг: 0 / 0
Шаблон разбора строки с разделителями xslt
    #39527271
Фридрих
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вальтрон,

вот тебе xml
Код: xml
1.
2.
&#65279;<?xml version="1.0" encoding="UTF-8"?>
<data>foo;bar;baz</data>


вот тебе xsl
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:str="http://exslt.org/strings" version="1.0" exclude-result-prefixes="xsl str" extension-element-prefixes="str">
  <xsl:output method="xml" indent="yes"/>
  <xsl:template match="data">
    <ul>
      <xsl:apply-templates select="str:tokenize(.,';')"/>
    </ul>
  </xsl:template>
  <xsl:template match="token">
    <li>
      <xsl:value-of select="."/>
    </li>
  </xsl:template>
</xsl:stylesheet>


проверь на работоспособность этот пример, будут ли ошибки, если ошибок нет, то
1. сравни загаловки в файлах
2. тебе нужно два раза разбивать строку по разным разделителям
3. результат разбивок записать во временное дерево
4. из временного дерева создавать те теги которые тебе не обходимы для вывода в конечный файл
не забудь указать префикс для node-set - это чтоб можно было обратиться к временному дереву...

вот такой вот план трансформации... ну и очень важно соблюдать синтаксис и велформ файла...
...
Рейтинг: 0 / 0
Шаблон разбора строки с разделителями xslt
    #39527304
Вальтрон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Фридрих,

В общей с этой задачей я не справлюсь, времени все меньше, разбираться еще видимо долго. Срок сдачи - завтра)
Может поможете с другим заданием?

Напишите шаблоны работы со строками

Исходный документ – 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>
...
Рейтинг: 0 / 0
Шаблон разбора строки с разделителями xslt
    #39527307
Вальтрон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
 - это спецсимволы, не знаю зачем они там
...
Рейтинг: 0 / 0
Шаблон разбора строки с разделителями xslt
    #39527308
Вальтрон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
25 сообщений из 33, страница 1 из 2
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Шаблон разбора строки с разделителями xslt
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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