Предположим, у меня есть XML дерево, как это:msxsl: script language = "JScript" - фрагмент дерева процесса?
<?xml version="1.0" encoding="utf-8"?>
<root>
<item>
<val>10,1</val>
</item>
<item>
<val>20,2</val>
</item>
<item>
<val>30,3</val>
</item>
</root>
Как я могу выбрать элементы дерева внутри msxsl: функцию сценария, который пишется на JScript? Как это:
<msxsl:script language="JScript" implements-prefix="baator">
<![CDATA[
function test(N) {
//processing result tree fragment N here, for example i need to convert //item/val to numbers and return a complicate f(N)
}
]]>
</msxsl:script>
...
<xsl:value-of select="baator:test(//item)" />
В официальной документации есть примеры для C# языка, но ни для JScript. Я пытался использовать одинаковые имена классов без успеха. Важно использовать JScript, потому что в производственной среде есть функции, уже написанные на нем. Спасибо!
Вы должны сказать нам, какие XSLT процессор, в котором окружающей среде используются и как MSXML в COM-мир как XslCompiledTransform в функциях расширения внутренней поддержки .NET в Java, но объектные модели и типы сопоставлений узла или фрагмента дерева совершенно разные. С образцом, который вы указали, аргумент на сайте XSLT/XPath с '// item' является набором узлов элементов item. Как это сопоставляется с классом или типом на сайте JScript, зависит от процессора XSLT, поэтому, пожалуйста, сообщите нам, какой из них вы используете. –
Я создаю xslt/html шаблоны для сложной системы crm, разработанной сторонней компанией. Преобразование xslt выполняется на стороне сервера, которая написана на ASP.NET. Но я не могу точно сказать, какой XSLT-процессор используется (если в ASP.NET существует более одной реализации). – Kshatra
Попробуйте запустить http://home.arcor.de/martin.honnen/xslt/processorTest2.xml в своем окружении, а затем сообщите нам, какой вывод вы получите, чтобы мы знали, какой XSLT-процессор вы используете. Если вы используете 'XslCompiledTransform', то сопоставление в http://msdn.microsoft.com/en-us/library/wxaw5z5e%28v=vs.110%29.aspx указывает, что набор узлов должен быть представлен как' XPathNodeIterator 'в коде .NET. Если это не сработает для вас, мы должны увидеть ваш код. –