Ссылаться на значение брата в вызове .value ()? - PullRequest
0 голосов
/ 27 сентября 2019

Я пытаюсь получить значение элемента из документа 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>, чтобы сделать это.

Или это вообще возможно?

...