2014-10-16 61 views
0

如果input.xml具有鍵值對,則這可能是大文件,因此運行時輸出應該生成關鍵字輸出標籤名稱和值將是使用XSLT 其值Input.xml中 如何使用xslt將以下xml轉換爲另一個xml摘要輸入xml元素值應該成爲輸出xml標記及其運行時的值

  <keyValueStr> 
       <key>memberId </key> 
       <value>12345</value> 
      </keyValueStr> 
      <keyValueStr> 
       <key>mbrAccountNumber</key> 
       <value>CO12345</value> 
      </keyValueStr> 
      <keyValueStr> 
       <key>grId</key> 
       <value>4568667</value> 
      </keyValueStr> 
      <keyValueStr> 
       <key>abc </key> 
       <value>111111</value> 
      </keyValueStr> 
      <keyValueStr> 
       <key>def</key> 
       <value>22222</value> 
      </keyValueStr> 
      <keyValueStr> 
       <key>ghi</key> 
       <value>33333</value> 
      </keyValueStr> 

**output should like this:** 
<memberMinimumInfoRequest> 
      <memberid>12345</memberId> 
      <mbrAccountNumber>CO12345</mbrAccountNumber> 
      <grId>4568667</grId> 
      <abc>111111</abc> 
      <def>22222</def> 
      <ghi>33333</ghi> 
</memberMinimumInfoRequest> 
+0

** 1。 **請發佈一個最小但**完整**的輸入示例。 - ** 2。**所需任務的成功取決於'key'值是有效的元素名稱;即使在你的例子中,並非全部都是。 - ** 3。**請指出是否使用XSLT 1.0或2.0。 – 2014-10-16 16:29:17

回答

0

如果爲每個成員信息與MemberId鍵開始,然後在templat E對於包含的元素,你可以使用xsl:for-each-grouphttp://www.w3.org/TR/xslt20/#xsl-for-each-group)選擇每個成員的信息並對其進行處理,例如:

<xsl:for-each-group select="keyValueStr" 
        group-starting-with="keyValueStr[. eq 'memberId ']"> 
    <memberMinimumInfoRequest> 
    <xsl:apply-templates select="current-group()" /> 
    </memberMinimumInfoRequest> 
</xsl:for-each-group> 

(如果真的是「MEMBERID」的空間?)