删除子标签并将其值连接到父标签的名称

Posted

技术标签:

【中文标题】删除子标签并将其值连接到父标签的名称【英文标题】:remove child tag and concatinate its value to the name of the parent tag 【发布时间】:2020-05-16 09:02:53 【问题描述】:

请问可以用 XSLT 1.0 实现吗?

示例输入是

<Variable_Attributes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    <Row>
        <MATNR>3006921_CAR</MATNR>
        <REFERENCE>
            <uom>EA</uom>
            <product_id>3006921_EA</product_id>
            <quantity>6</quantity>
        </REFERENCE>
    </Row>
    <Row>
        <MATNR>3006921_CAR</MATNR>
        <REFERENCE>
            <uom>CAR</uom>
            <product_id>3006921_EA</product_id>
            <quantity>6</quantity>
        </REFERENCE>
    </Row>
</Variable_Attributes>

我想删除 &lt;uom&gt; 标签,并通过连接已删除 uom 标签的值来重命名父标签 &lt;REFERENCE&gt;

所以上面会变成:

<Variable_Attributes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    <Row>
        <MATNR>3006921_CAR</MATNR>
        <REFERENCE_EA>
            <product_id>3006921_EA</product_id>
            <quantity>6</quantity>
        </REFERENCE_EA>
    </Row>
    <Row>
        <MATNR>3006921_CAR</MATNR>
        <REFERENCE_CAR>
            <product_id>3006921_EA</product_id>
            <quantity>6</quantity>
        </REFERENCE_CAR>
    </Row>
</Variable_Attributes>

最好的祝福

列侬

【问题讨论】:

【参考方案1】:

xsl:element 允许您计算结果元素的名称,例如

<xsl:template match="REFERENCE">
  <xsl:element name="local-name()uom">
    <xsl:apply-templates />
  </xsl:element>
</xsl:template>

<xsl:template match="uom"/>

当然基础处理会通过恒等转换模板来完成。

【讨论】:

以上是关于删除子标签并将其值连接到父标签的名称的主要内容,如果未能解决你的问题,请参考以下文章

0417 js节点操作表格(添加删除)

当父标签的子标签具有某些属性值时,如何使用 BeautifulSoup 获取父标签的名称值?

在iframe中关闭/删除iframe标签

Springcloud项目改名的操作方法

微信小程序 父子组件间传参

以编程方式从其父视图中删除子视图并将其附加到其他父视图