这是用于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