Xquery проблема в подсчете - PullRequest
0 голосов
/ 18 ноября 2010

alt text

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

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

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

Ответы [ 2 ]

0 голосов
/ 18 ноября 2010

Это 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 голосов
/ 18 ноября 2010

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

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

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

...