使用asp特定代码处理XSLT问题

时间:2010-07-27 06:44:33

标签: java xml xslt asp-classic

我的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 个答案:

答案 0 :(得分:1)

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

这不是格式正确的文档 - 不仅顶级元素标记未关闭,更重要的是,因为在XML中不允许使用字符<在属性内部。

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

答案 1 :(得分:0)

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

您显示的XML片段实际上不是XML,因为您不能将字面尖括号作为内容。您需要将其编写为&lt;&gt;。另一方面,这很可能不适用于ASP,因为它肯定依赖于<%=的确切存在。

答案 2 :(得分:0)

处理非XML树可以在XSLT 2.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>