2011-02-01 4 views
1

を使用してXMLに変換するこんにちは、私は、XSLは、XSL

を使用して別のXMLにそのXMLを変換する必要があり、1つのXMLは、私のXMLは、それがこの形式に変換する必要があります

<Information> 
    <ShipmentType> 
     <shipmentType>A</shipmentType> 
    </ShipmentType> 
    <ShipmentRouting> 
     <airportCityCodeOrigin>AAA</airportCityCodeOrigin> 
     <airportCityCodeDestination>BBB</airportCityCodeDestination> 
    </ShipmentRouting> 
    <EarliestDepartureDateTime> 
     <dayOfMonth>00</dayOfMonth> 
     <month>OCT</month> 
    </EarliestDepartureDateTime> 
</Information> 

のように見えるがあります。

<ECIDRA-INP> 
    <DRA-INP> 
     <OPTION> 
     <ORIGIN> 
      <STATION>AAA</STATION> 
     </ORIGIN> 
     <DEST> 
      <STATION>BBB</STATION> 
     </DEST> 
     </OPTION> 
    </DRA-INP> 
</ECIDRA-INP> 

私は<airportCityCodeOrigin><airportCityCodeDestination>の値だけが必要ですが、すべてのタグ値を取得しています。

以下

は、私が書いたXSLです:

<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" indent="yes"/> 
    <xsl:template match="/Information"> 
     <ECIDRA-INP> 
      <DRA-INP> 
       <OPTION> 
        <ORIGIN> 
         <STATION> 
          <xsl:value-of select="./ShipmentRouting/airportCodeofDeparture"></xsl:value-of> 
         </STATION> 
        </ORIGIN> 
        <DEST> 
         <STATION> 
          <xsl:value-of select="./ShipmentRouting/airportCodeofArrival"></xsl:value-of> 
         </STATION> 
        </DEST> 
       </OPTION> 
      </DRA-INP> 
     </ECIDRA-INP> 
    </xsl:template> 
</xsl:stylesheet> 
+0

"私のXMLはl Ike "..;山括弧のないXMLを意味しますか? ;-)実際のXML(と実際のXSLT)を表示してください。 –

+0

質問を編集し、すべてのXMLコード行を4つのスペースで開始してください。あなたのXMLタグは消えません。 http://stackoverflow.com/editing-help – Martijn

+0

良い質問、+1。問題の説明と簡単な修正については、私の答えを参照してください。 :) –

答えて

0

はAAA BBB 00 10月のデータやタグの名前はありますか?これは、データをプルーニングする方法が「プルーニング」タグと異なるため、重要です。

5のうち2つのタグ名のみを含む新しいXMLを作成するには、出力XMLを必要に応じて記述し、変換ビットを導入してデータを取得します。特定のデータを目指していて、XML(XSLTとして)を使用したい場合は、適切なノードを選択するためにXPathを記述する必要があります。あなたの他の選択肢は、Regexの完全な機能を備えた言語を使用することです。

0

コードに問題があると、airportCodeofDepartureairportCodeofArrivalなどの存在しない要素名が使用されるという問題があります。

だけ正しいと:指名手配、正しい結果がを生産している

<Information> 
    <ShipmentType> 
     <shipmentType>A</shipmentType> 
    </ShipmentType> 
    <ShipmentRouting> 
     <airportCityCodeOrigin>AAA</airportCityCodeOrigin> 
     <airportCityCodeDestination>BBB</airportCityCodeDestination> 
    </ShipmentRouting> 
    <EarliestDepartureDateTime> 
     <dayOfMonth>00</dayOfMonth> 
     <month>OCT</month> 
    </EarliestDepartureDateTime> 
</Information> 

<ECIDRA-INP> 
    <DRA-INP> 
     <OPTION> 
     <ORIGIN> 
      <STATION>AAA</STATION> 
     </ORIGIN> 
     <DEST> 
      <STATION>BBB</STATION> 
     </DEST> 
     </OPTION> 
    </DRA-INP> 
</ECIDRA-INP> 
この変換が提供されるXML文書
に適用される

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" indent="yes"/> 
    <xsl:template match="/Information"> 
     <ECIDRA-INP> 
     <DRA-INP> 
      <OPTION> 
      <ORIGIN> 
       <STATION> 
      <xsl:value-of select= 
        "ShipmentRouting/airportCityCodeOrigin"/> 
      </STATION> 
      </ORIGIN> 
      <DEST> 
       <STATION> 
       <xsl:value-of select= 
        "ShipmentRouting/airportCityCodeDestination"/> 
       </STATION> 
      </DEST> 
     </OPTION> 
     </DRA-INP> 
     </ECIDRA-INP> 
    </xsl:template> 
</xsl:stylesheet>