Я пытаюсь получить значение элемента из документа xml на основе значения элемента-брата.
Например, <data>
имеет серию <questions>
, каждый <questions>
имеет серию <answers>
и <answer>
, который содержит индекс ответа, который выбрал человек.
Я пытаюсь спросить, есть ли в моем наборе <questions>
с <answer>
, указывающим на одну из <answers>
записей с <isCorrect>
значением "true",Сейчас мне просто важно, есть ли правильный ответ на один из вопросов.
<data>
<questions>
<isGraded>true</isGraded>
<answers>
<title>first answer</title>
<isCorrect>true</isCorrect>
</answers>
<answers>
<title>second answer</title>
<isCorrect>false</isCorrect>
</answers>
<answer>1</answer>
</questions>
<questions>
<isGraded>true</isGraded>
<answers>
<title>first answer</title>
<isCorrect>false</isCorrect>
</answers>
<answers>
<title>second answer</title>
<isCorrect>true</isCorrect>
</answers>
<answer>0</answer>
</questions>
</data>
Это то, к чему я отношусь:
SET @myValue = @myDoc.value('(/data//questions[isGraded[1]="true"]/child::answers[position() = parent::answer+1][isCorrect="true"])[1]','nvarchar(max)')
Если я заменю часть «parent :: answer + 1» значением из<answer>
Я получаю искомое значение, но я не знаю, как автоматически посмотреть значение элемента <answer>
, чтобы сделать это.
Или это вообще возможно?