Xquery для сохранения данных в файле XML

Ниже приведена структура XML:

<Documents>
 <Doc n="Name1" year="2010">
 .....
 </Doc>
 <Doc n="Name2" year="2010">
 .....
 </Doc>
 <Doc n="Name3" year="2011">
 .....
 </Doc>
 <Doc n="Name4" year="2011">
 .....
 </Doc>

I am using BaseX to store this document. I need to extract some data from this and store it as a xml file. Say, I need a separate xml file for years.

Как это сделать?


person Community    schedule 16.10.2013    source источник


Ответы (1)


Поскольку вы используете BaseX, перейдите по этой ссылке -

http://docs.basex.org/wiki/File_Module#file:append

for $x in doc('DBNAME')//Doc
  where $x/@year eq '2010'
  return file:append("C:\2010.xml", $x)

Этот запрос извлечет необходимые данные в файл с именем 2010.xml на диске C. Имя файла и местоположение могут быть изменены в соответствии с вашими требованиями.

Используя приведенный выше запрос, вы измените значение года 2010 по мере необходимости. Если у вас есть год с разными значениями и в порядке, как я вижу из структуры, вы можете использовать следующий запрос. Этот запрос создаст несколько файлов за все годы.

for $year in (2010 to 2011)
  (: Year are specified :)
  let $fName := concat("C:\", $year, "B.xml")
  (: The path is created and stored in $fName variable :)
  for $x in doc('docs')//Doc
    where $x/@year eq xs:string($year)
    return file:append($fName, $x)

Я надеюсь, что оба примера вполне понятны.

person John    schedule 16.10.2013
comment
Спасибо большое. Второй - лучший подходящий ответ в соответствии с моими потребностями. - person ; 16.10.2013