xslt上的HTML lang属性依赖于网站语言

时间:2016-07-15 07:45:12

标签: xslt

首先 - 抱歉我的英语不好。

我需要将lang属性添加到html open标签中依赖哪些语言在网站上选择。  它现在看起来如何:

<xsl:template match="root">
        <html>
            <head>
                <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
                <title>
                    <xsl:choose>
                        <xsl:when test="Document/@title!=''">
                            <xsl:value-of select="Document/@title" disable-output-escaping="yes"/>
                        </xsl:when>
                        <xsl:when test="ContentList/@title!=''">
                            <xsl:value-of select="ContentList/@title" disable-output-escaping="yes"/>
                        </xsl:when>
                        <xsl:otherwise>
                            <xsl:value-of select="@ContentHeader" disable-output-escaping="yes"/>- <xsl:value-of select="@title" disable-output-escaping="yes"/> - <xsl:value-of select="@slogan" disable-output-escaping="yes"/></xsl:otherwise>
</xsl:choose>

我试着做出这个条件

            <xsl:choose>
                <xsl:when test="@lang='rus'">
                    <html lang="ru">
                </xsl:when>
                <xsl:when test="@lang='rom'">
                    <html lang="ro">
                </xsl:when>
                <xsl:otherwise>
                    <html lang="en">
                </xsl:otherwise>
            </xsl:choose>

但它不起作用。

2 个答案:

答案 0 :(得分:0)

XSLT样式表必须是格式良好的XML文档。这意味着元素必须正确嵌套,您的示例违反了三个开始标记而没有匹配结束标记。考虑生成结构,而不是标签。

从原始样式表开始(有其他问题,但我现在不想对它们进行狡辩),简单的解决方案是只使属性成为条件:

<html>
    <xsl:choose>
       <xsl:when test="@lang='rus'">
          <xsl: attribute name="lang"
               value="ru"/>
       </xsl:when> 
       <xsl:when test="@lang='rom'">
          <xsl: attribute name="lang"
               value="ro"/>
       </xsl:when> 
       <xsl: otherwise>
          <xsl: attribute name="lang"
               value="en"/>
       </xsl: otherwise>
    </xsl:choose>

    <!-- etc... -->

答案 1 :(得分:0)

感谢@keshlam

这是解决方案

diff