是否可以匹配不屬於屬於屬性子集的屬性?例如,我想匹配除@ attr1和@ attr2之外的所有內容。有沒有辦法編寫類似於以下內容的模板匹配語句,還是我以錯誤的方式解決這個問題?XSLT與某些屬性不匹配
<xsl:template match="NOT(@attr1) and NOT(@attr2)">
感謝
是否可以匹配不屬於屬於屬性子集的屬性?例如,我想匹配除@ attr1和@ attr2之外的所有內容。有沒有辦法編寫類似於以下內容的模板匹配語句,還是我以錯誤的方式解決這個問題?XSLT與某些屬性不匹配
<xsl:template match="NOT(@attr1) and NOT(@attr2)">
感謝
最簡單的方法是使用兩個模板:
<xsl:template match="@attr1|@attr2"/>
<xsl:template match="@*">
....
</xsl:template>
第一個模板會抓住那些你想忽略參考,並簡單地吃他們。第二個將匹配其餘的屬性。
什麼是op問是可能的。使用以下內容:
<xsl:template match="@*[local-name()!='attr1' and local-name()!='attr2']">
....
</xsl:template>
如果要更改屬性或在缺少單個複製操作時添加該屬性,此功能特別有用。另一個答案在這種情況下不起作用。例如
...
<xsl:copy>
<xsl:attribute name="attr1">
<xsl:value-of select="'foo'"/>
</xsl:attribute>
<xsl:apply-templates select="@*[local-name()!='attr1']|node()"/>
</xsl:copy>
...
這很好。謝謝。 – Steve 2009-07-16 12:18:53