2015-01-30 2 views
0

У меня есть пользовательская функция в моей XSLT-документе следующим образом:Как передать значение узла пользовательской функции msxsl: script?

<msxsl:script language="JScript" implements-prefix="custom"> 
function uriencode(string) { 
    return encodeURIComponent(string); 
</msxsl:script> 

Когда я пытаюсь передать ему значение узла, как это:

<xsl:variable name="urlp" select="Path/To/Some[@attr='condition']/Node" /> 
<xsl:value-of select="custom:uriencode($urlp)" /> 

Это дает мне этот результат:

MS.Internal.Xml.XPath.XPathSelectionIterator 

Итак, я понимаю, что я не передал действительную величину Node моей функции, но как мне это сделать? Или, альтернативно, получить значение узла из объекта, который передается моей функции?

+0

Как вы ссылаетесь на преобразование XSLT? В C#? Не могли бы вы показать код, если это возможно? –

ответ

0

Если вы хотите передать строку XSLT/XPath, которая обрабатывается в функции «script» как .NET String, используйте <xsl:value-of select="custom:uriencode(string($urlp))" />.

Если вы хотите его решить на стороне .NET, позвоните по телефону MoveNext().

function encode(nodeIterator) { 
    if (nodeIterator.MoveNext()) { 
    return encodeURIComponent(nodeIterator.Current.Value); 
    } 
    else { 
    return ''; 
    } 
}