首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要在属性模板中包含元素

需要在属性模板中包含元素
EN

Stack Overflow用户
提问于 2020-08-04 10:49:47
回答 1查看 33关注 0票数 1

嗨,我想在基于属性的模板中包含元素,我正在使用XSL,它用于将旧属性值更改为New value。

输入HTML:

代码语言:javascript
复制
<section>
   <p class="p heading">Heading</p>
   <p class="normal">Text</p>
</section>

XSL我有:

代码语言:javascript
复制
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:math="http://www.w3.org/2005/xpath-functions/math"
    xmlns:map="http://www.w3.org/2005/xpath-functions/map"
    xmlns:array="http://www.w3.org/2005/xpath-functions/array"
    exclude-result-prefixes="#all"
    version="3.0">
    
  <xsl:param name="class-map">
   <name>
      <old>heading</old>
      <new>Headings</new>
   </name>
   <name>
      <old>normal</old>
      <new>Actual</new>
   </name>
  </xsl:param>
  
  <xsl:key name="class-map" match="name/new" use="../old"/>
  
  <xsl:template match="p/@class[key('class-map', tokenize(.), $class-map)]">
      <xsl:attribute name="style">
      <xsl:attribute name="{name()}" select="key('class-map', tokenize(.) , $class-map)"/>
      </xsl:attribute>
      <normal>
         <xsl:value-of select="p"/>
      </normal>
  </xsl:template>
  
  <xsl:mode on-no-match="shallow-copy"/>

</xsl:stylesheet>

预期产出:

代码语言:javascript
复制
<section>
<p style="Headings"><normal>Heading</normal></p>
<p style="Actual"><normal>Text</normal></p>
</section>

需要在段落中包含normal元素。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-04 12:59:19

如果任务是将输入中的任何p元素的内容包装到normal元素中,那么您可以简单地添加一个模板。

代码语言:javascript
复制
<xsl:template match="p">
  <xsl:copy>
    <xsl:apply-templates select="@*"/>
    <normal>
      <xsl:apply-templates/>
    </normal>
  </xsl:copy>
</xsl:template>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63245283

复制
相关文章

相似问题

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