2016-10-18 6 views
-2

としてつのタグにすべてのタグを連結は...私はXMLを変換する必要があり、いくつかの問題を抱えていた文字列

現在のXML:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:dat="http://ws.wso2.org/dataservice"> 
<soapenv:Body> 
    <dat:UpsertItemGeoObject> 
     <dat:ItemId>?</dat:ItemId> 
     <dat:GeoObjects> 
      <dat:GeoObjectPoint> 
       <dat:GeoObjectType>Point</dat:GeoObjectType> 
       <dat:GeoObjectPoints> 
        <dat:Point> 
         <dat:Lat>1.123</dat:Lat> 
         <dat:Lng>1.123</dat:Lng> 
        </dat:Point> 
       </dat:GeoObjectPoints> 
      </dat:GeoObjectPoint> 
      <dat:GeoObjectPolyline> 
       <dat:GeoObjectType>Polyline</dat:GeoObjectType> 
       <dat:GeoObjectPoints> 
        <!--one or more repetitions:--> 
        <dat:Point> 
         <dat:Lat>2.123</dat:Lat> 
         <dat:Lng>2.456</dat:Lng> 
        </dat:Point> 
        <dat:Point> 
         <dat:Lat>2.123</dat:Lat> 
         <dat:Lng>2.789</dat:Lng> 
        </dat:Point> 
        <dat:Point> 
         <dat:Lat>2.123</dat:Lat> 
         <dat:Lng>2.000</dat:Lng> 
        </dat:Point> 
       </dat:GeoObjectPoints> 
      </dat:GeoObjectPolyline> 
      <dat:GeoObjectPolygon> 
       <dat:GeoObjectType>Polygon</dat:GeoObjectType> 
       <dat:GeoObjectPoints> 
        <!--one or more repetitions:--> 
        <dat:Point> 
         <dat:Lat>3.123</dat:Lat> 
         <dat:Lng>3.123</dat:Lng> 
        </dat:Point> 
        <dat:Point> 
         <dat:Lat>3.123</dat:Lat> 
         <dat:Lng>3.123</dat:Lng> 
        </dat:Point> 
        <dat:Point> 
         <dat:Lat>3.123</dat:Lat> 
         <dat:Lng>3.123</dat:Lng> 
        </dat:Point> 
        <dat:Point> 
         <dat:Lat>3.123</dat:Lat> 
         <dat:Lng>3.123</dat:Lng> 
        </dat:Point> 
        <dat:Point> 
         <dat:Lat>3.123</dat:Lat> 
         <dat:Lng>3.123</dat:Lng> 
        </dat:Point> 
       </dat:GeoObjectPoints> 
      </dat:GeoObjectPolygon> 
     </dat:GeoObjects> 
    </dat:UpsertItemGeoObject> 
</soapenv:Body> 

所望の出力:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:dat="http://ws.wso2.org/dataservice"> 
<soapenv:Body> 
    <dat:UpsertItemGeoObject> 
     <dat:ItemId>12345</dat:ItemId> 
     <dat:GeoObjects> 
      <dat:GeoObjectPoint> 
       <dat:GeoObjectType>Point</dat:GeoObjectType> 
       <dat:Coordinates>1.123 1.123</dat:Coordinates> 
      </dat:GeoObjectPoint> 
      <dat:GeoObjectPolyline> 
       <dat:GeoObjectType>Polyline</dat:GeoObjectType> 
       <dat:Coordinates>2.123 2.456,2.123 2.789,2.123 2.000</dat:Coordinates><!-- Lat Long, Lat Long, Lat Long --> 
      </dat:GeoObjectPolyline> 
      <dat:GeoObjectPolygon> 
       <dat:GeoObjectType>Polygon</dat:GeoObjectType> 
       <dat:Coordinates>3.123 3.123,3.123 3.123,3.123 3.123</dat:Coordinates><!-- Lat Long, Lat Long, Lat Long --> 
      </dat:GeoObjectPolygon> 
     </dat:GeoObjects> 
    </dat:UpsertItemGeoObject> 
</soapenv:Body> 

は、私は1つのタグに

     <dat:Point> 
          <dat:Lat>1.123</dat:Lat> 
          <dat:Lng>1.123</dat:Lng> 
         </dat:Point> 

からすべての座標を連結したい - <Coordinates>Lat(Space)Lng(Coma)Lat(Space)Lng<Coordinates>、しかし、私はこの仕事で私を助けるために何を見つけることができません。 誰かが何らかの事例などを手伝ってくれたら、私はとても感謝しています。

答えて

0

このようにそれを試してみてください。

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:dat="http://ws.wso2.org/dataservice"> 
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 
<xsl:strip-space elements="*"/> 

<!-- identity transform --> 
<xsl:template match="@*|node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
</xsl:template> 

<xsl:template match="dat:GeoObjectPoints"> 
    <dat:Coordinates> 
     <xsl:for-each select="dat:Point"> 
      <xsl:value-of select="dat:Lat"/> 
      <xsl:text> </xsl:text> 
      <xsl:value-of select="dat:Lng"/> 
      <xsl:if test="position()!=last()"> 
       <xsl:text>,</xsl:text> 
      </xsl:if> 
     </xsl:for-each> 
    </dat:Coordinates> 
</xsl:template> 

</xsl:stylesheet> 
関連する問題