Как выполнить XQuery для всех документов XML в папке

Если у вас есть поле ввода, например

<input type="file" id="file" name="file" onchange="add(event)"/>

Вы можете получить файл в формате BLOB:

function add(event){
  var userFile = document.getElementById('file');
  userFile.src = URL.createObjectURL(event.target.files[0]);
  var data = userFile.src;
}
1
задан Konrad 18 January 2019 в 09:48
поделиться

1 ответ

Я могу немного опоздать, но, скорее всего, следующий XQuery будет делать то, что вы хотите, он возвращает путь к каждому XML-файлу, который не содержит определенного элемента:

let $path := "."
for $file in file:list( $path, true(), '*.xml')
  let $path := $path || "/" || $file
  where not(
    exists(fetch:xml($path)/foo/bar[text() = "Text"])
  )  
return $path 

Если вы были заинтересованы только в том, чтобы в конкретном XML-файле были или не содержали определенный элемент, следующий запрос мог бы быть полезным:

declare variable $path := "/Users/michael/Code/foo";

every $doc in file:list($path, true(), '*.xml') (: returns a sequence of file-names :)
              => for-each(concat($path,"/", ?)) (: returns a sequence of full paths to each file :)
              => for-each(fetch:xml#1)          (: returns a sequence of documents :)
satisfies exists(
  $doc/*/*[text() = "Text"]
)

Надеюсь, это поможет; -)

0
ответ дан michael 18 January 2019 в 09:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: