当前位置: 首页 > 知识库问答 >
问题:

使用XSLT转换将XML转换为XML

岳允晨
2023-03-14

XML输入文件:

<employees>
    <employee empId ="5001">
        <firstName>Ram</firstName>
        <middleName>Prakash</middleName>
        <lastName>Sharma</lastName>
        <department>IT</department>
        <address>    
            <address1>H7 H Block</address1>
            <address2>Sector 63</address2>    
            <city>Noida</city>    
            <state>UP</state>    
            <pincode>201301</pincode>    
        </address>    
        <dateOfJoining>01/01/2017</dateOfJoining >    
        <grade>R</grade>    
    </employee>    
</employees>

XML输入文件转换为XML输出文件。将XML输入文件的firstName、middleName和lastName标签合并为XML Ouput文件的name标签,将XML输入文件的address1、address2、city、state和pincode标签合并为XML Ouput文件的address标签。

<employees>    
    <employee empId ="5001">    
        <name>Ram Prakash Sharma</name>    
        <department>IT</department>    
        <address>H7 H Block Sector 63 Noida UP 201301</address>    
        <dateOfJoining>01/01/2017</dateOfJoining >    
        <grade>R</grade>    
    </employee>    
</employees>

我几乎转换了代码,但我在这里与empId作斗争。我已经在XSLT文件中手动输入了empId。谁能帮帮我吗?

XSLT文件:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <!-- TODO: Auto-generated template -->
    <xsl:template match="employees">
        <employees>
            <employee empId="5001">
                <xsl:apply-templates />
            </employee>
        </employees>
    </xsl:template>    
    <xsl:template match="employee">    
        <name>
            <xsl:value-of
                select="concat(firstName, ' ', middleName, ' ', lastName)" />
        </name>    
        <department>
            <xsl:value-of select="department" />
        </department>    
        <address>
            <xsl:value-of select="address/address1" />
            <xsl:text> </xsl:text>
            <xsl:value-of select="address/address2" />
            <xsl:text> </xsl:text>
            <xsl:value-of select="address/city" />
            <xsl:text> </xsl:text>
            <xsl:value-of select="address/state" />
            <xsl:text> </xsl:text>
            <xsl:value-of select="address/pincode" />
        </address>    
        <dateOfJoining>
            <xsl:value-of select="dateOfJoining" />
        </dateOfJoining>    
        <grade>
            <xsl:value-of select="grade" />
        </grade>    
    </xsl:template>
</xsl:stylesheet>

共有1个答案

庾波光
2023-03-14

只需将employee元素移到employee模板,并使用{@empid}属性值模板设置empid属性:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="employees">
    <employees>
      <xsl:apply-templates />
    </employees>
  </xsl:template>
  <xsl:template match="employee">
    <employee id="{@empId}">
      <name>
        <xsl:value-of select="concat(firstName, ' ', middleName, ' ', lastName)" />
      </name>
      <department>
        <xsl:value-of select="department" />
      </department>
      <address>
            <xsl:value-of select="address/address1" />
            <xsl:text> </xsl:text>
            <xsl:value-of select="address/address2" />
            <xsl:text> </xsl:text>
            <xsl:value-of select="address/city" />
            <xsl:text> </xsl:text>
            <xsl:value-of select="address/state" />
            <xsl:text> </xsl:text>
            <xsl:value-of select="address/pincode" />
        </address>
      <dateOfJoining>
        <xsl:value-of select="dateOfJoining" />
      </dateOfJoining>
      <grade>
        <xsl:value-of select="grade" />
      </grade>
    </employee>
  </xsl:template>
</xsl:stylesheet>
 类似资料:
  • 我有以下问题。我不是XSLT方面最伟大的专家,我想成功的是将一个XML从赛贝斯转换为以下内容: Sybase的输出: 我希望它的输出标题保持原样,条目部分不同 这是到目前为止我的XSLT(对不起,不太可能) 也许,有人可以帮我实现我想要的。非常感谢你。

  • 问题内容: 我想使用xsl文件转换一些xml并以某种方式输出结果(我使用的是Android Api Level 8)。 我当前的活动看起来像这样,但是转换器保持为空。LogCat引发一个with ,表示xml格式不正确,但是我确定它是正确的。 我在LogCat中发现了一条提示,提示在上述错误消息之前。 我究竟做错了什么? 这是要转换的xml文件(source.xml) 这是对应的xsl(produ

  • 我想使用XSLT将一些XML转换为JSON。XML如下所示: 我希望JSON如下所示: 推荐的方法是什么? 我已经有了一个方法,它看起来不太好,因为它只适用于xslt 1.0(我认为)和文本块。请参阅此处:https://xsltfiddle.liberty-development.net/naZYrpy/1 我更喜欢使用xslt 3.0和xml to json函数的更有效方法,但似乎不可能添加额

  • 本文向大家介绍ASP.NET使用xslt将xml转换成Excel,包括了ASP.NET使用xslt将xml转换成Excel的使用技巧和注意事项,需要的朋友参考一下 序:   最近在给客户做一个管理系统的时候,客户提出要将查询结果导出到Excel。对于还是实习生的我倍感压力,于是找了点资料。网上有个示例,其中方法十分简单。于是照猫画虎,把方法和心得与大家分享。OK,Let`s go 第一步:   创

  • 我想将xml文件格式转换为另一种格式;使用XSL1.0或2.0版。 http://www.w3.org/1999/xsl/transform“version=”1.0“> 这段代码是从“struct”节点的“members”属性中提取相关ID的起点,以后只用于发出“field”节点。 xslt处理器需要解析Struct节点的'members'属性。“members”属性是字段ID的列表。 在上面的

  • 您能帮助如何用子节点分割成半节点吗? 输入: 输出: 不幸的是,我对xslt没有经验,也没有找到这样的例子。 更新后,我尝试了下面建议的方法之一,并有这个https://xsltfiddle.liberty-development.net/jyH9rNq/3节点不复制 xslt: 输出: