Программа Xquery для преобразования мыльного сообщения - PullRequest
0 голосов
/ 01 ноября 2011

Я новичок в xquery, поэтому имейте это в виду, когда отвечаете, но, пожалуйста, отвечайте. Я пытался решить эту проблему в течение недели и нашел, что помощь xquery там в лучшем случае пятнистая.

я написал следующую программу xquery:

declare namespace soapenv = "http://schemas.xmlsoap.org/soap/envelope/";
declare namespace soap-env = "http://schemas.xmlsoap.org/soap/envelope/";
declare namespace ns0 = "http://xmlns.oracle.com/pcbpel/adapter/db/GPDSND/SP_GET_PART_ATTRIBUTES/";
declare namespace com = "com:companyname:part:partspecification:partfinder:types:partschema:1:0";
<soapenv:Envelope>
<soap-env:Body>
<com:PartDetailResponse>
{
for $x in doc("soap.xml")/soapenv:Envelope/soapenv:Body/ns0:OutputParameters/ns0:P_CURSOR/ns0:Row
return $x
}
</com:PartDetailResponse>
</soap-env:Body>
</soapenv:Envelope>

, который выдает следующий результат:

   <?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soap-env:Body xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
      <com:PartDetailResponse xmlns:com="com:companyname:part:partspecification:partfinder:types:partschema:1:0">
         <Row xmlns="http://xmlns.oracle.com/pcbpel/adapter/db/GPDSND/SP_GET_PART_ATTRIBUTES/"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
            <Column name="PARTNUMBER" sqltype="CHAR">20831727</Column> 
            <Column name="BROADCASTCODE" sqltype="CHAR">1727U</Column> 
            <Column name="DRAWINGNUMBER" sqltype="CHAR">20831727</Column> 
            <Column name="MAKEFROMPART" sqltype="CHAR"/> 
         </Row>
      </com:PartDetailResponse>
   </soap-env:Body>
</soapenv:Envelope>

но мне нужны подробные строки <Column> в следующем формате:

<com:Column FieldName="PartNumber" DisplayName="Part Number" ToolTip="String" ContentType="String"><com:Value>20875646</com:Value></com:Column>
<com:Column FieldName="BroadcastCode" DisplayName="Broadcast Code" ToolTip="String" ContentType="String"><com:Value>     </com:Value></com:Column>
<com:Column FieldName="DrawingNumber" DisplayName="Drawing Number" ToolTip="String" ContentType="String"><com:Value/></com:Column>
<com:Column FieldName="MakeFromPart" DisplayName="Make From Part" ToolTip="String" ContentType="String"><com:Value>20875634</com:Value></com:Column>

так как мне изменить формат линий детализации? Я догадываюсь, что partchema должна иметь к этому какое-то отношение, но она встроена в сервис SOA, так что я не уверен, что получаю ее из-за того, что я не передаю никакие учетные данные для очистки авторизации.

1 Ответ

0 голосов
/ 01 ноября 2011

Используйте конструкцию элемента, как вы уже использовали, для вставки вывода в шаблон.

for $x in doc("soap.xml")/soapenv:Envelope/soapenv:Body/ns0:OutputParameters/ns0:P_CURSOR/ns0:Row
return <com:Column FieldName="{$x/@name}" [...]><com:Value>{data($x)}</com:Value></com:Column>
}

Для пропущенных полей добавьте несколько операторов для их вычисления или как добавить их из исходных данных.

...