Xml XPath查询以先验证一个元素,再验证另一个元素

Xml XPath查询以先验证一个元素,再验证另一个元素,xml,xpath,Xml,Xpath,在SonarQube中使用XPath会遇到一个问题,即我无法找到一个查询来验证一个元素是否在另一个元素之前 例如,在下一个XML中,我试图检查元素是否有前面的元素。 如果有,它应该忽略该语句,如果没有,它应该让选择元素/elements节点 <COMPILATION_UNIT tokenValue="CREATE" tokenLine="1" tokenColumn="0"> <PL_SQL_COMPILATION_UNIT_NO_EOF tokenValue="CRE

在SonarQube中使用XPath会遇到一个问题,即我无法找到一个查询来验证一个元素是否在另一个元素之前

例如,在下一个XML中,我试图检查元素
是否有前面的
元素。
如果有,它应该忽略该语句,如果没有,它应该让
选择
元素/elements
节点

<COMPILATION_UNIT tokenValue="CREATE" tokenLine="1" tokenColumn="0">
    <PL_SQL_COMPILATION_UNIT_NO_EOF tokenValue="CREATE" tokenLine="1" tokenColumn="0">
        <CREATE_PACKAGE tokenValue="CREATE" tokenLine="1" tokenColumn="0">
            <CREATE tokenValue="CREATE" tokenLine="1" tokenColumn="0"/>
            <OR tokenValue="OR" tokenLine="1" tokenColumn="7"/>
            <IDENTIFIER tokenValue="REPLACE" tokenLine="1" tokenColumn="10"/>
            <IDENTIFIER tokenValue="PACKAGE" tokenLine="1" tokenColumn="18"/>
            <BIN_SCHEMA tokenValue="NEXUS_GIS" tokenLine="1" tokenColumn="26">
                <BIN_IDENTIFIER tokenValue="NEXUS_GIS" tokenLine="1" tokenColumn="26">
                    <IDENTIFIER tokenValue="NEXUS_GIS" tokenLine="1" tokenColumn="26"/>
                </BIN_IDENTIFIER>
            </BIN_SCHEMA>
            <DOT tokenValue="." tokenLine="1" tokenColumn="35"/>
            <BIN_PACKAGE tokenValue="PKG_EM_GI" tokenLine="1" tokenColumn="36">
                <BIN_IDENTIFIER tokenValue="PKG_EM_GI" tokenLine="1" tokenColumn="36">
                    <IDENTIFIER tokenValue="PKG_EM_GI" tokenLine="1" tokenColumn="36"/>
                </BIN_IDENTIFIER>
            </BIN_PACKAGE>

            ...............

        </CREATE_PACKAGE>
    </PL_SQL_COMPILATION_UNIT_NO_EOF>
</COMPILATION_UNIT>

...............

我从sslr pl/sql工具包中获得了这种XML格式,它是一种XPath,用于选择所有前面没有
元素的
相对于
/COMPILATION\u UNIT/PL\u SQL\u COMPILATION\u UNIT\u NO\u EOF/CREATE\u PACKAGE
轴是:

BIN_PACKAGE[count(preceding-sibling::BIN_SCHEMA) = 0]/BIN_IDENTIFIER/IDENTIFIER

在此表达式中,
/BIN_IDENTIFIER/IDENTIFIER
表示所需的目标表达式
element/elements
。随意更换。

您是否尝试过
//BIN\u SCHEMA/以下同级::BIN\u PACKAGE
@Andersson只是测试ti,而不是我想要的。就像我说的,我想得到缺少前面元素BIN_模式的BIN_包。@zx485我说的是1个或更多elements@zx485运行Sonara可能是为了测试它,但几乎可以肯定它会