代码之家  ›  专栏  ›  技术社区  ›  Artsiom Anisimau

具有ASP特定代码的XSLT处理问题

  •  1
  • Artsiom Anisimau  · 技术社区  · 15 年前

    我有下面代码的ASP文件:

      <html>
        <head>
          <link rel="stylesheet" href="<%=bb_style%>"/>
          <title>asdf</title>
        </head>
    

    我需要将这个文件中的标题包含到由XSLT转换形成的另一个ASP文件中。我使用此代码:

    <xsl:value-of select="document(content)/html/head/title"/>
    

    但是我没有从这个代码中返回任何内容。我责怪 href="<%=....%>" 但不确定也不知道如何避免这个问题。

    3 回复  |  直到 14 年前
        1
  •  1
  •   Dimitre Novatchev    15 年前
      <html> 
        <head> 
          <link rel="stylesheet" href="<%=bb_style%>"/> 
          <title>asdf</title> 
        </head>
    

    这不是一份格式良好的文件 --不仅顶级元素标记没有关闭,更重要的是,因为在XML中, < 不允许在属性内。

    因此document()函数不成功 在将其解析为XML文档时,这是您遇到的问题。

        2
  •  0
  •   musiKk    15 年前

    我不知道ASP,但我敢打赌有更好的方法来包含东西(例如 include directive 这在所有优秀的模板引擎和Web框架中都存在)。

    您所显示的XML不是真正的XML,因为您不能将文字尖括号作为内容。你需要把它们写成 &lt; &gt; . 另一方面,这很可能不适用于ASP,因为它确实依赖于 <%= .

        3
  •  0
  •   user357812    15 年前

    进程非XML树可以在XSLT2.0中完成。此样式表,包含任何输入:

    <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <xsl:output method="text"/>
        <xsl:template match="/">
            <xsl:analyze-string select="unparsed-text('some.asp')" regex="&lt;title>(.*)&lt;/title>">
                <xsl:matching-substring>
                    <xsl:value-of select="regex-group(1)"/>
                </xsl:matching-substring>
            </xsl:analyze-string>
        </xsl:template>
    </xsl:stylesheet>
    

    输出:

    asdf
    

    使用“some.asp”类似于:

    <html>    
        <head>    
          <link rel="stylesheet" href="<%=bb_style%>"/>    
          <title>asdf</title>    
        </head>
    </html>