当前位置: 首页 > 知识库问答 >
问题:

搜索禁用输出转义的XSLT替代方案

籍兴文
2023-03-14

Firefox不支持“禁用输出转义”,我正在寻找另一种XSLT方法来处理以下XML文件

<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<text>
<title>Any title</title>
<para>First para</para>
<para>Second para</para>
<para>Third para</para>
</text>

为了产生一个超文本标记语言文件

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">

    <html>
    <head>
    </head>
    <body>
    <xsl:apply-templates/>
    <xsl:text disable-output-escaping="yes">&lt;/div></xsl:text>
    </body>
    </html>
</xsl:template>

<xsl:template match="title">
    <div style="border: 3px solid red;">
        <h1><xsl:value-of select="."/></h1>
    </div>
    <xsl:text disable-output-escaping="yes">&lt;div style="border: 3px solid blue></xsl:text>
</xsl:template>

<xsl:template match="para">
    <div style="border: 3px solid green;">
        <xsl:value-of select="."/>
    </div>
</xsl:template>

</xsl:stylesheet>

有什么建议吗?

共有2个答案

段干祺
2023-03-14

这个很简单。

<xsl:template match="/">
    <html>
    <body>
    <xsl:apply-templates select="title"/>
    <div>
       <xsl:apply-templates select="para"/>
    </div>
    </body>
    </html>
</xsl:template>

如果你必须处理一个序列,比如

标题段落标题段落标题段落标题段落

为此,XSLT1.0中的适当技术是“同级递归”——将模板应用于第一个子级,并在该子级的模板中,将模板应用于其随后的第一个子级。更好的方法是,转到XSLT2.0,对每个组使用xsl:for。(在浏览器中,这需要第三方处理器,如Saxon JS)。

孙永嘉
2023-03-14

我不知道如何将模板应用于所有其他类型的节点

很简单:

<xsl:apply-templates select="*[not(self::title)]"/>

即制作你的第一个模板:

<xsl:template match="/text">
    <html>
        <head/>
        <body>
            <xsl:apply-templates select="title"/>
            <div style="border: 3px solid blue;">
                <xsl:apply-templates select="*[not(self::title)]"/>
            </div>
        </body>
    </html>
</xsl:template>

然后添加模板以处理输入中可能出现的标题段落图像和任何其他节点。

或者,如果您有可能出现在输入中的所有节点的列表,请将模板显式应用于它们:

<xsl:template match="/text">
    <html>
        <head/>
        <body>
            <xsl:apply-templates select="title"/>
            <div style="border: 3px solid blue;">
                <xsl:apply-templates select="para | image | other | another"/>
            </div>
        </body>
    </html>
</xsl:template>
 类似资料:
  • 我正在使用xslt转换xml文档。我需要使用输出转义来获得我的结果,因为我使用的工作服务器只会输出

  • 问题内容: 我有以下xslt可以将数据转换为JQuery接受的格式。但是,由于JSON在数据字符串中不接受双引号,因此我需要用转义序列\代替“ XML: 当前的XSLT: 电流输出: 所需的输出: 问题答案: 将此模板添加到您的代码中 : 然后更改 : 至 : 您的完整转换现在变为 : 当此转换应用于提供的XML文档时 : 产生想要的正确结果 :

  • 我知道如何用升华文本2搜索和替换字符串,但在使用转义字符时却不知道。 对于下面的javascript代码,有人能告诉我如何在这里转义括号吗? 以下方法不起作用,但似乎接近正确: 查找:

  • 在我的xslt禁用-输出-转义="yes"是不适用于当前函数。 这是不工作.这是不转换br标记从xml到br成超文本标记语言.任何想法。

  • 我有以下问题。我不是XSLT方面最伟大的专家,我想成功的是将一个XML从赛贝斯转换为以下内容: Sybase的输出: 我希望它的输出标题保持原样,条目部分不同 这是到目前为止我的XSLT(对不起,不太可能) 也许,有人可以帮我实现我想要的。非常感谢你。

  • 本文向大家介绍PHP页面输出搜索后跳转下一页的处理方法,包括了PHP页面输出搜索后跳转下一页的处理方法的使用技巧和注意事项,需要的朋友参考一下 php页面输出时,搜索功能在跳转下一页时,如果不做任何处理,会返回原有是第二页输出的数据,用js来给url加上搜索的条件,保证跳转下一页时输出的是搜索到的数据。以下是js代码 搜索部分代码 以上所述是小编给大家介绍的PHP页面输出搜索后跳转下一页的处理方法