简体   繁体   English

如何使用xslt摘要将以下xml转换为另一个xml摘要输入xml元素值应在运行时与其值一起成为输出xml标记

[英]how to transform following xml to another xml using xslt summary input xml element value should become the output xml tag with their values at runtime

if input.xml have key value pairs this may be large file so run time output should geneate key become the output tag name and value will be its value using xslt Input.xml 如果input.xml具有键值对,则该文件可能是大文件,因此运行时输出应生成键成为输出标签名称,并且值将是使用xslt Input.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>

If the information for each member starts with a MemberId key, then in the template for the containing element you can use xsl:for-each-group ( http://www.w3.org/TR/xslt20/#xsl-for-each-group ) to select each member's information and process it, eg: 如果每个成员的信息MemberId键开头,则可以在包含元素的模板中使用xsl:for-each-grouphttp://www.w3.org/TR/xslt20/#xsl-for-每个组 )以选择每个成员的信息并进行处理,例如:

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

(Should there really be a space in 'memberId '?) ('memberId'中是否真的应该有空格?)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM