spss.EvaluateXPath Function (Python)
spss.EvaluateXPath(handle,context,xpath). Evaluates an XPath expression against a specified XPath DOM and returns the result as a list. The argument handle specifies the particular XPath DOM and must be a valid handle name defined by a previous spss.CreateXPathDictionary function or IBM® SPSS® Statistics OMS command. The argument context defines the XPath context for the expression and should be set to "/dictionary" for a dictionary DOM or "/outputTree" for an output XML DOM created by the OMS command. The argument xpath specifies the remainder of the XPath expression and must be quoted.
Example
#retrieve a list of all variable names for the active dataset.
handle='demo'
spss.CreateXPathDictionary(handle)
context = "/dictionary"
xpath = "variable/@name"
varnames = spss.EvaluateXPath(handle,context,xpath)
Example
*Use OMS and a Python program to determine the number of uniques values
for a specific variable.
OMS SELECT TABLES
/IF COMMANDs=['Frequencies'] SUBTYPES=['Frequencies']
/DESTINATION FORMAT=OXML XMLWORKSPACE='freq_table'.
FREQUENCIES VARIABLES=var1.
OMSEND.
BEGIN PROGRAM.
import spss
handle='freq_table'
context="/outputTree"
#get rows that are totals by looking for varName attribute
#use the group element to skip split file category text attributes
xpath="//group/category[@varName]/@text"
values=spss.EvaluateXPath(handle,context,xpath)
#the "set" of values is the list of unique values
#and the length of that set is the number of unique values
uniqueValuesCount=len(set(values))
END PROGRAM.
Note: In the IBM SPSS Statistics documentation, XPath examples for the OMS command use a namespace prefix in front of each element name (the prefix oms: is used in the OMS examples). Namespace prefixes are not valid for EvaluateXPath.
Documentation for the output schema and the dictionary schema is available from the Help system.