2016-06-16 1 views
0

Недавно я изменил свой XSL на версию 2.0 с версии 1.0, чтобы добавить некоторые изменения. Мне нужно добавить функцию SUM для следующей строки:Значение XML-23006: (Ошибка) не соответствует требуемому типу при обновлении до XSL 2.0

<xsl:sequence select="sum (/ns0:PublishZXQPPWORKORDER/ns0:ZXQPPWORKORDERSet/ns0:WORKORDER/ns0:WOACTIVITY/(ns0:ESTLABCOST + ns0:ESTMATCOST))"/> 

Это заставило меня, чтобы получить ошибку: XML-23006: значение (ошибка) не соответствует требуемому типу

На следующей строке:

<xsl:value-of select="/ns0:PublishZXQPPWORKORDER/ns0:ZXQPPWORKORDERSet/ns0:WORKORDER/ns0:PLUSDESTCONTROL/ns0:PLUSDESTVERSION[ns0:ESTVERSION=$VERSION]/ns0:PLUSDACGDETAIL/ns0:LBRCOSTOUT + /ns0:PublishZXQPPWORKORDER/ns0:ZXQPPWORKORDERSet/ns0:WORKORDER/ns0:PLUSDESTCONTROL/ns0:PLUSDESTVERSION[ns0:ESTVERSION=$VERSION]/ns0:PLUSDACGDETAIL/ns0:SERVICECOST + /ns0:PublishZXQPPWORKORDER/ns0:ZXQPPWORKORDERSet/ns0:WORKORDER/ns0:PLUSDESTCONTROL/ns0:PLUSDESTVERSION[ns0:ESTVERSION=$VERSION]/ns0:PLUSDACGDETAIL/ns0:MATLCOSTIN + /ns0:PublishZXQPPWORKORDER/ns0:ZXQPPWORKORDERSet/ns0:WORKORDER/ns0:PLUSDESTCONTROL/ns0:PLUSDESTVERSION[ns0:ESTVERSION=$VERSION]/ns0:PLUSDACGDETAIL/ns0:MATLCOSTOUT + /ns0:PublishZXQPPWORKORDER/ns0:ZXQPPWORKORDERSet/ns0:WORKORDER/ns0:PLUSDESTCONTROL/ns0:PLUSDESTVERSION[ns0:ESTVERSION=$VERSION]/ns0:PLUSDACGDETAIL/ns0:TOOLCOSTIN + /ns0:PublishZXQPPWORKORDER/ns0:ZXQPPWORKORDERSet/ns0:WORKORDER/ns0:PLUSDESTCONTROL/ns0:PLUSDESTVERSION[ns0:ESTVERSION=$VERSION]/ns0:PLUSDACGDETAIL/ns0:TOOLCOSTOUT"/> 

Выборочные данные я использую следующее:

<LBRCOSTOUT>0.0</LBRCOSTOUT> 
<SERVICECOST>0.0</SERVICECOST> 
<MATLCOSTIN>260.36</MATLCOSTIN> 
<MATLCOSTOUT>0.0</MATLCOSTOUT> 
<TOOLCOSTIN>0.0</TOOLCOSTIN> 
<TOOLCOSTOUT>0.0</TOOLCOSTOUT> 

Это из-за более сильного набора текста в XSL 2.0? Какие способы я могу исправить?

+0

Когда я упоминаю об этом сообщении об ошибке Google, похоже, это связано с процессором XSLT от Oracle. Вы пытались запустить свой код с Saxon 9 для сравнения? Что касается фрагментов кода, как первый фрагмент относится ко второму, это значение, вычисленное в первом фрагменте, используемом во втором? Это может помочь нам, если вы попытаетесь уменьшить код до минимальных, но полных фрагментов, позволяющих легко воспроизвести проблему. –

ответ

0

XPath, что вы прошли в sum() недействителен:

/ns0:PublishZXQPPWORKORDER/ns0:ZXQPPWORKORDERSet 
    /ns0:WORKORDER/ns0:WOACTIVITY/(ns0:ESTLABCOST + ns0:ESTMATCOST)) 
           ^

Отмеченное ( не принадлежит там.

Я также не знаю, почему вы создаете последовательность из вывода sum() или как вы используете это позже в своем коде, но ваши изменения синтаксически неправильны, если ничего другого.