2014-10-16 60 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”的空间?)