2010-12-11 8 views
0

Я использую WebHarvest для разбора некоторого html. Я получаю следующую ошибку в идее WebHarvest о следующей функции, и я не понимаю, что случилось. Я пытаюсь создать функцию, которая обрезает строку.Ошибка Xquery в WebHarvest

Ошибка:

Error executing XQuery expression (Xquery=[declare variable $xqsource external; let $result := normalize-space($xqsource) return $result])!

Edit2: Журнал сообщает следующее SAX Ошибка:

[...] Caused by: org.xml.sax.SAXParseException: Content is not allowed in prolog

Я не понимаю, что это означает, что в данном случае.

Функция «ы параметры: SourceString, строка для обрезки

<function name="trim"> 
    <return> 
     <xquery> 
      <xq-param name="xqsource"> 
       <var name="sourceString" /> 
      </xq-param> 
      <xq-expression><![CDATA[ 
       declare variable $xqsource external; 

       let $result := normalize-space($xqsource) 
        return 
        $result 
       ]]> 
      </xq-expression> 
     </xquery> 
    </return> 
</function> 

Edit: SourceString это строка состоит из буквенно-цифровых символов, новых линий и пробелов, как

" blabla - bla2

"

+0

Я могу воспроизвести ошибку, проверяя выражение XQuery с помощью Saxon. Что такое значение 'sourceString'? – 2010-12-11 23:30:24

+0

@Alejandro: как вы думаете, правильный код xquery? В любом случае, строки передаются строки с новыми строками, буквенно-цифровыми символами и пробелами внутри – cdarwin

ответ

1

по умолчанию Тип xq-param - node() (cf manual). Поэтому WebHarvest пытается проанализировать содержимое переменной как XML (SAXParseException - это ошибка синтаксического анализа XML, а не конкретная ошибка XQuery).

Вы должны добавить объявление в string типа к вашим парам:

<xq-param name="xqsource" type="string"> 
    <var name="sourceString" /> 
</xq-param> 

ли это помощь?

+0

Argh !! Я пропустил этот тип параметра, потому что в примере использовался xml var, который является значением по умолчанию !!! Спасибо ОЧЕНЬ МНОГО, теперь он работает! – cdarwin

Смежные вопросы