我们即将重组一个由数百个ASPX页面执行重大更改的大型项目。我打算使用XSLT来剥离/编辑页面,但是由于页面中的服务器声明,我尝试过的两个工具无法解析ASPX。
我过去使用过的工具是xmlstarlet和xsltproc
TEST.CMD
REM xml tr --html test.xsl %ProjDir%\%%f > %%~dpnf.ascx
libxslt\xsltproc.exe --novalid --html -o %ProjDir%\%%~nf.ascx test.xsl %ProjDir%\%%f
test.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:asp="http://schemas.microsoft.com">
<xsl:output
method="text" version="1.0" encoding="UTF-8" indent="yes"
omit-xml-declaration="yes" />
<!-- method="html" text xml disable-output-escaping="yes" -->
<xsl:template match='@*|node()'>
<xsl:copy>
<xsl:apply-templates select='@*|node()'/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
输出;
test//Test.aspx:1: HTML parser error : htmlParseStartTag: invalid element name
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="Test.aspx.vb"
^
test//AcronymAdd.aspx:21: HTML parser error : Tag fc1:frontendheadercontrol invalid
<fc1:FrontEndHeaderControl ID="Heading" runat="server" />
^
...
任何人都可以推荐一种解析asp.net页面的方法来启用XSLT模板的应用吗?
答案 0 :(得分:1)
难道你不能在aspx文件中进行简单的搜索和替换,然后再通过XML工具运行它们(这对我来说似乎是合理的工具,FWIW;我已经用它们完成了大量的Web数据提取) 。似乎aspx文件的唯一问题是&lt; %%&gt;指令,您可以忽略转换为XML元素:
方法1:将aspx指令转换为注释:
sed's /&lt;%/&lt; - / g; S /%GT; / - &/克'
方法2:将aspx指令转换为xml(如果隐含@Page则不起作用):
sed's /&lt;%@ * //&gt; / g'
其他错误消息来自没有XML命名空间声明。你可以添加它们;他们指向的网址不一定是真实的。
答案 1 :(得分:0)
将其作为XML存储在数据库中,并将内容拉入页面的指定部分并在那里应用于XSLT?一个主要的端口,如果你要解决这个问题,你可能会走一整步并将其存储为HTML5。然后,您可以创建自己的页面布局以将内容拉入,基本上是CMS。在后一种情况下,您可以完全避免使用XSLT并使用CSS,这更适合制作现代前端UI。