使用XSLT选择何时在XML元素上不起作用

时间:2013-04-25 05:48:24

标签: html xml xslt

我正在尝试格式化我的表,以便有一个左边的填充,我希望决定发生在我的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,然后我再将它应用到我的表填充。

任何帮助将不胜感激。

1 个答案:

答案 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,因此无法确定是否还有其他需要修复的问题。