xml 库中的哪些更改导致我的代码崩溃?

What has been changed in xml libraries for my code to crash?

我开始更新一个旧项目。 使用 centos7 PHP 7 可以,但 centos8 就没那么幸运了。库中可能有一些变化吗? 尽管如此,我还是需要在 centos8 上得到它 运行。 我也不熟悉 xsl。 代码中可能有什么问题?
两个带 ** 的 Atm 都抛出警告并且程序失败。

警告:XSLTProcessor::transformToXml():xsl:choose:xsl:when 预计首先出现在

    **<xsl:template name="D_title"><xsl:choose>**
            <!--<xsl:when test="ver!=''">-->
            <xsl:when test="o='1'"><xsl:value-of select="concat('sometext: ',code)"/></xsl:when>
            <xsl:otherwise><xsl:value-of select="concat('sometext (edid: ',edid,')')"/></xsl:otherwise>
            
    </xsl:choose></xsl:template>
<xsl:template name="login">
    <xsl:choose>
        <xsl:when test="name">
            **<form name="logout" method="post">**
            <span><xsl:value-of select="name"/> <input type="submit" class="textBox" name="logout" value="Log out" /></span>
            </form>
        </xsl:when>
        <xsl:otherwise>
                <form name="login" method="post">
                    <xsl:if test="error"><span class="error_msg">error!</span></xsl:if>
                    USER: <input type="text" name="username" value="" size="14" maxlength="14" class="textBox" />
                    PW: <input type="password" name="password" size="14" maxlength="14" class="textBox" />
                    <input type="submit" class="textBox" name="login" value="Log in" />
                </form>
        </xsl:otherwise>
    </xsl:choose>
</xsl:template>

渲染代码:

        $dom_el = dom_import_simplexml($this->sxe);

        $doc = new DOMDocument('1.0');
        $dom_node = $doc->importNode($dom_el, true);
        $dom_node = $doc->appendChild($dom_node);

        $xslt = new xsltProcessor;
        $xslt->importStyleSheet(DomDocument::load('xsl/template.xsl'));
        return $xslt->transformToXML($doc);

我也偶然发现了 libxslt 的类似问题(使用 libxml 20907、libxslt 10132)。似乎如果在标记 之间的 XSL(.xsl 文件)中有任何空格,则会抛出错误。

因此请从您的 xsl:choose 元素中删除所有空格(包括 \n)并重试。