如果子元素尚未具有相同的属性,则XSL将属性传递给子元素

用户名

仅当子元素尚未具有相同的属性时,才如何将属性传递给子元素?

XML:

<section>
    <container attribute1="container1" attribute2="container2">
         <p attribute1="test3"/>
         <ol attribute2="test4"/>
    <container>
<section/>

输出应如下所示:

<section>
    <p attribute1="test3" attribute2="test2"/>
    <ol attribute1="container1" attribute2="test4"/>
</section>

这是我尝试的:

<xsl:template match="container">
    <xsl:apply-templates mode="passAttributeToChild"/>
</xsl:template>

<xsl:template match="*" mode="passAttributeToChildren">
    <xsl:element name="{name()}">
        <xsl:for-each select="@*">
             <xsl:choose>
                  <xsl:when test="name() = name(../@*)"/>
                  <xsl:otherwise>
                      <xsl:copy-of select="."/>
                  </xsl:otherwise>
             </xsl:choose>
        </xsl:for-each>
        <xsl:apply-templates select="*|text()"/>
    </xsl:element>
</xsl:template>

任何帮助将不胜感激;)提前谢谢!

托玛拉克

多次声明的属性会相互覆盖,因此很容易。

<xsl:template match="container/*">
  <xsl:copy>
    <xsl:copy-of select="../@*" /> <!-- take default from parent -->
    <xsl:copy-of select="@*" />    <!-- overwrite if applicable -->
    <xsl:apply-templates />
  </xsl:copy>
</xsl:template>

如您的样本所示,这假定您需要所有父级属性。当然,您可以决定要继承哪些属性:

    <xsl:copy-of select="../@attribute1 | ../@attribute2" />
    <xsl:copy-of select="@attribute1 | @attribute2">

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将具有相同属性名称的多个元素转换为具有这些属性值作为子元素的新元素

将属性指令传递给元素指令

如果子元素和父元素具有相同的类,则不显示任何内容

如何使用 python 将父元素的属性传递给 XML 中的子元素?

合并具有相同属性的元素

聚合物在Firefox中将属性传递给子元素

如何将额外的属性传递给 reactjs 中的子元素?

聚合物:将属性传递给子元素不起作用

将禁用的属性传递给子组件中的HTML元素不起作用

XSL将子元素复制到父属性

使用 XSL 将属性移动到子元素

将多个值从具有相同类的选择元素传递给 Django 视图

选择不是具有特定属性属性的事物的子元素

如果至少2个具有相同的属性值,则合并数组的元素

选择具有不具有给定属性的子元素的元素的子元素

如果子元素具有flex-flow,为什么垂直应用子元素的flex-basis:row nowrap?

将prop作为未知属性传递给React中的元素

将包含html的对象作为属性传递给jsx元素

将元素的属性传递给角度为4/5的函数

将“值”从滑块传递给元素,作为属性的参数

如果子节点具有特定属性,则删除父节点

jQuery - 如果子元素具有特定的 css 类,如何将 css 添加到父元素

Scala:当它们具有相同的属性时将列表中的某些元素组合起来

LinQ GroupBy对具有相同属性的嵌套元素

具有相同属性的元素的定位器

在具有相同属性的XML元素之间导航

如何访问具有相同类名的元素的数据属性?

XPath:获取具有相同标签但属性不同的元素

从数组中删除具有相同属性值的元素