xml转换 - 根据当前节点将属性添加到上一个节点

时间:2009-07-22 08:07:35

标签: xml xslt

我有一个ejb-jar.xml,标签中没有'id'属性。

解决此问题的最佳方法是什么?可以使用XSLT吗?

<session>
  <ejb-name>EJB1</ejb-name>
  <local-home>x.E1LH</local-home>
  <local>x.E1L</local>
  <ejb-class>x.E1EJB</ejb-class>
  <session-type>Stateless</session-type>
  <transaction-type>Container</transaction-type>
</session>

应改写为:

<session id="EJB1"> <!--ejb-name gets added as an "id" attribute -->
  <ejb-name>EJB1</ejb-name>
  <local-home>x.E1LH</local-home>
  <local>x.E1L</local>
  <ejb-class>x.E1EJB</ejb-class>
  <session-type>Stateless</session-type>
  <transaction-type>Container</transaction-type>
</session>

1 个答案:

答案 0 :(得分:1)

xslt当然可以做到......但这实际上取决于你需要做什么。

像(未经测试的)

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

<xsl:template match="session">
    <session id="{ejb-name}">
        <xsl:apply-templates select="@* | node()"/>
    </session>
</xsl:template>