我正在使用xslt将xml转换为wordml。 如果携带该单元格内容的元素的属性不同,我希望能够以不同方式格式化表格单元格的内容。 例如,我有以下xslt:
<xsl:template match="/ns0:RootElement/ns0:Items/ns0:Item0">
<w:tc>
<w:tcPr>
<w:tcW w:w="2268" w:type="dxa" />
<w:noWrap />
</w:tcPr>
<ns0:Item0>
<xsl:for-each select="@ns0:*|@*[namespace-uri()='']">
<xsl:attribute name="{name()}" namespace="{namespace-uri()}">
<xsl:value-of select="." />
</xsl:attribute>
</xsl:for-each>
<w:p wsp:rsidR="00F75372" wsp:rsidRPr="0058287E" wsp:rsidRDefault="00F75372" wsp:rsidP="0058287E">
<w:r wsp:rsidRPr="0058287E"> <w:t><xsl:value-of select="." /></w:t></w:r>
</w:p>
</ns0:Item0>
</w:tc>
</xsl:template>
假设Item0已选择属性,我想根据此属性更改格式化。 有关如何修改呈现的xslt以实现这一点的任何想法? 此致
答案 0 :(得分:1)
答案 1 :(得分:0)
这是一个对我有用的解决方案:
<xsl:template match="/ns0:RootElement/ns0:Items/ns0:Item0">
<w:tc>
<w:tcPr>
<w:tcW w:w="2268" w:type="dxa" />
<w:noWrap />
<!-- test if item0 attribute is selected and if it is, change border and background color-->
<xsl:if test='@selected=1'>
<w:tcBorders>
<w:top w:val="single" w:sz="8" wx:bdrwidth="20" w:space="0" w:color="993300" />
<w:left w:val="single" w:sz="8" wx:bdrwidth="20" w:space="0" w:color="993300" />
<w:bottom w:val="single" w:sz="8" wx:bdrwidth="20" w:space="0" w:color="993300" />
<w:right w:val="single" w:sz="8" wx:bdrwidth="20" w:space="0" w:color="993300" />
</w:tcBorders>
<w:shd w:val="clear" w:color="auto" w:fill="FF9900" wx:bgcolor="DD5800" />
</xsl:if>
</w:tcPr>
<ns0:Item0>
<xsl:for-each select="@ns0:*|@*[namespace-uri()='']">
<xsl:attribute name="{name()}" namespace="{namespace-uri()}">
<xsl:value-of select="." />
</xsl:attribute>
</xsl:for-each>
<w:p wsp:rsidR="00F75372" wsp:rsidRPr="0058287E" wsp:rsidRDefault="00F75372" wsp:rsidP="0058287E">
<!-- test if item0 attribute is selected and if it is, change font to bold-->
<xsl:if test='@selected=1'>
<w:r>
<w:rPr>
<!--<w:i w:val="on"/>-->
<w:b/>
</w:rPr>
<w:t>
<xsl:value-of select="." />
</w:t>
</w:r>
</xsl:if>
<xsl:if test='@selected=-1'>
<w:r wsp:rsidRPr="0058287E">
<w:t>
<xsl:value-of select="." />
</w:t>
</w:r>
</xsl:if>
</w:p>
</ns0:Item0>
</w:tc>
</xsl:template>
希望有人可能会使用这个......