首先,XML需要很好地形成的,所以img
標籤需要關閉,否則將無法使用XSLT。
<a href="xxx" class="box">
<img src="1.jpg" alt="CBA" title="ABC" class="imgresp" height="204" width="307" />
</a>
假設真的是這樣,你則需要在X SLT identity transform
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
它自己,它只是將所有節點讀取,並從輸入XML屬性來輸出XML按照你的情況,它爲你帶來99%的收益。
然後,您只需要一個模板來複制您需要的額外屬性。在這種情況下,您需要一個與a
標籤匹配的模板,該模板將其複製,但也會添加額外的屬性。
<xsl:template match="a[@class='box']">
<xsl:copy>
<xsl:copy-of select="img/@title" />
<xsl:apply-templates select="@*"/>
<xsl:apply-templates select="node()"/>
</xsl:copy>
</xsl:template>
或者,也許,這樣,使用Attribute Value Templates創建屬性
<xsl:template match="a[@class='box']">
<a title="{img/@title}">
<xsl:apply-templates select="@*|node()"/>
</a>
</xsl:template>
試試這個XSLT
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes" />
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="a[@class='box']">
<a title="{img/@title}">
<xsl:apply-templates select="@*|node()"/>
</a>
</xsl:template>
</xsl:stylesheet>
你能編輯你的問題來顯示你期望的輸出嗎?另外,如果您已經嘗試了一些XSLT,那麼即使它不起作用,您是否也可以證明這一點?謝謝! –
用期望的輸出更新 – user966660