继my last answered question串联的属性,我现在正在试图删除的两个属性,并使用他们的连接值创造一个新问题:XSLT:未知名
输入:
<A>
<B>
<elemX att1="SN:" att2="toto1" att3="tata" SerialNumber="123X" />
<elemY att1="SN:" att2="toto2" att3="tata" SerialNumber="123Y" />
</B>
<B>
<elemX att1="tata1" att2="SN:" att3="toto" SerialNumber="456X" />
<elemY att1="tata2" att2="SN:" att3="toto" SerialNumber="456Y" />
</B>
<B>
<elemX att1="toto1" att2="tata" att3="SN:" SerialNumber="789X" />
<elemY att1="toto" att2="tata2" att3="SN:" SerialNumber="789Y" />
</B>
所需输出:
<A>
<B>
<elemX SerialHarnessNumber="SN:"123X att2="toto1" att3="tata" />
<elemY SerialHarnessNumber="SN:123Y" att2="toto2" att3="tata" />
</B>
<B>
<elemX att1="tata1" SerialHarnessNumber="SN:456X" att3="toto" />
<elemY att1="tata2" SerialHarnessNumber="SN:456Y" att3="toto" />
</B>
<B>
<elemX att1="toto1" att2="tata" SerialHarnessNumber="SN:789X" />
<elemY att1="toto" att2="tata2" SerialHarnessNumber="SN:789Y" />
</B>
元素的顺序在这里并不重要。
要做到这一点,我用下面的XSL:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="@*[.='SN:']" >
<xsl:attribute name="SerialHarnessNumber">
<xsl:value-of select="concat('SN:', @SerialNumber)" />
</xsl:attribute>
</xsl:template>
<xsl:template match="@SerialNumber" />
就目前而言,我只设法显示 “SN:” 在的SerialNumber属性,但SerialHarnessNumber不与它连接,虽然我用@SerialNumber,这是一种先前在另一个XSLT上工作的语法。
我认为问题来自事实,即SN:值永远不在同一个元素中。
如何连接SerialNumber值与attX的值?
差不多,确实......它的工作原理,非常感谢你! :) –