xpath pmd

Cómo tener condiciones anidadas para las reglas PMD Xpath



(1)

Necesita tener al menos algunos conocimientos básicos / comprensión de XPath .

Vi el uso de . al principio del enunciado dentro de [] en algún código de ejemplo. ¿Para qué se usan?

[] se llama predicado . Debe contener una expresión booleana. Debe seguir inmediatamente una prueba de nodo. Esto especifica una condición adicional para que se seleccione un nodo que satisfaga la prueba de nodo.

Por ejemplo :

/*/num

selecciona todos los elementos llamados num que son hijos del elemento superior del documento XML.

Sin embargo, si queremos seleccionar solo esos elementos num , cuyo valor es un entero impar, agregamos esta condición adicional dentro de un predicado:

/*/num[. mod 2 = 1]

Ahora, esta última expresión selecciona todos los elementos denominados num que son hijos del elemento superior del documento XML y cuyo valor de cadena representa un entero impar.

. denota el nodo de contexto : este es el nodo que se ha seleccionado hasta el momento (o el nodo inicial desde el que se evalúa la expresión XPath completa).

En mi caso particular, necesito combinar las siguientes piezas ...

Olvidaste decir de qué manera / cómo deberían combinarse las tres expresiones. En XPath, algunos de los "combinadores" frecuentemente utilizados son los operadores and , or , y la función not() .

Por ejemplo, si desea seleccionar elementos que son seleccionados por las tres expresiones XPath provistas, puede usar el operador and :

//PrimaryExpression [not(PrimarySuffix/Arguments) and PrimaryPrefix/@Label=''this'' ]

Mi regla requiere que los aplique solo a métodos sin ''get'' como parte de su nombre. En otras palabras, mis reglas deben aplicarse solo a los métodos no buscadores en la clase. Sé que puedo tener acceso a todos los métodos no buscadores, puedo usar

//MethodDeclarator[not(contains(@Image,''get''))]

Sin embargo, no sé la sintaxis sobre dónde inserto mi lógica para las reglas. Es como

//MethodDeclarator[ not(contains(@Image,''get'')) ''Some Rule Statements'' ]

Vi el uso de. al principio del enunciado dentro de [] en algún código de ejemplo. ¿Para qué se usan?

En mi caso particular, necesito combinar las siguientes piezas pero hasta ahora no puedo lograrlo todavía.

Pieza 1:

//PrimaryExpression[not(PrimarySuffix/Arguments)]

Pieza 2:

//MethodDeclarator[not(contains(@Image,''get''))]

Pieza 3:

//PrimaryExpression[PrimaryPrefix/@Label=''this'']