You're viewing Apigee and Apigee hybrid documentation.
View
Apigee Edge documentation.
NothingToExtract
Error message
Deployment of the API proxy through either the Apigee UI or API fails with this error message:
Error Saving Revision [revision_number] ExtractVariables [policy_name]: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory. Revision:[revision_number]; APIProxy:[proxy_name]; Organization:[org_name]; Environment:[env_name].
Example error message
Error Saving Revision 2
ExtractVariables EV-XML-Age: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory.
Example screenshot
Cause
If the Extract Variables Policy does not have any of the elements URIPath
, QueryParam
, Header
, FormParam
, XMLPayload
, or JSONPayload
, the deployment of the API Proxy fails, because there's nothing to extract.
As indicated in the error message, the Extract Variables policy must have at least one of these elements included within the policy: URIPath
, QueryParam
, Header
, FormParam
, XMLPayload
, or JSONPayload
.
Diagnosis
Examine the Extract Variables policy named in the error message. If the policy does not have even one of the following elements: URIPath
, QueryParam
, Header
, FormParam
, XMLPayload
, or JSONPayload
, then that's the cause of the error. For example, the following Extract Variables policy does not have any of the above mentioned elements:
<ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
<DisplayName>EV-XML-Age</DisplayName>
<Properties/>
</ExtractVariables>
Since none of the mandatory elements are present in the Extract Variables policy, the deployment of the API proxy fails.
Resolution
Ensure that the Extract Variables policy has at least one of these mandatory elements: URIPath
, QueryParam
, Header
, FormParam
, XMLPayload
, JSONPayload
. For example:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
<DisplayName>EV-XML-Age</DisplayName>
<Properties/>
<Source>request</Source>
<XMLPayload>
<Namespaces/>
<Variable name="age" type="integer">
<XPath>/age</XPath>
</Variable>
</XMLPayload>
</ExtractVariables>
NONEmptyPrefixMappedToEmptyURI
Error message
Deployment of the API proxy through either the Apigee UI or API fails with this error message:
Error Saving Revision [revision_number] ExtractVariables [policy_name]: Non-empty prefix [prefix_name] cannot be mapped to empty uri.
Example error message
Error Saving Revision 3
ExtractVariables EV-XML-Age: Non-empty prefix apigee cannot be mapped to empty uri.
Example screenshot
Cause
This error occurs if the Extract Variables Policy has a prefix defined in the <Namespace>
element under the <XMLPayload>
element, but no URI is defined.
Diagnosis
Identify the Extract Variables policy where the error occurred and the name of the prefix. You can find both of these items in the error message. For example, in the following error , the policy name is
EV-XML-Age
and the prefix isapigee
:ExtractVariables EV-XML-Age: Non-empty prefix apigee cannot be mapped to empty uri.
In the failed Extract Variables policy XML, verify that the name of the prefix set in the
<Namespace>
element under the<XMLPayload>
element matches the prefix name identified in the error message (step #1 above). For example, the following policy specifies a prefix namedapigee
in the<Namespace>
element , which matches what's in the error message:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age"> <DisplayName>EV-XML-Age</DisplayName> <Source clearPayload="false">request</Source> <XMLPayload stopPayloadProcessing="false"> <Namespaces> <Namespace prefix="apigee"></Namespace> <Namespace prefix="gmail">http://mail.google.com</Namespace> </Namespaces> <Variable name="legName" type="string"> <XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</Xpath> </Variable> </XMLPayload> </ExtractVariables>
Validate if the
<Namespace>
element with the specific prefix identified in step #2 has a valid URI. If the URI is missing, then that is the cause of the error.In the example Extract Variables policy shown above, notice that there's no URI corresponding to the
<Namespace>
element with the prefixapigee
; therefore, you get the error:ExtractVariables EV-XML-Age: Non-empty prefix apigee cannot be mapped to empty uri.
Resolution
Ensure that all the <Namespace>
elements defined with a prefix have a corresponding URI in the Extract Variables policy. For example:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
<DisplayName>EV-XML-Age</DisplayName>
<Source clearPayload="false">request</Source>
<XMLPayload stopPayloadProcessing="false">
<Namespaces>
<Namespace prefix="apigee">http://www.apigee.com</Namespace>
<Namespace prefix="gmail">http://mail.google.com</Namespace>
</Namespaces>
<Variable name="legName" type="string">
<XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</Xpath>
</Variable>
</XMLPayload>
</ExtractVariables>
DuplicatePrefix
Error message
Deployment of the API proxy through either the Apigee UI or API fails with this error message:
Error Saving Revision [revision_number] ExtractVariables [policy_name]: Duplicate prefix [prefix_name].
Example error message
Error Saving Revision 2
ExtractVariables EV-XML-Age: Duplicate prefix apigee.
Example screenshot
Cause
This error occurs, if the Extract Variables Policy has the same prefix defined more than once in the <Namespace>
element under the <XMLPayload>
element.
For example, this error occurs since the prefix apigee
is defined twice as shown below:
<Namespace prefix="apigee">http://www.apigee.com</Namespace>
<Namespace prefix="apigee">http://www.apigee.com</Namespace>
Diagnosis
Identify the Extract Variables policy where the error occurred and the name of the prefix. You can find both of these items in the error message. For example, in the following error, the policy name is
EV-XML-Age
and the prefix isapigee
:ExtractVariables EV-XML-Age: Duplicate prefix apigee.
In the failed Extract Variables policy XML, verify that the name of the prefix set in the
<Namespace>
element under the<XMLPayload>
element matches the prefix name identified in the error message (step #1 above). For example, the following policy specifies a prefix namedapigee
in the<Namespace>
element , which matches what's in the error message:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age"> <DisplayName>EV-XML-Age</DisplayName> <Source clearPayload="false">request</Source> <XMLPayload stopPayloadProcessing="false"> <Namespaces> <Namespace prefix="gmail">http://mail.google.com</Namespace> <Namespace prefix="apigee">http://www.apigee.com</Namespace> <Namespace prefix="apigee">http://www.apigee.com</Namespace> </Namespaces> <Variable name="legName" type="string <XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</XPath> </Variable> </XMLPayload> </ExtractVariables>
Determine if the
<Namespace>
element with the specific prefix, identified in step #2 has been defined more than once. If it is defined more than once, then that is the cause of the error.In the example Extract Variables policy shown above, notice that the
<Namespace>
element with the prefixapigee
has been defined twice; therefore, you get the error:ExtractVariables EV-XML-Age: Duplicate prefix apigee.
Resolution
Ensure that there is only one definition for each prefix in the <Namespace>
elements in the Extract Variables policy. For example:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
<DisplayName>EV-XML-Age</DisplayName>
<Source clearPayload="false">request</Source>
<XMLPayload stopPayloadProcessing="false">
<Namespaces>
<Namespace prefix="apigee">http://www.apigee.com</Namespace>
<Namespace prefix="gmail">http://mail.google.com</Namespace>
</Namespaces>
<Variable name="legName" type="string">
<XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</Xpath>
</Variable>
</XMLPayload>
</ExtractVariables>
NoXPathsToEvaluate
Error message
Deployment of the API proxy through either the Apigee UI or API fails with this error message:
Error Saving Revision [revision_number] ExtractVariables [policy_name]:no xpaths to evaluate in variable name.
Example error message
Error Saving Revision 4
ExtractVariables Extract-Variables-1: no xpaths to evaluate in variable name.
Example screenshot
Cause
If the Extract Variables Policy does not have the <XPath>
element within the <XMLPayload>
element, then the deployment of the API proxy fails with the error shown above.
Diagnosis
Identify the failed Extract Variables policy from the error message. For example, in the following error, the policy name is
Extract-Variables-1
:ExtractVariables Extract-Variables-1: no xpaths to evaluate in variable name.
In the failed Extract Variables policy XML, check if there's an
<XMLPayload>
element without the<XPath>
child element. If so, then that's the cause of the error.For example, here's an Extract Variables policy that has an
<XMLPayload>
element:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1"> <DisplayName>Extract Variables-1</DisplayName> <Properties/> <Source clearPayload="false">request</Source> <VariablePrefix>apigee</VariablePrefix> <XMLPayload stopPayloadProcessing="false"> <Namespaces/> <Variable name="HostReachable" type="boolean"> </Variable> </XMLPayload> </ExtractVariables>
Because there is no
<XPath>
element present, the deployment of the API Proxy fails.
Resolution
Ensure that the Extract Variables policy has an <XPath>
element defined under the <XMLPayload>
element. For example:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
<DisplayName>Extract Variables-1</DisplayName>
<Properties/>
<Source clearPayload="false">request</Source>
<VariablePrefix>apigee</VariablePrefix>
<XMLPayload stopPayloadProcessing="false">
<Namespaces/>
<Variable name="HostReachable" type="boolean">
<XPath>/isReachable</XPath>
</Variable>
</XMLPayload>
</ExtractVariables>
EmptyXPathExpression
Error message
Deployment of the API proxy through either the Apigee UI or API fails with this error message:
Error Saving Revision [revision_number] ExtractVariables [policy_name]: XPath expression is empty in variable name.
Example error message
Error Saving Revision 6
ExtractVariables Extract-Variables-1: XPath expression is empty in variable name.
Example screenshot
Cause
If the Extract Variables Policy has an empty <XPath>
expression within the <XMLPayload>
element, then the deployment of the API proxy fails.
Diagnosis
Identify the failed Extract Variables policy from the error message. For example, in the following error, the policy name is
Extract-Variables-1
:ExtractVariables Extract-Variables-1: no xpaths to evaluate in variable name.
In the failed Extract Variables policy XML, determine if there's an
<XMLPayload>
element with an empty<XPath>
child element. If so, then that's the cause of the error.For example, here's an Extract Variables policy that has an
<XMLPayload>
element:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1"> <DisplayName>Extract Variables-1</DisplayName> <Properties/> <Source clearPayload="false">request</Source> <VariablePrefix>apigee</VariablePrefix> <XMLPayload stopPayloadProcessing="false"> <Namespaces/> <Variable name="address" type="string"> <XPath></XPath> </Variable> </XMLPayload> </ExtractVariables>
Because there is an empty
<XPath>
element within the<XMLPayload>
element, the deployment of the API Proxy fails.
Resolution
Ensure that the Extract Variables policy has a non-empty and valid <XPath>
element defined under the <XMLPayload>
element. For example:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
<DisplayName>Extract Variables-1</DisplayName>
<Properties/>
<Source clearPayload="false">request</Source>
<VariablePrefix>apigee</VariablePrefix>
<XMLPayload stopPayloadProcessing="false">
<Namespaces/>
<Variable name="address" type="string">
<XPath>/address</XPath>
</Variable>
</XMLPayload>
</ExtractVariables>
NoJSONPathsToEvaluate
Error message
Deployment of the API proxy through either the Apigee UI or API fails with this error message:
Error Saving Revision [revision_number] ExtractVariables [policy_name]:no jsonpaths to evaluate in variable name.
Example error message
Error Saving Revision 6
ExtractVariables Extract-Variables-1: no jsonpaths to evaluate in variable name.
Example screenshot
Cause
If the Extract Variables Policy does not have the <JSONPath>
element within the <JSONPayload>
element, then the deployment of the API proxy fails with the error shown above.
Diagnosis
Identify the failed Extract Variables policy from the error message. For example, in the following error, the policy name is
Extract-Variables-1
:ExtractVariables Extract-Variables-1: no jsonpaths to evaluate in variable name.
In the failed Extract Variables policy XML, determine if there's a
<JSONPayload>
element without the required<JSONPath>
child element. If so, then that's the cause of the error.For example, here's an Extract Variables policy that has
<JSONPayload>
element:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1"> <DisplayName>Extract Variables-1</DisplayName> <Properties/> <JSONPayload> <Variable name="title"> </Variable> </JSONPayload> <Source clearPayload="false">request</Source> <VariablePrefix>apigee</VariablePrefix> </ExtractVariables>
Because there is no
<JSONPath>
child element defined under the<JSONPayload>
element, the deployment of the API Proxy fails.
Resolution
Ensure that the Extract Variables policy has a <JSONPath>
element defined under the <JSONPayload>
element. For example:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
<DisplayName>Extract Variables-1</DisplayName>
<Properties/>
<JSONPayload>
<Variable name="title">
<JSONPath>$.book.title</JSONPath>
</Variable>
</JSONPayload>
<Source clearPayload="false">request</Source>
<VariablePrefix>apigee</VariablePrefix>
</ExtractVariables>
EmptyJSONPathExpression
Error message
Deployment of the API proxy through either the Apigee UI or API fails with this error message:
Error Saving Revision [revision_number] ExtractVariables [policy_name]: JSONPath expression is empty in variable name.
Example error message
Error Saving Revision 6
ExtractVariables Extract-Variables-1: JSONPath expression is empty in variable name.
Example screenshot
Cause
If the Extract Variables Policy has an empty <JSONPath>
expression within the <JSONPayload>
element, then the deployment of the API proxy fails.
Diagnosis
Identify the failed Extract Variables policy from the error message. For example, in the following error, the policy name is
Extract-Variables-1
:ExtractVariables Extract-Variables-1: JSONPath expression is empty in variable name.
In the failed Extract Variables policy XML, verify if there's a
<JSONPayload>
element with an empty<JSONPath>
child element. If so, then that's the cause of the error.For example, here's an Extract Variables policy that has a
<JSONPayload>
element:<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1"> <DisplayName>Extract Variables-1</DisplayName> <Properties/> <JSONPayload> <Variable name="account_number" type="integer"> <JSONPath></JSONPath> </Variable> </JSONPayload> <Source clearPayload="false">request</Source> <VariablePrefix>apigee</VariablePrefix> </ExtractVariables>
Because there is an empty
<JSONPath>
element within the<JSONPayload>
element, the deployment of the API Proxy fails.
Resolution
Ensure that the Extract Variables policy has a non-empty and valid <JSONPath>
element defined under the <JSONPayload>
element. For example:
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
<DisplayName>Extract Variables-1</DisplayName>
<Properties/>
<JSONPayload>
<Variable name="account_number" type="integer">
<JSONPath>$.account.number</JSONPath>
</Variable>
</JSONPayload>
<Source clearPayload="false">request</Source>
<VariablePrefix>apigee</VariablePrefix>
</ExtractVariables>
MissingName
Error message
Deployment of the API proxy through either the Apigee UI or API fails with this error message:
Error Saving Revision [revision_number] Error occurred while validation of bean [policy_name].xml Reason: - Required attribute name is missing in [element_name]
Example error message
Error Saving Revision 6
Error occurred while validation of bean Extract-Variables-1.xml. Reason: - Required attribute name is missing in Variable
Example screenshot
Cause
If the Extract Variables Policy does not have the name
attribute in any of the policy elements like QueryParam
, Header
, FormParam
or Variable
, where it is required, then the deployment of the API proxy fails.
For example, this error occurs if the name
attribute is missing in a Variable
element.
Diagnosis
Identify the name of the Extract Variables policy where the error occurred and the element where the
name
attribute is missing. You can find these items in the error message. For example, in the following error, the policy name isExtract-Variables-1
and the element name isVariable
:Error occurred while validation of bean Extract-Variables-1.xml. Reason: - Required attribute name is missing in Variable
In the failed Extract Variables policy XML, check that all the elements with the name determined from step #1 above have a
name
attribute. If there's any element where the name attribute is missing, then that is the cause of the error.For example, the following Extract Variables policy has the
<Variable>
element defined:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1"> <DisplayName>Extract Variables-1</DisplayName> <Properties/> <Variable type="boolean"> <Pattern>{isAccountActive}</Pattern> </Variable> </ExtractVariables>
Notice that the
name
attribute is missing in theVariable
element, so the deployment of the API Proxy fails.
Resolution
Ensure that the Extract Variables Policy contains the required name
attribute, for the elements QueryParam
, Header
, FormParam
, or Variable
. For example:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
<DisplayName>Extract Variables-1</DisplayName>
<Properties/>
<Variable name="account_active" type="boolean">
<Pattern>{isAccountActive}</Pattern>
</Variable>
</ExtractVariables>
PatternWithoutVariable
Error message
Deployment of the API proxy through either the Apigee UI or API fails with this error message:
Error Saving Revision [revision_number] Pattern [pattern] should have at least one variable in ExtractVariables stepDefinition [policy_name]
Example error message
Error Saving Revision 7
Pattern /a/b/ should have at least one variable in ExtractVariables stepDefinition ExtractVariables-1.
Example screenshot
Cause
If the Extract Variables Policy does not have a variable specified within the <Pattern>
element, then the deployment of the API proxy fails. The <Pattern>
element requires the name of the variable in which extracted data will be stored.
Diagnosis
Identify the name of the Extract Variables policy where the error occurred and the pattern for which the Variable is missing. You can find these items from the error message. For example, in the following error, the policy name is
Extract-Variables-1
and the element name is/a/b
:Pattern /a/b/ should have at least one variable in ExtractVariables stepDefinition ExtractVariables-1.
In the failed Extract Variables policy XML, verify that the pattern set in the
<Pattern>
element matches the pattern identified in the error message (step #1 above). For example, the following policy specifies a pattern/a/b
, which matches what's in the error message:For example, here's an Extract Variables policy that has three
<Pattern>
elements:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractVariables-1"> <Source>request</Source> <URIPath> <Pattern ignoreCase="true">/a/{pathSeg}</Pattern> <Pattern ignoreCase="true">/a/b/</Pattern> <Pattern ignoreCase="true">/a/b/c/{pathSeg}</Pattern> </URIPath> <VariablePrefix>urirequest</VariablePrefix> </ExtractVariables>
Check if the
<Pattern>
element identified in step #2 does not have a variable. Variables must be enclosed in curly braces. If the pattern does not have a variable, then that is the cause of the error.The
<Pattern>
element having the pattern /a/b does not include a variable; therefore, the deployment of the API Proxy fails<Pattern ignoreCase="true">/a/b/</Pattern>
Resolution
Ensure any <Pattern>
elements include a variable (a name enclosed in curly
braces). For example:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables name="ExtractVariables-1">
<Source>request</Source>
<URIPath>
<Pattern ignoreCase="true">/a/{pathSeg}</Pattern>
<Pattern ignoreCase="true">/a/b/{pathSeg}</Pattern>
<Pattern ignoreCase="true">/a/b/c/{pathSeg}</Pattern>
</URIPath>
<VariablePrefix>urirequest</VariablePrefix>
</ExtractVariables>
CannotBeConvertedToNodeset
Error message
Deployment of the API proxy through either the Apigee UI or API fails with this error message:
Error Deploying Revision [revision_number] ExtractVariables [policy_name]: Result of xpath [policy_name] cannot be converted to nodeset. Context Revision:[revision_number]; APIProxy:[proxy_name]; Organization:[org_name]; Environment:[env_name].
Example error message
Error Deploying Revision 4 to test
ExtractVariables Extract-Variables-1: Result of xpath 123 cannot be converted to nodeset. Context Revision:4;APIProxy:EV-XML;Organization:aprabhashankar-eval;Environment:test.
Example screenshot
Cause
If the Extract Variables Policy has an <XPath>
expression where the <Variable>
type is defined as nodeset, but the expression cannot be converted to nodeset, then the deployment of the API proxy fails.
Diagnosis
Identify the Extract Variables policy where the error occurred and the XPath that cannot be converted to nodeset. You can find both of these items in the error message. For example, in the following error , the policy name is
Extract-Variables-1
and the XPath is123
.ExtractVariables Extract-Variables-1: Result of xpath 123 cannot be converted to nodeset. Context Revision:4;APIProxy:EV-XML;Organization:aprabhashankar-eval;Environment:test.
In the failed Extract Variables policy XML, verify that the XPath set in the
<XPath>
element matches the XPath identified in the error message (step #1 above). For example, the following policy specifies theas 123
, which matches what's in the error message:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1"> <DisplayName>Extract Variables-1</DisplayName> <Properties/> <Source clearPayload="false">request</Source> <VariablePrefix>visitor</VariablePrefix> <XMLPayload stopPayloadProcessing="false"> <Namespaces/> <Variable name="age" type="nodeset"> <XPath>123</XPath> </Variable> </XMLPayload> </ExtractVariables>
Examine the type of the
<Variable>
element corresponding to the<XPath>
identified in step #2 above. If the<Variable>
type isnodeset
, then that's the cause of the error.Notice that the
<XPath>
expression is123
in the example Extract Variables policy.<XPath>123</XPath>
The expression
123
cannot be converted to nodeset. So, the deployment of the API Proxy fails.
Resolution
Ensure that the <XPath>
expressions used in the Extract Variables policy can be converted to nodeset if the <Variable>
type is defined as nodeset. For example:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
<DisplayName>Extract Variables-1</DisplayName>
<Properties/>
<Source clearPayload="false">request</Source>
<VariablePrefix>visitor</VariablePrefix>
<XMLPayload stopPayloadProcessing="false">
<Namespaces/>
<Variable name="age" type="nodeset">
<XPath>/visitor/age</XPath>
</Variable>
</XMLPayload>
</ExtractVariables>
InvalidPattern
Error message
Deployment of the API proxy through either the Apigee UI or API fails with this error message:
Error Deploying Revision [revision_number]
Pattern [pattern] is invalid in ExtractVariables stepDefinition [policy_name]
Example error message
Error Deploying Revision 18 to test
Pattern {*} is invalid in ExtractVariables stepDefinition ExtractVariables-2.
Example screenshot
Cause
If the <Pattern>
element definition is invalid in any of the elements like URIPath
, QueryParam
, Header
, FormParam
, XMLPayload
or JSONPayload
within the Extract Variables Policy, then the deployment of the API proxy fails.
Diagnosis
Identify the failing Extract Variables policy from the error message. For example, in the following error, the policy name is
Extract-Variables-2
:Pattern {*} is invalid in ExtractVariables stepDefinition ExtractVariables-2.
In the failed Extract Variables policy XML, check if any of these elements are present and include a
<Pattern>
element.:URIPath
,QueryParam
,Header
,FormParam
,XMLPayload
orJSONPayload
.For example, here's an example Extract Variables policy with a
<Pattern>
element within<QueryParam>
element:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractVariables-2"> <DisplayName>ExtractVariables-2</DisplayName> <Source>request</Source> <QueryParam name="code"> <Pattern ignoreCase="true">{*}</Pattern> </QueryParam> <VariablePrefix>queryinfo</VariablePrefix> </ExtractVariables>
Examine the definition of each of the
<Pattern>
elements. If there's any<Pattern>
element with an invalid definition, then that is the cause of the error.In the example Extract Variables policy shown above, notice that the
<Pattern>
definition within the<QueryParam>
element is invalid; therefore, the deployment of the API Proxy fails. See also About matching and variable creation<Pattern ignoreCase="true">{*}</Pattern>
Resolution
Ensure that the <Pattern>
element definition within the elements URIPath
, QueryParam
, Header
, FormParam
, XMLPayload
or JSONPayload
in the Extract Variables policy is valid. For example:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables name="ExtractVariables-2">
<DisplayName>Extract a value from a query parameter</DisplayName>
<Source>request</Source>
<QueryParam name="code">
<Pattern ignoreCase="true">{code}</Pattern>
</QueryParam>
<VariablePrefix>queryinfo</VariablePrefix>
</ExtractVariables>
See also About matching and variable creation
XPathCompilationFailed
Error message
Deployment of the API proxy through either the Apigee UI or API fails with this error message:
Error Deploying Revision [revision_number] ExtractVariables [policy_name]: Failed to compile xpath [xpath] Context Revision:[revision_number]; APIProxy:[proxy_name]; Organization:[org_name]; Environment:[env_name].
Example error message
Error Deploying Revision 1 to test
ExtractVariables EV-XML-Age: Failed to compile xpath /apigee:Directions/apigee:route/apigee:leg/apigee:name. Context Revision:1;APIProxy:EV-XML;Organization:aprabhashankar-eval;Environment:test.
Example screenshot
Cause
If the prefix or the value used in the <XPath>
element is not part of any of the declared namespaces in the Extract Variables Policy, then the deployment of the API proxy fails.
You can find more information about namespaces, XPath and prefix in XML Namespaces and How They Affect XPath and XSLT.
Diagnosis
Identify the Extract Variables policy where the error occurred and the XPath that could not be compiled. You can find both of these items in the error message. For example, in the following error , the policy name is
EV-XML-Age
and the xpath is/apigee:Directions/apigee:route/apigee:leg/apigee:name
.ExtractVariables EV-XML-Age: Failed to compile xpath /apigee:Directions/apigee:route/apigee:leg/apigee:name. Context Revision:1;APIProxy:EV-XML;Organization:aprabhashankar-eval;Environment:test.
In the failed Extract Variables policy XML, verify that the XPath set in the
<XPath>
element matches the XPath identified in the error message (step #1 above). For example, the following policy specifies theas /apigee:Directions/apigee:route/apigee:leg/apigee:name
, which matches what's in the error message:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age"> <DisplayName>EV-XML-Age</DisplayName> <Source clearPayload="false">request</Source> <XMLPayload stopPayloadProcessing="false"> <Namespaces> <Namespace prefix="gmail">http://mail.google.com</Namespace> </Namespaces> <Variable name="legName" type="string"> <XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</XPath> </Variable> </XMLPayload> </ExtractVariables>
Examine the
<Namespaces>
and<XPath>
elements in the Extract Variables policy. If the specific<XPath>
indicated in the error message uses a prefix or value that is not part of the namespaces declared in the Extract Variables policy, then that is the cause of the error.Notice that the specific
<XPath>
uses the prefixapigee
in the example Extract Variables policy.<XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</XPath>
However, the prefix
apigee
is not defined in any of the<Namespace>
elements; therefore, the compilation of<XPath>
fails leading to deployment failure.
Resolution
Ensure all the namespaces that are being used in <XPath>
elements are declared in the Extract Variables Policy. For example:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
<DisplayName>EV-XML-Age</DisplayName>
<Source clearPayload="false">request</Source>
<XMLPayload stopPayloadProcessing="false">
<Namespaces>
<Namespace prefix="apigee">http://www.apigee.com</Namespace>
<Namespace prefix="gmail">http://mail.google.com</Namespace>
</Namespaces>
<Variable name="legName" type="string">
<XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</XPath>
</Variable>
</XMLPayload>
</ExtractVariables>