Модераторы: diadiavova
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> из XML в XML другого типа, конкретный кусок xml 
:(
    Опции темы
Invisible
Дата 4.11.2008, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 26.5.2005

Репутация: нет
Всего: нет



Никогда ранее не работал с xslt  преобразованиями но оч нужно .. а въехать не успеваю 

Есть у меня такой кусок xml 
Код

<point>
   <coordinate axis="1" value="5"/>
   <coordinate axis="2" value="25"/>
</point>
<point>
   <coordinate axis="1" value="10"/>
   <coordinate axis="2" value="11"/>
</point>


Надо: 
Код

<point caption="25">
   <coordinate axis="1" value="5"/>
</point>
<point caption="11">
   <coordinate axis="1" value="10"/>
</point>


Тоесть value координат (тэг coordinates) со значениями на осях равных двум (axis == 2) переписать в атрибут caption тэга point. Надеюсь всё понятно. Проблема у меня состояла в том, что я не мог положить в переменные 1ую координату и 2ую а потом записать так как мне нужно. Примерно так было у меня
Код

<?xml version="1.0" encoding="windows-1251"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml"/>

<xsl:template match="@*|node()">
  <xsl:copy>
    <xsl:apply-templates select="@*|node()"/>
  </xsl:copy>
 </xsl:template>

  <xsl:template match="point ">    
             <xsl:variable name="coord1"><xsl:value-of select="coordinate/@value"/></xsl:variable> 
             <xsl:variable name="coord2"><xsl:value-of select="coordinate/@value"/></xsl:variable> 
              
              <xsl:element name="point">
                              <xsl:attribute name="caption">
                                      <xsl:value-of select="$coord2"/>
                              </xsl:attribute> 
                              <xsl:element name="coordinate">
                                          <xsl:attribute name="axis">
                                                <xsl:value-of select="1"/> 
                                          </xsl:attribute>
                                          <xsl:attribute name="value">
                                            <xsl:value-of select="$coord1"/> 
                                          </xsl:attribute>
                              </xsl:element>
              </xsl:element>    
    </xsl:template>
  
  <xsl:template match="coordinate" mode="next">    
               <xsl:value-of select="@value"/>
  </xsl:template>


</xsl:stylesheet>


Это сообщение отредактировал(а) Invisible - 4.11.2008, 15:30
PM MAIL   Вверх
jsa
Дата 5.11.2008, 05:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 704
Регистрация: 19.1.2006
Где: Новосибирск

Репутация: 3
Всего: 20



Код

<xsl:template match="point">
   <xsl:element name="point">
      <xsl:attribute name="caption">
        <xsl:value-of select="coordinate[@axis='2']/@value"/>
      </xsl:attribute>
      <xsl:copy select="coordinate[@axis='1']" />
   </xsl:element>
</xsl:template>


Это сообщение отредактировал(а) jsa - 5.11.2008, 05:59


--------------------
Все мы, на перине с песней, строим небо на земле © Ю. Шевчук
PM MAIL ICQ   Вверх
Invisible
  Дата 5.11.2008, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 26.5.2005

Репутация: нет
Всего: нет



Большое спасибо, всё получилось  smile 
PM MAIL   Вверх
Invisible
Дата 3.12.2008, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 26.5.2005

Репутация: нет
Всего: нет



Здравствуйте, снова у меня проблемы, прошу вас помочь мне кое где.

Сейчас посмотрю куда бы приложить файлы с xml  и xslt....

Добавлено @ 14:43
Xslt & xml в приложении. Изымаем данные которые нам нужны и записываем считая их. Я думаю если вы запустите приобразование во вложении вам станет ясно что происходит. так вот .мне нужжно что б при встречи <report>  мой счетчик в переменной обнулился. 

Вот эта переменная
Код

 <xsl:variable name="line_count">
            <xsl:number level="any" from="point"/>
        </xsl:variable>


Я так понимаю что сйчас в перменной хранится не протсо номер а количество тэгов ... тоесть с каждым новым тэгом point счетчик увиличивается.

Это сообщение отредактировал(а) Invisible - 3.12.2008, 14:47

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  1.zip 1,85 Kb
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "XML/XSLT"
diadiavova

Прежде чем опубликовать вопрос, попробуйте воспользоваться поиском - возможно тема уже поднималась.

Также рекомендуем Вам зайти в раздел FAQ ,раздел дополняется и, возможно, там вы увидите готовое решение.

Для ответов на часто задаваемые вопросы существует FAQ раздела. Новости можно публиковать в разделе новостей. Для статей так же есть специальный раздел

Желаем удачи в Вашем деле!


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | XML, XSL | Следующая тема »


 




[ Время генерации скрипта: 0.0463 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.