我有xml属性dsc:
<DMD dsc="1">
在架构中
<xs:attribute name="dsc" type="xs:boolean" use="required"/>
我想将值“0”更改为“no”,将“1”更改为“yes”。
我的xslt:
<td style="padding-left:10px; width:1.64in; ">
<xsl:for-each select="@dsc">
<span style="color:#0024c0; ">
<xsl:value-of select="string(.)"/>
</span>
</xsl:for-each>
</td>
我尝试了xsl:模板匹配和xsl:选择,但我仍然没有解决方案。我可以转换元素,但没有属性。感谢
答案 0 :(得分:1)
您可以尝试以下使用模板的样式表,用适当的值替换所有出现的dsc
属性:
<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes" omit-xml-declaration="yes" />
<!-- identity template - copy all (other) nodes as given -->
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<!-- Replace '1' attribute values with 'yes' values -->
<xsl:template match="@dsc[.='1']">
<xsl:attribute name="dsc">
<xsl:value-of select="'yes'"/>
</xsl:attribute>
</xsl:template>
<!-- Replace '0' attribute values with 'no' values -->
<xsl:template match="@dsc[.='0']">
<xsl:attribute name="dsc">
<xsl:value-of select="'no'"/>
</xsl:attribute>
</xsl:template>
</xsl:stylesheet>
答案 1 :(得分:0)
如果您位于元素@dsc
的上下文中,则XPath DMD
是正确的,但由于您发布的部分XSL,这不可见。
如果您不在DMD
的上下文中,则xpath为whatever/elements/DMD/@dsc
。
但是,短格式.
适用于当前元素。据我所知,你不能用它来获取属性的值。
我不知道你为什么要用xsl:for-each
进行循环。只有一个属性dsc
。
答案 2 :(得分:0)
检查此代码
<td style="padding-left:10px; width:1.64in; ">
<xsl:for-each select="//@dsc">
<span style="color:#0024c0; ">
<xsl:choose>
<xsl:when test="//@dsc='1'"><xsl:text>yes</xsl:text></xsl:when>
<xsl:otherwise><xsl:text>no</xsl:text></xsl:otherwise>
</xsl:choose>
</span>
</xsl:for-each>
</td>