2017-03-13 2 views
-1

XPath in SonarQube verwenden Ich bin in einem Problem, das ich nicht finden kann, eine Abfrage zu überprüfen, ob ein Element vor einem anderen Element ist.XPath-Abfrage, um ein Element vor einem anderen zu validieren

Zum Beispiel versuche ich im nächsten XML zu überprüfen, ob das Element <BIN_PACKAGE> ein vorangestelltes <BIN_SCHEMA> Element hat.
Wenn dies der Fall ist, sollte die Anweisung ignoriert werden. Ist dies nicht der Fall, sollte <BIN_SCHEMA> den Knoten element/elements auswählen.

<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> 

I erhalten diese XML-Format von SSLR PL/SQL-Toolkit

+0

haben Sie versucht '// BIN_SCHEMA/folgende-Geschwister :: BIN_PACKAGE' – Andersson

+0

@Andersson Nur ti testen und ist nicht das, was ich suche. Wie ich schon sagte, ich möchte die BIN_PACKAGE, die das vorherige Element BIN_SCHEMA fehlt. –

+0

@ zx485 Ich sprach über 1 oder mehr Elemente –

Antwort

1

Ein XPath um alle <BIN_PACKAGE> auszuwählen, die <BIN_SCHEMA> Elemente
relativ zur /COMPILATION_UNIT/PL_SQL_COMPILATION_UNIT_NO_EOF/CREATE_PACKAGE Achse kein voraus haben, ist:

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

In diesem Ausdruck steht /BIN_IDENTIFIER/IDENTIFIER für Ihren gewünschten Zielausdruck element/elements. Ersetzen Sie es, wie Sie möchten.

+0

Es funktioniert, danke –

Verwandte Themen