Xml XPath查询以先验证一个元素,再验证另一个元素
在SonarQube中使用XPath会遇到一个问题,即我无法找到一个查询来验证一个元素是否在另一个元素之前 例如,在下一个XML中,我试图检查元素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
是否有前面的
元素。如果有,它应该忽略该语句,如果没有,它应该让
选择元素/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可能是为了测试它,但几乎可以肯定它会