Так у меня есть следующий XML-файл:Как сравнить два элемента в XML-файле?
<!DOCTYPE music SYSTEM "music.dtd">
<music>
<songs>
<song sid = "s1" time = "2:04" year = "1994">
<title>Thriller </title>
<artist>Michael </artist>
<composers>
<composer>Michael</composer>
</composers>
<album> Thriller album</album>
</song>
<song sid = "s2" time = "2:00" year = "1999">
<title> Billy </title>
<artist> Thomas </artist>
<composers>
<composer> Rick </composer>
</composers>
<album> The one </album>
</song>
<song sid = "s3" time = "1:50" year = "2000">
<title> Down </title>
<artist> PJ </artist>
<composers>
<composer>Jerry </composer>
</composers>
<album>Forty </album>
</song>
</songs>
<playlists>
<playlist pid = "p1" creator = "Tom">
<track sid = "s1"/>
</playlist>
</playlists>
</music>
То, что я хочу сделать, это получить все SID из песен, которые не в плейлисты поэтому в этом XML-файле, я хочу иметь обратный запрос будет sid: s2 и s3, потому что ни один из этих двух не находится в списках воспроизведения, а так как s1 находится в списках воспроизведения, его не следует возвращать.
Я пытаюсь использовать этот запрос:
for $x in doc("music.xml")/music/songs/song/@sid
return <sid>{data($x)}</sid>
Я пытался сохранить результат того, что в переменном, чтобы я мог потом сравнить его с другим запросом, который будет траверсировать через плейлист, но я немного теряется на том, как даже сохранить результаты запроса в переменной. Любая помощь? Благодарю.
Это тоже может работать! Если вы хотите захватить результат этого выражения в переменной, добавьте 'let $ results: =' перед этим и 'return $ results' (или какое-то другое выражение) после него. XQuery очень гибкий;) – joemfb
выглядит как ваш вопрос получил отрезанный – joemfb
Как бы я его возвращал как –
user125535