2015-08-21 2 views
1

У меня есть следующий xml.Конкатенация значений узлов на основе условия в XSLT

<?xml version="1.0" encoding="UTF-8"?> 
<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> 
    <SOAP:Body> 
     <response:performJobResponse xmlns:response="http://tempuri.org/" SOAP:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> 
     <whiteboard> 
      <PQ> 
       <response> 
        <PQIssueHistory> 
        <AWD10SP7_1orhigher>Y</AWD10SP7_1orhigher> 
        <hostAddress>10.193.XXX.78</hostAddress> 
        <hostPort>12955</hostPort> 
        <userID>7X606</userID> 
        <password>[email protected]</password> 
        <issue> 
         <CRDATTIM>2015-07-29-04.27.15.461040</CRDATTIM> 
         <RECORDCD>T</RECORDCD> 
         <CRNODE>01</CRNODE> 
         <ORIGUSERID>DT77214</ORIGUSERID> 
        </issue> 
        </PQIssueHistory> 
        <results> 
        <row> 
         <RECTYP>HISTORY</RECTYP> 
        </row> 
        <row> 
         <date>2015-08-18</date> 
         <time>04:04:58-05:00</time> 
        </row> 
        </results> 
       </response> 
      </PQ> 
     </whiteboard> 
     <jobReturn> 
      <taskName>TransformNode</taskName> 
      <description>TransformNode Succeeded</description> 
      <value>0</value> 
     </jobReturn> 
     </response:performJobResponse> 
    </SOAP:Body> 
</SOAP:Envelope> 

Прежде всего, мне нужно проверить, есть ли какой-либо <row><date> и <time>, если да, то я должен сцепить значения <date> и <time> и присвоить вновь сформированное значение для нового тега <CRDATTIM> </CRDATTIM>.

Например: <CRDATTIM>2015-08-18-04:04:58-05:00</CRDATTIM>

Окончательный результирующий XML должно быть, как показано ниже:

<?xml version="1.0" encoding="UTF-8"?> 
<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> 
    <SOAP:Body> 
     <response:performJobResponse xmlns:response="http://tempuri.org/" SOAP:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> 
     <whiteboard> 
      <PQ> 
       <response> 
        <PQIssueHistory> 
        <AWD10SP7_1orhigher>Y</AWD10SP7_1orhigher> 
        <hostAddress>10.193.XXX.78</hostAddress> 
        <hostPort>12955</hostPort> 
        <userID>7X606</userID> 
        <password>[email protected]</password> 
        <issue> 
         <CRDATTIM>2015-07-29-04.27.15.461040</CRDATTIM> 
         <RECORDCD>T</RECORDCD> 
         <CRNODE>01</CRNODE> 
         <ORIGUSERID>DT77214</ORIGUSERID> 
        </issue> 
        </PQIssueHistory> 
        <results> 
        <row> 
         <RECTYP>HISTORY</RECTYP> 
        </row> 
        <row> 
         <CRDATTIM>2015-08-18-04:04:58-05:00</CRDATTIM> 
        </row> 
        </results> 
       </response> 
      </PQ> 
     </whiteboard> 
     <jobReturn> 
      <taskName>TransformNode</taskName> 
      <description>TransformNode Succeeded</description> 
      <value>0</value> 
     </jobReturn> 
     </response:performJobResponse> 
    </SOAP:Body> 
</SOAP:Envelope> 
+0

Где именно вы застряли в этом? –

+0

@ michael.hor257k Имеются проблемы с проверкой наличия и

ответ

1

Имея проблемы при проверке существуют ли <date> и <time> под <row> или нет.

Написать шаблон, соответствующий разыскиваемых строк:

<xsl:template match="row[date and time]"> 

и поместить код обработки в нем.

+0

Спасибо, это сработало. :) .. + 1 для быстрого решения. –

Смежные вопросы