我的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="<%=....%>"
但不确定,也不知道如何避免这个问题。
答案 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,因为您不能将字面尖括号作为内容。您需要将其编写为<
和>
。另一方面,这很可能不适用于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="<title>(.*)</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>