Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee X.info
NothingToExtract
Сообщение об ошибке
Развертывание API-прокси через пользовательский интерфейс Edge или API управления Edge завершается с ошибкой, о которой сообщается ниже:
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].
Пример сообщения об ошибке
Error Saving Revision 2
ExtractVariables EV-XML-Age: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory.
Пример скриншота

Причина
Если в политике извлечения переменных отсутствуют какие-либо элементы URIPath , QueryParam , Header , FormParam , XMLPayload или JSONPayload , развертывание API-прокси завершится неудачей, поскольку извлекать нечего.
Как указано в сообщении об ошибке, политика извлечения переменных должна содержать как минимум один из следующих элементов: URIPath , QueryParam , Header , FormParam , XMLPayload или JSONPayload .
Диагноз
Изучите политику извлечения переменных, указанную в сообщении об ошибке. Если в политике отсутствует хотя бы один из следующих элементов: URIPath , QueryParam , Header , FormParam , XMLPayload или JSONPayload , то это и является причиной ошибки. Например, следующая политика извлечения переменных не содержит ни одного из вышеперечисленных элементов:
<ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
<DisplayName>EV-XML-Age</DisplayName>
<Properties/>
</ExtractVariables>
Поскольку ни один из обязательных элементов не присутствует в политике извлечения переменных, развертывание API-прокси завершается неудачей.
Разрешение
Убедитесь, что политика извлечения переменных содержит хотя бы один из следующих обязательных элементов: URIPath , QueryParam , Header , FormParam , XMLPayload , JSONPayload . Например:
<?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
Сообщение об ошибке
Развертывание API-прокси через пользовательский интерфейс Edge или API управления Edge завершается с ошибкой, о которой сообщается ниже:
Error Saving Revision [revision_number] ExtractVariables [policy_name]: Non-empty prefix [prefix_name] cannot be mapped to empty uri.
Пример сообщения об ошибке
Error Saving Revision 3
ExtractVariables EV-XML-Age: Non-empty prefix apigee cannot be mapped to empty uri.
Пример скриншота

Причина
Эта ошибка возникает, если политика извлечения переменных имеет префикс, определенный в элементе <Namespace> внутри элемента <XMLPayload> , но URI не определен.
Диагноз
Укажите политику извлечения переменных, в которой произошла ошибка, и имя префикса. Оба эти элемента можно найти в сообщении об ошибке. Например, в следующем примере ошибки имя политики —
EV-XML-Age, а префикс —apigee:ExtractVariables EV-XML-Age: Non-empty prefix apigee cannot be mapped to empty uri.В XML-файле политики извлечения переменных, в которой произошла ошибка, убедитесь, что имя префикса, заданного в элементе
<Namespace>внутри элемента<XMLPayload>, совпадает с именем префикса, указанным в сообщении об ошибке (шаг #1 выше). Например, следующая политика указывает префикс с именемapigeeв элементе<Namespace>, который совпадает с именем в сообщении об ошибке:<?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>Проверьте, имеет ли элемент
<Namespace>с указанным на шаге #2 префиксом действительный URI. Если URI отсутствует, это и является причиной ошибки.В приведенном выше примере политики извлечения переменных обратите внимание, что отсутствует URI, соответствующий элементу
<Namespace>с префиксомapigee; поэтому вы получаете ошибку:ExtractVariables EV-XML-Age: Non-empty prefix apigee cannot be mapped to empty uri.
Разрешение
Убедитесь, что все элементы <Namespace> , определенные с префиксом, имеют соответствующий URI в политике извлечения переменных. Например:
<?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
Сообщение об ошибке
Развертывание API-прокси через пользовательский интерфейс Edge или API управления Edge завершается с ошибкой, о которой сообщается ниже:
Error Saving Revision [revision_number] ExtractVariables [policy_name]: Duplicate prefix [prefix_name].
Пример сообщения об ошибке
Error Saving Revision 2
ExtractVariables EV-XML-Age: Duplicate prefix apigee.
Пример скриншота

Причина
Эта ошибка возникает, если политика извлечения переменных имеет один и тот же префикс, определенный более одного раза в элементе <Namespace> внутри элемента <XMLPayload> .
Например, эта ошибка возникает из-за того, что префикс apigee определен дважды, как показано ниже:
<Namespace prefix="apigee">http://www.apigee.com</Namespace>
<Namespace prefix="apigee">http://www.apigee.com</Namespace>
Диагноз
Укажите политику извлечения переменных, в которой произошла ошибка, и имя префикса. Оба эти элемента можно найти в сообщении об ошибке. Например, в следующем сообщении об ошибке имя политики —
EV-XML-Age, а префикс —apigee:ExtractVariables EV-XML-Age: Duplicate prefix apigee.В XML-файле политики извлечения переменных, в которой произошла ошибка, убедитесь, что имя префикса, заданного в элементе
<Namespace>внутри элемента<XMLPayload>, совпадает с именем префикса, указанным в сообщении об ошибке (шаг #1 выше). Например, следующая политика указывает префикс с именемapigeeв элементе<Namespace>, который совпадает с именем в сообщении об ошибке:<?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>Определите, был ли элемент
<Namespace>с указанным на шаге #2 префиксом определен более одного раза. Если он определен более одного раза, то это и является причиной ошибки.В приведенном выше примере политики извлечения переменных обратите внимание, что элемент
<Namespace>с префиксомapigeeбыл определен дважды; поэтому возникает ошибка:ExtractVariables EV-XML-Age: Duplicate prefix apigee.
Разрешение
Убедитесь, что для каждого префикса в элементах <Namespace> политики извлечения переменных существует только одно определение. Например:
<?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
Сообщение об ошибке
Развертывание API-прокси через пользовательский интерфейс Edge или API управления Edge завершается с ошибкой, о которой сообщается ниже:
Error Saving Revision [revision_number] ExtractVariables [policy_name]:no xpaths to evaluate in variable name.
Пример сообщения об ошибке
Error Saving Revision 4
ExtractVariables Extract-Variables-1: no xpaths to evaluate in variable name.
Пример скриншота

Причина
Если в политике извлечения переменных отсутствует элемент <XPath> внутри элемента <XMLPayload> , то развертывание API-прокси завершится с ошибкой, указанной выше.
Диагноз
Определите, какая политика извлечения переменных не удалась, из сообщения об ошибке. Например, в следующем сообщении об ошибке имя политики —
Extract-Variables-1:ExtractVariables Extract-Variables-1: no xpaths to evaluate in variable name.В XML-файле политики извлечения переменных, в котором произошла ошибка, проверьте, есть ли элемент
<XMLPayload>без дочернего элемента<XPath>. Если есть, то это и есть причина ошибки.Например, вот политика извлечения переменных, содержащая элемент
<XMLPayload>:<?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>Поскольку элемент
<XPath>отсутствует, развертывание API-прокси завершается неудачей.
Разрешение
Убедитесь, что политика «Извлечение переменных» содержит элемент <XPath> , определенный внутри элемента <XMLPayload> . Например:
<?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
Сообщение об ошибке
Развертывание API-прокси через пользовательский интерфейс Edge или API управления Edge завершается с ошибкой, о которой сообщается ниже:
Error Saving Revision [revision_number] ExtractVariables [policy_name]: XPath expression is empty in variable name.
Пример сообщения об ошибке
Error Saving Revision 6
ExtractVariables Extract-Variables-1: XPath expression is empty in variable name.
Пример скриншота

Причина
Если в элементе <XMLPayload> политики извлечения переменных содержится пустое выражение <XPath> , то развертывание API-прокси завершится неудачей.
Диагноз
Определите, какая политика извлечения переменных не удалась, из сообщения об ошибке. Например, в следующем сообщении об ошибке имя политики —
Extract-Variables-1:ExtractVariables Extract-Variables-1: no xpaths to evaluate in variable name.В XML-файле политики извлечения переменных, в котором произошла ошибка, определите, существует ли элемент
<XMLPayload>с пустым дочерним элементом<XPath>. Если да, то это и есть причина ошибки.Например, вот политика извлечения переменных, содержащая элемент
<XMLPayload>:<?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>Поскольку внутри элемента
<XMLPayload>находится пустой элемент<XPath>, развертывание API-прокси завершается неудачей.
Разрешение
Убедитесь, что политика «Извлечение переменных» содержит непустой и допустимый элемент <XPath> , определенный внутри элемента <XMLPayload> . Например:
<?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
Сообщение об ошибке
Развертывание API-прокси через пользовательский интерфейс Edge или API управления Edge завершается с ошибкой, о которой сообщается ниже:
Error Saving Revision [revision_number] ExtractVariables [policy_name]:no jsonpaths to evaluate in variable name.
Пример сообщения об ошибке
Error Saving Revision 6
ExtractVariables Extract-Variables-1: no jsonpaths to evaluate in variable name.
Пример скриншота

Причина
Если в политике извлечения переменных отсутствует элемент <JSONPath> внутри элемента <JSONPayload> , то развертывание API-прокси завершится с ошибкой, указанной выше.
Диагноз
Определите, какая политика извлечения переменных не удалась, из сообщения об ошибке. Например, в следующем сообщении об ошибке имя политики —
Extract-Variables-1:ExtractVariables Extract-Variables-1: no jsonpaths to evaluate in variable name.В XML-файле политики извлечения переменных, в котором произошла ошибка, определите, существует ли элемент
<JSONPayload>без обязательного дочернего элемента<JSONPath>. Если да, то это и есть причина ошибки.Например, вот политика извлечения переменных, содержащая элемент
<JSONPayload>:<?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>Поскольку в элементе
<JSONPayload>не определен дочерний элемент<JSONPath>, развертывание API-прокси завершается неудачей.
Разрешение
Убедитесь, что в политике извлечения переменных определен элемент <JSONPath> внутри элемента <JSONPayload> . Например:
<?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
Сообщение об ошибке
Развертывание API-прокси через пользовательский интерфейс Edge или API управления Edge завершается с ошибкой, о которой сообщается ниже:
Error Saving Revision [revision_number] ExtractVariables [policy_name]: JSONPath expression is empty in variable name.
Пример сообщения об ошибке
Error Saving Revision 6
ExtractVariables Extract-Variables-1: JSONPath expression is empty in variable name.
Пример скриншота

Причина
Если в элементе <JSONPayload> политики извлечения переменных содержится пустое выражение <JSONPath> , то развертывание API-прокси завершится неудачей.
Диагноз
Определите, какая политика извлечения переменных не удалась, из сообщения об ошибке. Например, в следующем сообщении об ошибке имя политики —
Extract-Variables-1:ExtractVariables Extract-Variables-1: JSONPath expression is empty in variable name.В XML-файле политики извлечения переменных, в котором произошла ошибка, проверьте, есть ли элемент
<JSONPayload>с пустым дочерним элементом<JSONPath>. Если да, то это и есть причина ошибки.Например, вот политика извлечения переменных, содержащая элемент
<JSONPayload>:<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>Поскольку внутри элемента
<JSONPayload>находится пустой элемент<JSONPath>, развертывание API-прокси завершается неудачей.
Разрешение
Убедитесь, что политика извлечения переменных содержит непустой и допустимый элемент <JSONPath> , определенный внутри элемента <JSONPayload> . Например:
<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
Сообщение об ошибке
Развертывание API-прокси через пользовательский интерфейс Edge или API управления Edge завершается с ошибкой, о которой сообщается ниже:
Error Saving Revision [revision_number] Error occurred while validation of bean [policy_name].xml Reason: - Required attribute name is missing in [element_name]
Пример сообщения об ошибке
Error Saving Revision 6
Error occurred while validation of bean Extract-Variables-1.xml. Reason: - Required attribute name is missing in Variable
Пример скриншота

Причина
Если в политике извлечения переменных отсутствует атрибут name ни в одном из элементов политики, таких как QueryParam , Header , FormParam или Variable , где он необходим, то развертывание API-прокси завершится неудачей.
Например, эта ошибка возникает, если в элементе Variable отсутствует атрибут name .
Диагноз
Укажите название политики «Извлечение переменных», в которой произошла ошибка, и элемент, у которого отсутствует атрибут
name. Эти данные можно найти в сообщении об ошибке. Например, в следующем сообщении об ошибке название политики —Extract-Variables-1, а имя элемента —Variable:Error occurred while validation of bean Extract-Variables-1.xml. Reason: - Required attribute name is missing in VariableВ XML-файле политики извлечения переменных, в котором произошла ошибка, убедитесь, что все элементы с именем, определенным на шаге №1 выше, имеют атрибут
name. Если какой-либо элемент не имеет атрибута name, то это и является причиной ошибки.Например, в следующей политике извлечения переменных определен элемент
<Variable>:<?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>Обратите внимание, что в элементе
Variableотсутствует атрибутname, поэтому развертывание API-прокси завершается неудачей.
Разрешение
Убедитесь, что политика извлечения переменных содержит необходимый атрибут name для элементов QueryParam , Header , FormParam или Variable . Например:
<?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
Сообщение об ошибке
Развертывание API-прокси через пользовательский интерфейс Edge или API управления Edge завершается с ошибкой, о которой сообщается ниже:
Error Saving Revision [revision_number] Pattern [pattern] should have at least one variable in ExtractVariables stepDefinition [policy_name]
Пример сообщения об ошибке
Error Saving Revision 7
Pattern /a/b/ should have at least one variable in ExtractVariables stepDefinition ExtractVariables-1.
Пример скриншота

Причина
Если в политике извлечения переменных не указана переменная в элементе <Pattern> , развертывание API-прокси завершится неудачей. Элемент <Pattern> требует указания имени переменной, в которой будут храниться извлеченные данные.
Диагноз
Укажите название политики извлечения переменных, в которой произошла ошибка, и шаблон, для которого отсутствует переменная. Эти данные можно найти в сообщении об ошибке. Например, в следующем сообщении об ошибке название политики —
Extract-Variables-1, а имя элемента —/a/b:Pattern /a/b/ should have at least one variable in ExtractVariables stepDefinition ExtractVariables-1.В XML-файле политики извлечения переменных, в которой произошла ошибка, убедитесь, что шаблон, заданный в элементе
<Pattern>соответствует шаблону, указанному в сообщении об ошибке (шаг № 1 выше). Например, следующая политика задает шаблон/a/b, который соответствует содержимому сообщения об ошибке:Например, вот политика извлечения переменных, содержащая три элемента
<Pattern>:<?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>Проверьте, не содержит ли элемент
<Pattern>, определенный на шаге №2, переменную. Переменные должны быть заключены в фигурные скобки. Если в шаблоне отсутствует переменная, то это и является причиной ошибки.Элемент
<Pattern>с шаблоном /a/b не содержит переменной; следовательно, развертывание API-прокси завершается неудачей.<Pattern ignoreCase="true">/a/b/</Pattern>
Разрешение
Убедитесь, что все элементы <Pattern> содержат переменную (имя, заключенное в фигурные скобки). Например:
<?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>
Невозможно преобразовать в набор узлов
Сообщение об ошибке
Развертывание API-прокси через пользовательский интерфейс Edge или API управления Edge завершается с ошибкой, о которой сообщается ниже:
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].
Пример сообщения об ошибке
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.
Пример скриншота

Причина
Если в политике извлечения переменных содержится выражение <XPath> , в котором тип <Variable> определен как nodeset , но выражение не может быть преобразовано в nodeset, то развертывание API-прокси завершится неудачей.
Диагноз
Определите политику извлечения переменных, в которой произошла ошибка, и XPath, который не может быть преобразован в набор узлов. Оба этих элемента можно найти в сообщении об ошибке. Например, в следующем сообщении об ошибке имя политики —
Extract-Variables-1, а XPath —123.ExtractVariables Extract-Variables-1: Result of xpath 123 cannot be converted to nodeset. Context Revision:4;APIProxy:EV-XML;Organization:aprabhashankar-eval;Environment:test.В XML-файле политики извлечения переменных, в которой произошла ошибка, убедитесь, что XPath, заданный в элементе
<XPath>совпадает с XPath, указанным в сообщении об ошибке (шаг № 1 выше). Например, следующая политика указывает следующее:как 123, что соответствует сообщению об ошибке:<?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>Проверьте тип элемента
<Variable>, соответствующего<XPath>, определенному на шаге №2 выше. Если тип<Variable>—nodeset, то это и является причиной ошибки.Обратите внимание, что в примере политики извлечения переменных выражение
<XPath>равно123.<XPath>123</XPath>Выражение
123не может быть преобразовано в набор узлов. Поэтому развертывание API-прокси завершается неудачей.
Разрешение
Убедитесь, что выражения <XPath> , используемые в политике извлечения переменных, могут быть преобразованы в набор узлов, если тип <Variable> определен как набор узлов. Например:
<?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
Сообщение об ошибке
Развертывание API-прокси через пользовательский интерфейс Edge или API управления Edge завершается с ошибкой, о которой сообщается ниже:
Error Deploying Revision [revision_number]
Pattern [pattern] is invalid in ExtractVariables stepDefinition [policy_name]
Пример сообщения об ошибке
Error Deploying Revision 18 to test
Pattern {*} is invalid in ExtractVariables stepDefinition ExtractVariables-2.
Пример скриншота

Причина
Если определение элемента <Pattern> недопустимо в каком-либо из элементов, таких как URIPath , QueryParam , Header , FormParam , XMLPayload или JSONPayload , в рамках политики извлечения переменных, то развертывание API-прокси завершится неудачей.
Диагноз
Определите, какая политика извлечения переменных не работает, из сообщения об ошибке. Например, в следующем сообщении об ошибке имя политики —
Extract-Variables-2:Pattern {*} is invalid in ExtractVariables stepDefinition ExtractVariables-2.В XML-файле политики извлечения переменных, в котором произошла ошибка, проверьте наличие следующих элементов и включите в него элемент
<Pattern>:URIPath,QueryParam,Header,FormParam,XMLPayloadилиJSONPayload.Например, вот пример политики извлечения переменных с элементом
<Pattern>внутри элемента<QueryParam>:<?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>Проверьте определение каждого из элементов
<Pattern>. Если какой-либо элемент<Pattern>имеет недопустимое определение, то это и является причиной ошибки.В приведенном выше примере политики извлечения переменных обратите внимание, что определение
<Pattern>внутри элемента<QueryParam>недействительно; следовательно, развертывание API-прокси завершается неудачей. См. также раздел «О сопоставлении и создании переменных» .<Pattern ignoreCase="true">{*}</Pattern>
Разрешение
Убедитесь, что определение элемента <Pattern> внутри элементов URIPath , QueryParam , Header , FormParam , XMLPayload или JSONPayload в политике извлечения переменных является допустимым. Например:
<?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>
См. также раздел «О сопоставлении и создании переменных».
XPathCompilationFailed
Сообщение об ошибке
Развертывание API-прокси через пользовательский интерфейс Edge или API управления Edge завершается с ошибкой, о которой сообщается ниже:
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].
Пример сообщения об ошибке
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.
Пример скриншота

Причина
Если префикс или значение, используемое в элементе <XPath> , не входит ни в одно из объявленных пространств имен в политике извлечения переменных, то развертывание API-прокси завершится неудачей.
Более подробную информацию о пространствах имен, XPath и префиксах можно найти в статье «Пространства имен XML и их влияние на XPath и XSLT» .
Диагноз
Определите политику извлечения переменных, в которой произошла ошибка, и XPath, который не удалось скомпилировать. Оба этих элемента можно найти в сообщении об ошибке. Например, в следующем сообщении об ошибке имя политики —
EV-XML-Age, а XPath/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.В XML-файле политики извлечения переменных, в которой произошла ошибка, убедитесь, что XPath, заданный в элементе
<XPath>совпадает с XPath, указанным в сообщении об ошибке (шаг № 1 выше). Например, следующая политика указывает следующее:как /apigee:Directions/apigee:route/apigee:leg/apigee:name, что соответствует сообщению об ошибке:<?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>Проверьте элементы
<Namespaces>и<XPath>в политике извлечения переменных. Если указанный в сообщении об ошибке элемент<XPath>использует префикс или значение, не входящее в пространства имен, объявленные в политике извлечения переменных, то это и является причиной ошибки.Обратите внимание, что в примере политики извлечения переменных в конкретном
<XPath>используется префиксapigee.<XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</XPath>Однако префикс
apigeeне определен ни в одном из элементов<Namespace>; следовательно, компиляция<XPath>завершается с ошибкой, что приводит к сбою развертывания.
Разрешение
Убедитесь, что все пространства имен, используемые в элементах <XPath> , объявлены в политике извлечения переменных. Например:
<?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>