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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Добавление нулей в начало числа 
V
    Опции темы
davidoffpk
Дата 12.5.2010, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Добрый день. 

В базе данных Oracle 10g есть xml файлы. Писать на PL\SQL скрипты для их обработки не хочется по той причине, что уже есть готовые xslt схемы. Решил воспользоваться встроенным процессором. Но есть проблема - процессор отказывается воспринимать функцию number() в сортировке, а мне нужно отсортировать некоторые числа. 

Подскажите, какой оптимальный способ с помощью xslt добавить нули в начало числа до 10 символов? Или может есть еще какой-нибудь способ это обойти?

Числа, например, такие:

Код

<A>2</A>
<A>-35</A>
<A>31</A>
<A>2000000</A>
<A>-35000</A>
 
PM MAIL   Вверх
diadiavova
Дата 12.5.2010, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



А при чём тут функция number()? Просто укажи type="number" (без скобок) и всё. smile 


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
davidoffpk
Дата 12.5.2010, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



М-м... я наверное неправильно изложил задачу или не понял ответ) 

Xml файлы(целиком) у меня хранятся в полях одной таблицы в типе BLOB. Так было нужно по заданию. В другой таблице хранятся xsl схемы также в типе BLOB. У меня есть функция, которая связывает файл со схемой и выполняет преобразование.

Так вот в одной из схем у меня есть стандартная запись:
Код

<xsl:sort order="descending" select="number(A)"/>
 

И все бы хорошо, если бы не вышеуказанная проблема...

Добавлено @ 15:48
Или Вы имели ввиду конструкцию:
Код

<xsl:sort order="descending" select="A" data-type="number"/>

Надо проверить...

Это сообщение отредактировал(а) davidoffpk - 12.5.2010, 15:53
PM MAIL   Вверх
diadiavova
Дата 12.5.2010, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



Цитата(davidoffpk @  12.5.2010,  16:45 Найти цитируемый пост)
data-type="number"

 smile С названием слегка пропёрся smile


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
davidoffpk
Дата 12.5.2010, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



 smile  Огромное спасибо!!! Я такой конструкцией не пользовался и вообще не знал, что она есть. Я, блин, над этой проблемой весь день в унынии зависал, думал что все переделывать придется) Спасибо!!!
PM MAIL   Вверх
Zloxa
Дата 12.5.2010, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

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



Код

Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 
Connected as common
 
SQL> 
SQL> select
  2  XMLTransform(
  3  xmlType('<r>
  4  <A>2</A>
  5  <A>-35</A>
  6  <A>31</A>
  7  <A>2000000</A>
  8  <A>-35000</A>
  9  </r>')
 10  ,xmlType('<?xml version="1.0" encoding="utf-8"?>
 11  <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 12  <xsl:template match="r">
 13  <xsl:for-each select="A">
 14    <xsl:sort select="." data-type = "number"/>
 15      <A><xsl:value-of select="."/></A>
 16    </xsl:for-each>
 17  </xsl:template>
 18  </xsl:stylesheet>'
 19  )).GetStringVal() result
 20  from dual;
 
RESULT
--------------------------------------------------------------------------------
<A>-35000</A><A>-35</A><A>2</A><A>31</A><A>2000000</A>
 


Добавлено @ 16:35
кстати select = "number()" тоже работает


Это сообщение отредактировал(а) Zloxa - 12.5.2010, 16:36


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "XML/XSLT"
diadiavova

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

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

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

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


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

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


 




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


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

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