с использованием Xquery, как я могу вставлять переменную в выражение xquery в следующий XML-документ. У меня есть следующий XML-документИспользование переменной в выражениях XQuery
<CD>
<TITLE>Picture book</TITLE>
<ARTIST>Simply Red</ARTIST>
<COUNTRY>EU</COUNTRY>
<COMPANY>Elektra</COMPANY>
<PRICE>7.20</PRICE>
<YEAR>1985</YEAR>
</CD>
<CD>
<TITLE>Red</TITLE>
<ARTIST>The Communards</ARTIST>
<COUNTRY>UK</COUNTRY>
<COMPANY>London</COMPANY>
<PRICE>7.80</PRICE>
<YEAR>1987</YEAR>
</CD>
<CD>
<TITLE>Unchain my heart</TITLE>
<ARTIST>Joe Cocker</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>EMI</COMPANY>
<PRICE>8.20</PRICE>
<YEAR>1986</YEAR>
</CD>
мне нужно выдать запрос, возвращающий все диски с год> 1986. Я хочу, хотел бы иметь компоненты «где» п как переменные, я имею в виду, хранящих YEAR > 1986
в для трех переменных и использовать переменные в запросе, здесь то, что я до сих пор
String queryString =
"declare variable $field :=" +"YEAR"+";"+
"declare variable $operator :=" +">"+";"+
"declare variable $value :=" +"1986"+";"+
"declare variable $docName as xs:string external;" + sep +
"for $cat in doc($docName)/*/"+ "CD" +
"where $cat/$field $operator $value" +
"order by $cat/$field" +
"return $cat";
XQExpression expression = conn.createExpression();
expression.bindString(new QName("docName"), filename,
conn.createAtomicType(XQItemType.XQBASETYPE_STRING));
results = expression.executeQuery(queryString);
return results.getSequenceAsString(new Properties());
Мое выражение запроса не является совершенным, я думаю, что у меня возникают проблемы при использовании переменных, любой может помочь мне в решая это, пожалуйста?
Спасибо за ваш ответ. Да, это правильная переменная, которую нельзя использовать для оператора. но могу ли я сохранить переменные $ и $ value в запросе и явно указать оператор? Я имею в виду изменение запроса, чтобы выглядеть следующим образом: «где $ cat/$ field» + «>» + «$ value»? Это возможно? – Lucy
@Lourin - Я думаю, вам нужно использовать функцию расширения, такую как 'saxon: evaluation()' для этого. Какой процессор вы используете? –
Я использую xqj, я только начал работать над XQuery, могу ли я использовать saxon: evaluation() в xqj? Спасибо – Lucy