2013-04-29 5 views
0

У меня есть проблема в части функции, которая дает мне ошибкуTransformation XSLT2 удалось

XSLT2 Transformation failed: Error in XPath 2.0 expression (Too many items - fn:string) 

Это строка кода, который генерирует ошибку:

<xsl:for-each select="(fn:doc($cwklic_codeMappings3)/ns0:KLCodeTable)[(fn:string(ns0:codeType/@name) = 'IFTdep')]"> 

И это все области этого кода.

<xsl:variable name="var93_resultof_map" as="node()?"> 
    <xsl:for-each select="(fn:doc($cwklic_codeMappings3)/ns0:KLCodeTable)[(fn:string(ns0:codeType/@name) = 'IFTdep')]"> 
    <xsl:variable name="var92_resultof_first" as="node()" select="ns0:codeType"/> 
     <codeType xmlns="http://www.kewill.com/logistics/klic/conversion"> 
     <xsl:sequence select="($var92_resultof_first/@node(), $var92_resultof_first/node())"/> 
    </codeType> 
    </xsl:for-each> 
</xsl:variable> 

И вот скриншот графического отображения.

enter image description here

Я надеюсь, что кто-нибудь может мне помочь.

ответ

1

Предположительно это означает, что KLCodeTable может иметь более одного кода, что означает, что аргумент string() содержит несколько узлов атрибутов.

Если вы хотите, чтобы ваш предикат оценивал значение true, если какой-либо из кодовых типов имел требуемое значение, просто оставьте вызов в строке(), т.е. напишите [ns0:codeType/@name = 'IFTdep'].

Если вы имели в виду что-то другое, то вы бы лучше сказать нам, что вы имели в виду ...

Кстати, п: префикс совершенно не обязательно на вызовы функций в XSLT. Во что бы то ни стало используйте его, если ваша производительность измеряется длиной вашего кода, но в остальном это пустая трата пространства.

+0

Это содержимое KLCodeTable: http://i.imgur.com/SFgYso7.png Я также не совсем уверен, понимаю ли вы, что вы имеете в виду. Да, KLCodeTable содержит более одного кода, но именно поэтому я фильтрую имя IFTdep. И prefixse/code автоматически генерируется Altova Mapforce. У меня нет опыта с Xpath/xlst. Но я попробую то, что вы написали выше. – Perfection

+0

Мой работодатель не позволяет мне вручную настраивать сгенерированный код. Я пробовал, несмотря на это, но, похоже, это не помогло. Однако я изменил графическое отображение в другом методе, и это, казалось, сработало. Спасибо, независимо. Должен ли я принять это как ответ? – Perfection

+0

Боюсь, я нахожу программирование с графическими языками невероятно жестким. Они предназначены для людей, которые думают гораздо более визуально, чем я. Поэтому я чувствую вашу боль, если вы вынуждены это делать, но я не могу помочь. –