2010-11-18 5 views
0

alt textпроблема XQUERY в подсчете

Использование XQuery:

Список идентификатор, название, издатель и платформы для каждой игры, которая поддерживается более чем одной платформы. Платформы должны быть заключены в один тег XML, разделенный запятой.

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

+0

@ user507087: Пожалуйста, не изменяйте свои вопросы. Это не делает их бессмысленными –

ответ

0

Это XQuery:

element result { 
    for $game in /games/game[tokenize(Platform,',')[2]] 
    return element game { 
      $game/(ID|Name|Publisher|Platform) 
      } 
} 

С этим входом:

<games> 
    <game> 
     <ID>B003JVKHEQ</ID> 
     <Name>Duty</Name> 
     <Publisher>AC</Publisher> 
     <ESRB>M</ESRB> 
     <Motion>False</Motion> 
     <Platform>Playstation3,XBox</Platform> 
    </game> 
</games> 

Выход:

<result> 
    <game> 
     <ID>B003JVKHEQ</ID> 
     <Name>Duty</Name> 
     <Publisher>AC</Publisher> 
     <Platform>Playstation3,XBox</Platform> 
    </game> 
</result> 

Редактировать: С буквальные результат элементы

<result>{ 
    for $game in /games/game[tokenize(Platform,',')[2]] 
    return <game>{ 
       $game/(ID|Name|Publisher|Platform) 
      }</game> 
}</result> 
+0

tokenize (Platform, ',') [2]] - почему вы использовали 2 здесь? И вы также использовали элемент ключевого слова в запросе? Это функция. Я прочитал документацию, но я ее не нашел – user507087

+0

@ user507087: О 'element', см. [Computed Element Constructors] (http://www.w3.org/TR/xquery/#id-computedElements). –

+0

@ user507087: О 'tokenize (Platform, ',') [2]': Почему я хотел бы использовать 'count (tokenize (Platform, ',')) ge 2' (подсчитывать все и тестировать, если больше или равно 2) когда я могу проверить, есть ли второй элемент? –

0

Если XQuery двигатель поддерживает XPath 2.0 вы можете использовать функцию tokenize для подсчета предметов разделенных запятыми:

count(tokenize("Playstation3,XBox",",")) 

ли это поможет? Если бы вы не смогли представить полный пример ввода XML и ожидаемого результата. Спасибо.

+0

Не могли бы вы выслать мне свой адрес электронной почты на мой идентификатор: [email protected] Я могу отправить свой xml-файл там. Помогите мне. – user507087

+0

Я не могу назвать имена платформ здесь, как playstation3, xbox. Я должен сделать его независимым. Просто считайте платформы. – user507087

+0

Г-н Деннис ... Есть там? – user507087

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