Гость
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XPath. Как извлечь квадратный корень из числа? / 21 сообщений из 21, страница 1 из 1
12.03.2009, 17:19
    #35865540
Сирин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XPath. Как извлечь квадратный корень из числа?
Есть функция?
...
Рейтинг: 0 / 0
12.03.2009, 23:45
    #35866110
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XPath. Как извлечь квадратный корень из числа?
Нет. Пишите расширение.

Ну или, для извращенцев что-то типа этого http://www.helloworld.ru/texts/comp/algor/chisl/sqrt/index.htm

С уважением, Vasilisk
...
Рейтинг: 0 / 0
13.03.2009, 12:12
    #35867079
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XPath. Как извлечь квадратный корень из числа?
...
Рейтинг: 0 / 0
15.03.2009, 13:43
    #35869872
Сирин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XPath. Как извлечь квадратный корень из числа?
По тынцу говориться, что XSLT полна по Тьюрингу, то бишь с помощью этого языка можно делать любые вычисления, которые могут делать современные программы. Но у меня нет большого желания самому реализовывать алгоритм вычисления корня. У меня MSXML, расширение бы склепать.
...
Рейтинг: 0 / 0
15.03.2009, 13:51
    #35869878
Сирин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XPath. Как извлечь квадратный корень из числа?
Можно ли расширить набор функций, написав свою?
...
Рейтинг: 0 / 0
15.03.2009, 23:33
    #35870312
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XPath. Как извлечь квадратный корень из числа?
Я же сказал - пишите расширение. Как - смотрите в документации к своему парсеру. Для MSXML самое простое это заюзать <msxsl:script>

С уважением, Vasilisk
...
Рейтинг: 0 / 0
16.03.2009, 08:23
    #35870469
Сирин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XPath. Как извлечь квадратный корень из числа?
_Vasilisk_Для MSXML самое простое это заюзать <msxsl:script>

Отлично! Большое спасибо.
...
Рейтинг: 0 / 0
16.03.2009, 11:00
    #35870823
Сирин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XPath. Как извлечь квадратный корень из числа?
У меня исключение:
Код: plaintext
System.Xml.Xsl.XslTransformException: 'script' is not a recognized extension element.
Код такой
Код: plaintext
1.
<msxsl:script language="JScript" implements-prefix="user">
</msxsl:script>
Делаю преобразование дерева XML c помощью XSLT.
.NET FW 2.0, VS 2005.
...
Рейтинг: 0 / 0
16.03.2009, 15:57
    #35871918
Сирин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XPath. Как извлечь квадратный корень из числа?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
XslCompiledTransform Result = new XslCompiledTransform();
XsltSettings Settings = new XsltSettings();
Settings.EnableDocumentFunction = true;
Settings.EnableScript = true;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
XmlUrlResolver Resolver = new XmlUrlResolver();
Resolver.Credentials = System.Net.CredentialCache.DefaultCredentials;

Result.Load(ResponseXslBaseFilePath + "\\" + ResponseXslFileName, Settings, Resolver);
Не смотря на то что включаю скрипты, а также пишу xmlns:msxsl="urn:schemas-microsoft-com:xslt", исключение не пропадает.
...
Рейтинг: 0 / 0
16.03.2009, 21:55
    #35872755
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XPath. Как извлечь квадратный корень из числа?
Пространство user определено?

Покажите как реализовали и как вызываете функцию

Сама XSL валидацию проходит?

С уважением, Vasilisk
...
Рейтинг: 0 / 0
17.03.2009, 11:07
    #35873379
Сирин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XPath. Как извлечь квадратный корень из числа?
Пространство user определено?
Не было определено. Сейчас сделал так (как в примере в MSDN):
Код: plaintext
1.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user="urn:my-scripts">
До этого у меня было так:
Код: plaintext
1.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" extension-element-prefixes="msxsl">
Исключение теперь другое:
System.Xml.Xsl.XslTransformException: Cannot find the script or external object that implements prefix 'urn:my-scripts'
Честно говоря я не знаю что такое "urn:my-scripts" -- взял с пример с MSDN (сам пример MSDN работает -- проверял)

Покажите как реализовали и как вызываете функцию
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
		<msxsl:script language="C#" implements-prefix="user">
			<![CDATA[
			  public double sqrt(double number)
			  {
				return Math.Sqrt(number);
			  }
			]]>
		</msxsl:script>
		<xsl:value-of select="user:sqrt(4)"/>
Если убрать вызов функции, то ошибок нет, однако выводится содержимое <msxsl:script>

Сама XSL валидацию проходит?
Да. Я комментирую проблемный участок и ошибок нет.
...
Рейтинг: 0 / 0
17.03.2009, 23:11
    #35875428
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XPath. Как извлечь квадратный корень из числа?
XML
Код: plaintext
1.
2.
3.
<?xml version="1.0" encoding="windows-1251"?>
<Root> 
   <Value> 16 </Value> 
</Root>
XSL
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
<?xml version="1.0"?> 
<xsl:stylesheet version="1.0" 
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns:msxsl="urn:schemas-microsoft-com:xslt"
   xmlns:user="http://mycompany.com/mynamespace">

  <msxsl:script language="JScript" implements-prefix="user">
    function sqrt(num) {
      return Math.sqrt(num);
     }
  </msxsl:script>

   <xsl:template match="/Root">
     <Root>
       <xsl:apply-templates select="*"/>
     </Root>
   </xsl:template> 

   <xsl:template match="Value">
     <OldValue>
       <xsl:value-of select="."/>
     </OldValue>
     <NewValue>
       <xsl:value-of select="user:sqrt(number(.))"/>
     </NewValue>
   </xsl:template> 
</xsl:stylesheet>
Выхлоп
Код: plaintext
1.
2.
3.
4.
<?xml version="1.0"?>
<Root xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user="http://mycompany.com/mynamespace">
	<OldValue> 16 </OldValue>
	<NewValue> 4 </NewValue>
</Root>
СиринЧестно говоря я не знаю что такое "urn:my-scripts" -- взял с пример с MSDN
Просто user-defined namespace
...
Рейтинг: 0 / 0
20.03.2009, 10:29
    #35880975
Сирин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XPath. Как извлечь квадратный корень из числа?
На простом примере всё ок. В реальном немаленьком проекте происходит то, что я описал выше.
...
Рейтинг: 0 / 0
20.03.2009, 10:35
    #35881008
Сирин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XPath. Как извлечь квадратный корень из числа?
1) Узел <msxsl:script> выводится как есть.
2) Исключение "System.Xml.Xsl.XslTransformException: Cannot find the script or external object that implements prefix 'urn:my-scripts'".
...
Рейтинг: 0 / 0
20.03.2009, 22:43
    #35882995
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XPath. Как извлечь квадратный корень из числа?
СиринНа простом примере всё ок. В реальном немаленьком проекте происходит то, что я описал выше.
Ну, тогда комментируйте строки, пока не заработает. А потом анализируйте
...
Рейтинг: 0 / 0
22.03.2009, 00:43
    #35883833
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XPath. Как извлечь квадратный корень из числа?
А покажите полное объявление <xsl:stylesheet> для неработающего примера

Родительский элемент для <msxsl:script> у Вас, я надеюсь, <xsl:stylesheet>?

С уважением, Vasilisk
...
Рейтинг: 0 / 0
31.03.2009, 10:13
    #35902175
Сирин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XPath. Как извлечь квадратный корень из числа?
_Vasilisk_
Родительский элемент для <msxsl:script> у Вас, я надеюсь, <xsl:stylesheet>?

Неееет! Блин, я не нашёл в хелпе такого требования. Сейчас я переместил <msxsl:script> куда надо, и заработало!
Кланяюсь.
...
Рейтинг: 0 / 0
31.03.2009, 21:45
    #35904450
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XPath. Как извлечь квадратный корень из числа?
СиринНеееет! Блин, я не нашёл в хелпе такого требования.
тынц
MSDN Number of occurrences Unlimited
Parent elements xsl:stylesheet, xsl:transform
Child elements <msxsl:assembly> Element, <msxsl:using> Element
...
Рейтинг: 0 / 0
02.04.2009, 10:19
    #35907428
Сирин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XPath. Как извлечь квадратный корень из числа?
В первую очередь я пользуюсь локальным MSDN, на этой странице ничего такого нет: ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.en/WD_XML/html/fde6f43f-c594-486f-abcb-2211197fae20.htm. Разве что в примере видно, что такой блок вне шаблона.
...
Рейтинг: 0 / 0
02.04.2009, 10:23
    #35907442
Сирин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XPath. Как извлечь квадратный корень из числа?
Убрал фильтр по .NET FW и нашёл здесь: .
Вощем, спасибо.
...
Рейтинг: 0 / 0
02.04.2009, 11:09
    #35907581
Сирин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XPath. Как извлечь квадратный корень из числа?
* ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/WD_XMLStd/html/2a5dbaae-bccb-4d5e-aa30-4a2c1bcc79ce.htm
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XPath. Как извлечь квадратный корень из числа? / 21 сообщений из 21, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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