首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在切换两个元素的顺序时更改属性值?

如何在切换两个元素的顺序时更改属性值?
EN

Stack Overflow用户
提问于 2017-04-04 14:58:30
回答 1查看 59关注 0票数 0

我需要切换两个元素的顺序,然后更改两个元素的类名。

这是切换部分:

代码语言:javascript
复制
  <xsl:template match="div[@id='container-4']/div[starts-with(@class,'df-width-40')]">

        <xsl:copy-of select="div[@id='container-5']/div[@class='df-width-100']/div" />

   </xsl:template>


    <xsl:template match="div[@id='container-5']/div[@class='df-width-100']">

        <xsl:copy-of select="div[@id='container-4']/div[@class='df-width-40']/div" />

    </xsl:template>

上面的代码应该执行以下操作:将#容器-4中的div.df-width-40替换为div.df-width-100 (从#容器-5)。

然后将div.df宽度-100从#容器-5替换为div.df-宽度-40从#容器-4。

基本上,只需在#容器-4和#容器-5中切换子div。

但是,我还需要更改类名,以便div.df宽度-40将名称更改为div.df-width 100,并更改为副verca。

原始xml:

代码语言:javascript
复制
<div id="container-4">
    <div class="df-width-40">lorem</div>
</div>

<div id="container-5">
    <div class="df-width-100">ipsum</div>
</div>

在xslt之后想要的结果:

代码语言:javascript
复制
<div id="container-4">
    <div class="df-width-40">ipsum</div>
</div>

<div id="container-5">
    <div class="df-width-100">lorem</div>
</div>

注意:我不能仅仅因为复杂的布局和动态内容而获得div的内容,我无法控制。为了清晰起见,已经减少了xpath和元素类名。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-05 06:37:56

如果您复制现有的div及其属性,然后只交换div的内容,如

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">

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

    <xsl:template match="div[@id='container-4']/div[starts-with(@class,'df-width-40')]">
        <xsl:copy>
            <xsl:apply-templates select="@*, 
            ../following-sibling::div[@id='container-5']/div[@class='df-width-100']/node()"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="div[@id='container-5']/div[@class='df-width-100']">
       <xsl:copy>
            <xsl:apply-templates select="@*, 
            ../preceding-sibling::div[@id='container-4']/div[@class='df-width-40']/node()"/>           
       </xsl:copy>
    </xsl:template>
</xsl:transform>

你应该得到你想要的结果,

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<body>
<div id="container-4">
    <div class="df-width-40">lorem</div>
</div>

<div id="container-5">
    <div class="df-width-100">ipsum</div>
</div>
</body>

转化成

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?><body>
<div id="container-4">
    <div class="df-width-40">ipsum</div>
</div>

<div id="container-5">
    <div class="df-width-100">lorem</div>
</div>
</body>

http://xsltransform.net/bEzjRJm

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43210819

复制
相关文章

相似问题

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