這是用於C代碼檢測的。我試圖標記沒有休息的案例陳述。當break語句之前有多行時,樹的層次結構如圖所示。這是C中的例子:XPath:查找以下不遵循訂單模式的兄弟姐妹
switch (x) {
case 1:
if (...) {...}
int y = 0;
for (...) {...}
break;
case 2:
它以某種方式表示這樣的:
<switch>
<case>...</case>
<if>...</if>
<expression>...</expression>
<for>...</for>
<break>...</break>
<case>...</case>
</switch>
我需要找到<case>
S其中任意數量的行後存在<break>
,而是先下一<case>
。
此代碼僅可以幫助我找到那些破不立即跟隨的情況下:
//case [name(following-sibling::*[1]) != 'break']
..但是,當我嘗試使用以下同胞:: *它會找到一個突破,但不一定在下一個案件之前。
我該怎麼做?
你可以使用XPath 2.0還是你堅持1.0?此外,你的第一段說你正在尋找*不*休息的病例陳述;你的第三段說你正在尋找那些*做*。它可能相當於幾乎相同的東西,但清晰度會有所幫助。 – LarsH 2014-09-02 03:52:16
好點@LarsH,我更新了我的答案以反映這個限制。 – 2014-09-02 13:07:58
對不起,困惑。我試圖從找到休息開始,認爲我只是在聲明中添加一個NOT來找到那些沒有休息的人。 – user2755941 2014-09-02 20:38:18