不要な質問に対するすべての回答を見つけたい。これはxmlコードです:
<submittedPoll>
<pollHead>
<code>2</code>
</pollHead>
<pollBody>
<topic code="T1">
<topicHead>
<title>XML Section</title>
</topicHead>
<topicBody>
<question code="T1Q1" required="true" type="unique">Which encoding did you use?</question>
<answer code="T1Q1_1">ISO-8859-1</answer>
<question code="T1Q2" required="true" type="unique">How did you implement blabla?</question>
<answer code="T1Q2_1">blabla</answer>
<question code="T1Q3" type="unique">Did you blabla?</question>
<question code="T1Q4" type="unique">How many times did you blabla?</question>
</topicBody>
</topic>
<topic code="T4">
<topicHead>
<title>Other section</title>
</topicHead>
<topicBody>
<question code="T4Q1" type="unique">blabla question?</question>
<question code="T4Q2" type="unique">blabla other question?</question>
<question code="T4Q3" required="true" type="multiple">blabla third question?</question>
<answer code="T4Q3_1">blabla</answer>
<answer code="T4Q3_2">blablabla</answer>
<question code="T4Q4" type="unique">blablarly?</question>
<question code="T4Q5" type="unique">blablanotrly?</question>
<question code="T4Q6" type="unique">How did you do that?</question>
<answer code="T4Q6_2">BaseX</answer>
</topicBody>
</topic>
</pollBody>
</submittedPoll>
この XPath クエリを作成しましたが、期待どおりに動作しません。
/submittedPoll/pollBody/topic/topicBody/question[not(@required) or (@required="false")]/following-sibling::answer[starts-with(@code, current()/@code)]
これは、T4Q3_1、T4Q3_2、および T4Q6_2 を返します。しかし、T4Q3_1 と T4Q3_2 は、必須の質問に従っているため、間違っています。
私は何を間違っていますか?機能をよく理解していなかったのかもしれませんcurrent()
。
注:すべての回答の「コード」属性は、関連する質問の「コード」属性で始まります (つまり、質問T4Q3には回答T4Q3 _1、T4Q3 _2 などがあります)。