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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Yandex [Bot]


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

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