Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以将最后一个子项与内联样式一起使用,而不是在CSS文件中使用?_Css_Xslt_Css Selectors - Fatal编程技术网

是否可以将最后一个子项与内联样式一起使用,而不是在CSS文件中使用?

是否可以将最后一个子项与内联样式一起使用,而不是在CSS文件中使用?,css,xslt,css-selectors,Css,Xslt,Css Selectors,我正在为XSLT文件中的元素设置样式,因此所有样式都在这里完成。我想从最后一个列表元素中删除底部边框,但不知道如何在XSLT中应用它。这是我的密码: <xsl:element name="div"> <xsl:attribute name="style"> <xsl:text>width:120px; margin:0 auto; padding: 0; b

我正在为XSLT文件中的元素设置样式,因此所有样式都在这里完成。我想从最后一个列表元素中删除底部边框,但不知道如何在XSLT中应用它。这是我的密码:

                <xsl:element name="div">
                <xsl:attribute name="style">
                    <xsl:text>width:120px; margin:0 auto; padding: 0; border: 1px solid black; border-radius: 15px;padding-bottom: 20px; background: #6A819E; margin-top: 20px;</xsl:text>
                </xsl:attribute>
                <xsl:element name="ul">
                    <xsl:attribute name="style">
                        <xsl:text>width:120px; margin:0 auto; padding: 0; background: #6A819E;</xsl:text>
                    </xsl:attribute>
                    <xsl:for-each select="flights/flight"> 
                        <xsl:apply-templates select="route" />
                    </xsl:for-each> 
                </xsl:element>
            </xsl:element>
        </xsl:element>
    </xsl:element>
</xsl:template>


<xsl:template match="route">
    <xsl:element name="li">
        <xsl:attribute name="style">
            <xsl:text>list-style-type:none; width:120px; margin:0 auto;  margin-top: 20px; border-bottom: 1px solid black; text-align:center; background: #6A819E;</xsl:text>
            <xsl:if test="position() = last()">border: none;</xsl:if>
        </xsl:attribute>
        <a><xsl:attribute name="href">map.php?a=<xsl:value-of select="from/latitude" />&amp;b=<xsl:value-of select="from/longitude" />&amp;c=<xsl:value-of select="to/latitude" />&amp;d=<xsl:value-of select="to/longitude" />&amp;e=<xsl:value-of select="routename" /></xsl:attribute><xsl:attribute name="style">
                <xsl:text> text-decoration:none; color:black;</xsl:text>
            </xsl:attribute>
            <xsl:value-of select="routename" />
        </a>
    </xsl:element>

宽度:120px;保证金:0自动;填充:0;边框:1px纯黑;边界半径:15px;垫底:20px;背景:#6A819E;边缘顶部:20px;
宽度:120px;保证金:0自动;填充:0;背景:#6A819E;
列表样式类型:无;宽度:120px;保证金:0自动;边缘顶部:20px;边框底部:1px纯黑;文本对齐:居中;背景:#6A819E;
边界:无;

你可以在列表中看到我在最后应用的最后一个孩子,我现在认为这是错误的,但我想不出其他方法来做到这一点。我还可以问一下,这是使用XSLT文件应用样式的正确方法吗?

您应该尝试以下方法:

 <xsl:attribute name="style">
        <xsl:text>list-style-type:none; width:120px; margin:0 auto;  margin-top: 20px; border-bottom: 1px solid black; text-align:center;</xsl:text>
        <xsl:if test="position() = last()">border: none;</xsl:if>
 </xsl:attribute>

列表样式类型:无;宽度:120px;保证金:0自动;边缘顶部:20px;边框底部:1px纯黑;文本对齐:居中;
边界:无;
您还可以使用CSS类,而不是使用内联样式。在这种情况下,您应该能够使用CSS中的最后一个子选择器(但是,IE7、IE8()中不支持此选择器)

更新1:如果存在插入route元素的文本节点,上述方法将不起作用,因此不同的方法是对最后一个元素使用不同的模板

<xsl:template match="route[last()]">
    <!-- Special behavior for last element -->
</xsl:template>

更新2:在忽略所有不同于路由的节点时,使用if语句的另一个选项是:

<xsl:if test="not(following-sibling::route)">border:none;</xsl:if>
边框:无;

谢谢你的回答,我尝试了你给我的代码,它删除了所有列表元素的边框,而不仅仅是底部元素。这样我仍然可以从XSLT文件链接到外部CSS文件?谢谢!是的,你只需要在头上使用链接标记,就像在HTML文件中通常做的那样。我不知道上面的代码为什么不起作用在没有源代码的情况下进行初始化(可能与路由标记之间的文本节点有关)。如果你发布其余的代码,我可以修复我发布的代码。我用不同的方法更新了答案。我没有复制你的代码,但想法不是很复杂。我忘了还有另一种方法,以防你感兴趣(我已经更新了答案)