通过在属性中附加属性值在xslt中创建新元素

时间:2018-06-27 07:06:54

标签: xslt-2.0

<sec id="abg-c42-s1-1" disp-level="2">
<title>Introduction</title>

问题: 我必须检查disp-level属性,并用替换标记。 示例:如果disp-level的值为“ 1”,则<title>标记将替换为<h1>。    如果disp-level的值为“ 3”,则<title>标记将替换为<h3>,依此类推。 有什么办法吗? 谢谢... </p> </div> <div class="answer-list"> <h4>1 个答案:</h4> <div class="hr-line-dashed"></div> <p>答案 0 :(得分:0)</p> <div class="answer markdown-body"> <p>好吧,写一个匹配<code>sec[@disp-level]/title</code>的模板来做到这一点:</p> <pre><code><xsl:template match="sec[@disp-level]/title"> <xsl:element name="h{../@disp-level}"> <xsl:apply-templates/> </xsl:element> </xsl:template> </code></pre> <p>对于大多数样式表,如果样式表包含身份转换模板,则此方法有效并且容易允许其他元素或节点的进一步模块化转换</p> <pre><code><xsl:template match="@* | node()"> <xsl:copy> <xsl:apply-templates select="@* | node()"/> </xsl:copy> </xsl:template> </code></pre> <p>或在XSLT 3中使用声明<code><xsl:mode on-no-match="shallow-copy"/></code>。</p> </div> </div> </div> <div class="right"> <div style="height:400px"> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-6263610230477973" data-ad-slot="2820756182" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div style="height:20px"></div> <div class="releated-question-wrapper"> <div class="header"> 相关问题 </div> <div class="hr-line-dashed"></div> <ul> <li> <a href="/q/18829371">Xslt:按属性名获取元素的值</a> </li> <li> <a href="/q/20452388">通过在XSLT中开始/结束属性值来计算元素</a> </li> <li> <a href="/q/21441874">XSLT将递增值附加到现有属性值</a> </li> <li> <a href="/q/26904241">使用按属性值的name属性重命名所有元素标记</a> </li> <li> <a href="/q/29671627">在XSLT 2.0中创建与现有属性同名的属性元素</a> </li> <li> <a href="/q/35813564">具有属性值</a> </li> <li> <a href="/q/41391956">如何使用属性值删除元素的内容?</a> </li> <li> <a href="/q/45977522">如何从元素中创建新元素,该元素与XML中的子元素的属性值和第一个字母值有所不同?</a> </li> <li> <a href="/q/46119524">每个元素的XSL按属性值获取元素值</a> </li> <li> <a href="/q/51056535">通过在属性中附加属性值在xslt中创建新元素</a> </li> </ul> </div> <div class="releated-question-wrapper"> <div class="header"> 最新问题 </div> <div class="hr-line-dashed"></div> <ul> <li> <a href="/q/68614764">我写了这段代码,但我无法理解我的错误</a> </li> <li> <a href="/q/68614678">我无法从一个代码实例的列表中删除 None 值,但我可以在另一个实例中。为什么它适用于一个细分市场而不适用于另一个细分市场?</a> </li> <li> <a href="/q/68614175">是否有可能使 loadstring 不可能等于打印?卢阿</a> </li> <li> <a href="/q/68614313">java中的random.expovariate()</a> </li> <li> <a href="/q/68614125">Appscript 通过会议在 Google 日历中发送电子邮件和创建活动</a> </li> <li> <a href="/q/68615109">为什么我的 Onclick 箭头功能在 React 中不起作用?</a> </li> <li> <a href="/q/68615123">在此代码中是否有使用“this”的替代方法?</a> </li> <li> <a href="/q/68614097">在 SQL Server 和 PostgreSQL 上查询,我如何从第一个表获得第二个表的可视化</a> </li> <li> <a href="/q/68614427">每千个数字得到</a> </li> <li> <a href="/q/68615239">更新了城市边界 KML 文件的来源?</a> </li> </ul> </div> <div class=""> </div> </div> </div> <div> <script> var host = window.location.host; if (host == "www.thinbug.com") { (function () { var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); } </script> </body> </html>