如何使用nginx在XSL转换样式表上获得“text / plain”输出?

时间:2017-05-28 04:51:58

标签: html xml xslt nginx

我正在尝试编写XSL样式表以将结果转换为简单的纯文本字符串,并且我在Chrome和Opera上出现以下错误

  

此页面包含以下错误:

     第1行第1行的

错误:文档末尾的额外内容   下面是第一个错误的页面呈现。

     

此文档是作为XSL转换的结果创建的。该   给出的行号和列号来自转换后的结果。

虽然它在Firefox上运行良好

为什么?

XSL是:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:template match="/">
        <xsl:apply-templates select="rtmp"/>
    </xsl:template>

    <xsl:template match="rtmp">
        <xsl:apply-templates select="server"/>
    </xsl:template>

    <xsl:template match="server">
        <xsl:apply-templates select="application"/>
    </xsl:template>

    <xsl:template match="application">
        <xsl:apply-templates select="live"/>
    </xsl:template>

    <xsl:template match="live">
        <xsl:apply-templates select="stream"/>
    </xsl:template>

    <xsl:template match="stream">
        <xsl:choose>
            <xsl:when test="publishing"><xsl:value-of select="name"/>:<xsl:value-of select="nclients - 1"/>,
            </xsl:when>
        </xsl:choose>

    </xsl:template>

</xsl:stylesheet>

和nginx conf是:

location /live {
    rtmp_stat all;
    rtmp_stat_stylesheet live.xsl;
    include mime.types;
    default_type text/plain;
}
location /live.xsl {
    root /usr/local/nginx/html/;
}

目的实际上是从nginx RTMP module检索结果。

我在Firefox页面上打开了View Page Info,类型为“text / xml”。我想如果我能把它看成是“文本/普通”,它就能解决问题。但是怎么样?我可以在nginx或XSL样式表中配置吗?

我想收到一个200状态的text / plain字符串。

1 个答案:

答案 0 :(得分:3)

现在,样式表的输出是一个xml文档,它不能以文本开头,所以Opera和Chrome决定抱怨。

添加

<xsl:output method="text"/>

<stylesheet>元素下面的样式表,将输出声明为文本。