XPath查询以验证另一个元素



使用xpath in in sonarqube,我陷入了一个问题,我无法找到查询以验证元素是否在另一个元素之前的问题。

例如,在下一个XML中,我要检查元素<BIN_PACKAGE>是否具有前面的<BIN_SCHEMA>元素。
如果有的话,它应该忽略该语句,如果没有,则应让<BIN_SCHEMA>选择element/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 TOOLKIT

获得此XML格式

xpath选择所有没有前面<BIN_SCHEMA>元素的<BIN_PACKAGE>
相对于/COMPILATION_UNIT/PL_SQL_COMPILATION_UNIT_NO_EOF/CREATE_PACKAGE轴是:

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

在此表达式中,/BIN_IDENTIFIER/IDENTIFIER表示您所需的目标表达式element/elements。按照您的喜好更换它。

相关内容

  • 没有找到相关文章

最新更新