我正在尝试格式化我的表,以便有一个左边的填充,我希望决定发生在我的for statment中,因为有多行需要定义填充。
我已经创建了一个XML元素,它告诉我要使用什么填充,所以我需要做的就是阅读它,但是当我尝试阅读它时,当我在浏览器中打开xml时,dosnt会显示任何内容。
这是我的xml示例。
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="xmlstylesheet.xsl" type="text/xsl"?>
<Collection>
<Passives>
<Talent>Tra</Talent>
<TCost>1</TCost>
<Type>ANY</Type>
<Action>Pass</Action>
</Passives>
<Passives>
<Talent>Gen</Talent>
<TCost>1</TCost>
<Type>ANY</Type>
<Indent>1</Indent>
<Action>Pass</Action>
</Passives>
<Passives>
<Talent>Weap</Talent>
<TCost>12</TCost>
<Type>ANY</Type>
<Indent>2</Indent>
<Action>Pass</Action>
</Passives>
</Collection>
它的要点是,如果没有<Indent></Indent>
,那么如果没有Indent元素,填充应该等于15px,如果indenet = 1则填充应该等于30,最后缩进= 2然后填充应该等于45。 / p>
我正在尝试在我的xslt中定义填充以获取Passive的声明。
<xsl:for-each select="Passives">
<div style="font-family:Calibri, Arial; font-size:5pt; cursor: default;">
<xsl:choose>
<xsl:when test="Indent == '2'">
<xsl:variable name="newpadding">45px</xsl:variable>
</xsl:when>
<xsl:when test="Indent == '1'">
<xsl:variable name="newpadding">30px</xsl:variable>
</xsl:when>
<xsl:when test="Indent != ''">
<xsl:variable name="newpadding">15px</xsl:variable>
</xsl:when>
</xsl:choose>
<xsl:if test="Talent != ''">
//etc
所以,一旦我输入我的for statment,我想定义newpadding,然后我再将它应用到我的表填充。
任何帮助将不胜感激。
答案 0 :(得分:2)
而不是:
<xsl:choose>
<xsl:when test="Indent == '2'">
<xsl:variable name="newpadding">45px</xsl:variable>
</xsl:when>
<xsl:when test="Indent == '1'">
<xsl:variable name="newpadding">30px</xsl:variable>
</xsl:when>
<xsl:when test="Indent != ''">
<xsl:variable name="newpadding">15px</xsl:variable>
</xsl:when>
</xsl:choose>
试试这个:
<xsl:variable name="newpadding"
select="15 * (1 + concat(0, Indent))" />
您只向我们展示了一小部分XSLT,因此无法确定是否还有其他需要修复的问题。