首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >转换XSLT:复制内容

转换XSLT:复制内容
EN

Stack Overflow用户
提问于 2012-05-18 14:18:39
回答 1查看 53关注 0票数 0

对于XSL文件,我有以下输入:

代码语言:javascript
运行
复制
<node>
    <xsl:value-of select="ROOT/LEVEL1/LEVEL2" />
</node>

我的预期输出是:

代码语言:javascript
运行
复制
<node2>
    <xsl:value-of select="ROOT/LEVEL1/LEVEL2" />
</node2>

如何获得此功能?

我能做的最好的是:

代码语言:javascript
运行
复制
<xsl:template match="node" >
    <node2>
        <xsl:copy-of select="." />
    </node2>
</xsl:template>

这会产生:

代码语言:javascript
运行
复制
<node2><node>
    <xsl:value-of select="ROOT/LEVEL1/LEVEL2"/>
</node></node2>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-18 16:11:50

执行<xsl:copy-of select="." />将复制现有节点,但在本例中,您只想复制子节点。相反,试试这个

代码语言:javascript
运行
复制
<xsl:copy-of select="node()" />

实际上,使用身份模板可能更好,因为这将允许您对节点元素的子元素进行进一步的转换,而不仅仅是按原样复制。例如:

代码语言:javascript
运行
复制
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:output method="xml" indent="yes"/>

   <xsl:template match="node">
      <node2>
         <xsl:apply-templates select="@*|node()"/>
      </node2>
   </xsl:template>

   <xsl:template match="@*|node()">
      <xsl:copy>
         <xsl:apply-templates select="@*|node()"/>
      </xsl:copy>
   </xsl:template>
</xsl:stylesheet>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10647658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档