首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用xslt更改简单的xml层次结构?

如何使用xslt更改简单的xml层次结构?
EN

Stack Overflow用户
提问于 2013-06-28 16:27:37
回答 2查看 422关注 0票数 0

我有以下源xml:

代码语言:javascript
复制
<to id="abc">
   <ti></ti>
   <b>
   ...
       <to id="bcd"><ti></ti><b>...</b></to>
       <to id="cde"><ti></ti><b>...</b></to>
       <to id="def"><ti></ti><b>...</b></to>
   </b>
</to>

"...“意味着大量的bodydiv li和nodetext介于两者之间。

我想将其转换为:

代码语言:javascript
复制
<to id="abc">
    <ti></ti>
    <b>
     ...
    </b>
    <to id="bcd"><ti></ti><b>...</b></to>
    <to id="cde"><ti></ti><b>...</b></to>
    <to id="def"><ti></ti><b>...</b></to>
 </to>

在xslt中表达转换最简单的方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-29 00:28:56

看起来您只是将to移到了b之外。我不确定为什么你需要基于@id

试着这样做:

代码语言:javascript
复制
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output indent="yes"/>
    <xsl:strip-space elements="*"/>

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

    <xsl:template match="b">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()[not(self::to)]"/>
        </xsl:copy>
        <xsl:apply-templates select="to"/>
    </xsl:template>

</xsl:stylesheet>
票数 0
EN

Stack Overflow用户

发布于 2013-06-28 18:01:53

下面应该可以,它使用identity转换模板复制所有内容,并添加两个模板,第一个处理to[@id = 'abc']元素,第二个处理其b子元素:

代码语言:javascript
复制
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>

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

<xsl:template match="to[@id = 'abc']">
  <xsl:copy>
    <xsl:apply-templates select="@* | node() | b/to[@id]"/>
  </xsl:copy>
</xsl:template>

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

https://stackoverflow.com/questions/17360406

复制
相关文章

相似问题

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