Текущее время: Пт, июл 18 2025, 23:38

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: xslt-преобразование
СообщениеДобавлено: Ср, апр 30 2014, 15:56 
Начинающий
Начинающий

Зарегистрирован:
Вт, июл 31 2012, 11:59
Сообщения: 19
Добрый день.
Долго не получалось написать преобразование, хотя сверка со справкой утверждала, что всё написано правильно. Решила протестить 100% рабочий простой пример из сети.
Код по идее должен делать: пройти по всему дереву и изменить элемент input, если встретится. И этот пример тоже не заработал: отработал только первый шаблон, а input не обработал.
Что не так с преобразованиями в SAP? Он их как-то иначе обрабатывает? В коде ниже есть ошибки?

Code:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:transform version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:sap="http://www.sap.com/sapxsl"
>

<xsl:strip-space elements="*"/>

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

<xsl:template match="input">
    {{<xsl:value-of select="@id"/>}}
</xsl:template>

</xsl:transform>


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: xslt-преобразование
СообщениеДобавлено: Ср, апр 30 2014, 18:48 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
Преобразование в SAP работает нормально. Для сверки можете попробовать скачать бесплатную утилиту командной строки от MS и попробовать в ней ваш пример. У меня что в SAP, что в утилите - результат был одинаковый.

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: xslt-преобразование
СообщениеДобавлено: Ср, апр 30 2014, 19:34 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
А.. и таки да: само преобразование у Вас не правильное. С помощью вот этого получаем правильное преобразование
Code:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes"/>

    <!-- копия элементов, которые не подходят под "другие шаблоны" -->
    <xsl:template match="@* | node()">
        <xsl:copy>
            <xsl:apply-templates select="@* | node()"/>
        </xsl:copy>
    </xsl:template>

  <!-- тот самый "другой" шаблон, который заменяет элемент INPUT  на нужное нам значение-->
  <xsl:template match="INPUT">
    <xsl:element name="INPUT">
      <xsl:text>нужное нам значение</xsl:text>
    </xsl:element>
  </xsl:template>
</xsl:stylesheet>

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: xslt-преобразование
СообщениеДобавлено: Пн, май 05 2014, 08:44 
Начинающий
Начинающий

Зарегистрирован:
Вт, июл 31 2012, 11:59
Сообщения: 19
Не помогло. Кусок
Code:
   <xsl:template match="@* | node()">
        <xsl:copy>
            <xsl:apply-templates select="@* | node()"/>
        </xsl:copy>
    </xsl:template>

отрабатывает, а в шаблон input не заходит (ставила точку прерывания).


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: xslt-преобразование
СообщениеДобавлено: Пн, май 05 2014, 09:09 
Начинающий
Начинающий

Зарегистрирован:
Вт, июл 31 2012, 11:59
Сообщения: 19
Дополнительно, проверочный файл с форматом xml выглядит так:
Code:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body>
<form>Текст, 
<input id="123" value="Имя" />
!  
<input id="345" value="Город"  />
</form>
</body>
</html>


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: xslt-преобразование
СообщениеДобавлено: Ср, май 07 2014, 09:31 
Начинающий
Начинающий

Зарегистрирован:
Вт, июл 31 2012, 11:59
Сообщения: 19
Вопрос всё ещё не отпал :( Ни у кого соображений нет?


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: xslt-преобразование
СообщениеДобавлено: Ср, май 07 2014, 10:54 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
Покажите полный текст XSLT
Есть подозрение, что Вы просто скопировали мой текст не вчитываясь. если это так, то в моем шаблоне нужно изменить регистр INPUT на input. XSLT регистрозависимо

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: xslt-преобразование
СообщениеДобавлено: Ср, май 07 2014, 14:26 
Начинающий
Начинающий

Зарегистрирован:
Вт, июл 31 2012, 11:59
Сообщения: 19
Когда не заработала, первое, что сделала - проверила регистр, но всё равно не помогло.

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

  <!-- копия элементов, которые не подходят под "другие шаблоны" -->
  <xsl:template match="@* | node()">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()"/>
    </xsl:copy>
  </xsl:template>

  <!-- тот самый "другой" шаблон, который заменяет элемент INPUT  на нужное нам значение-->
  <xsl:template match="input">
    <xsl:element name="input">
      <xsl:text>нужное нам значение</xsl:text>
    </xsl:element>
  </xsl:template>

</xsl:stylesheet>


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: xslt-преобразование  Тема решена
СообщениеДобавлено: Ср, май 07 2014, 15:38 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
Мешает пространство имен в элементе html обрабатываемого дока. Если убрать его - все будет работать, если написать его как
Code:
xmlns:xhtml="http://www.w3.org/1999/xhtml"
, то тоже все будет работать.
Или какая-то тонкость XSLT, или с точки зрения XML это некорректный формат определения исходного файла.

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: xslt-преобразование
СообщениеДобавлено: Ср, май 07 2014, 15:59 
Начинающий
Начинающий

Зарегистрирован:
Вт, июл 31 2012, 11:59
Сообщения: 19
Если совсем убрать пространство имён из дока, то он ругается на недопустимый формат файла, а вот если заменить на то, что вы предложили - всё ок работает! Спасибо огроменное :)
Ну реплейсить во входящем файлике формат (не мной генерируется) перед преобразованием - не самое страшное, что могло случиться.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB