這裏有您需要(因爲命名空間是很重要的),滿樣式表:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:z="foo">
<xsl:template match="root">
<root>
<xsl:apply-templates />
</root>
</xsl:template>
<xsl:template match="z:row">
<xsl:variable name="A" select="@A" />
<xsl:for-each select="@*[local-name() != 'A']">
<z:row A="{$A}">
<xsl:attribute name="{local-name()}">
<xsl:value-of select="." />
</xsl:attribute>
</z:row>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
,我更喜歡用文字結果元素(如而不是<xsl:element>
而不是<xsl:element>
和屬性值模板(屬性值中的那些{}
s)而不是<xsl:attribute>
在可能的情況下,因爲它使代碼更短,並使得更容易看到您正在生成的結果文檔。其他人更喜歡<xsl:element>
和<xsl:attribute>
,因爲那麼一切都是XSLT指令。
如果您使用XSLT 2.0,有幾個語法樂事,幫助,即except
運營商XPath和直接在<xsl:attribute>
使用select
屬性的能力:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs"
xmlns:z="foo">
<xsl:template match="root">
<root>
<xsl:apply-templates />
</root>
</xsl:template>
<xsl:template match="z:row">
<xsl:variable name="A" as="xs:string" select="@A" />
<xsl:for-each select="@* except @A">
<z:row A="{$A}">
<xsl:attribute name="{local-name()}" select="." />
</z:row>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
我喜歡{ } 句法。你能指點我一些關於他們用法的文檔嗎?我正在努力處理任何重要的事情 – 2008-09-17 21:25:51