0

我们即将重组一个包含数百个 ASPX 页面的大型项目,该页面执行重大更改。我计划使用 XSLT 剥离/编辑页面,但是由于页面中的服务器声明,我尝试过的两个工具无法解析 ASPX。

我过去使用的工具是xmlstarletxsltproc

测试.cmd

REM xml tr  --html test.xsl %ProjDir%\%%f > %%~dpnf.ascx
libxslt\xsltproc.exe --novalid --html -o %ProjDir%\%%~nf.ascx test.xsl %ProjDir%\%%f

测试.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 模板应用程序的方法吗?

4

2 回答 2

1

难道你不能在通过你的 XML 工具运行它们之前对 aspx 文件进行简单的搜索和替换(这对我来说似乎是合理的工具,FWIW;我已经用它们做了很多网络数据提取)。似乎 aspx 文件的唯一问题是 <% %> 指令,您可以忽略转换为 XML 元素:

方法 1:将 aspx 指令转换为注释:

sed 's/<%/<--/g; s/%>/-->/g'

方法 2:将 aspx 指令转换为 xml(如果 @Page 保留为隐式,则不起作用):

sed 's/<%@ *//>/g'

另一个错误消息来自没有 XML 命名空间声明。您可以添加它们;他们指向的 URL 不需要是真实的。

于 2012-10-16T02:56:20.870 回答
0

将其作为 XML 存储在数据库中,然后将内容拉入页面的指定部分并在那里应用 XSLT?一个主要的端口,如果你要解决这个问题,你还不如不遗余力地把它存储为 HTML5。然后,您可以创建自己的页面布局以将内容拉入,基本上是 CMS。在后一种情况下,您可以完全避免 XSLT 并使用更适合制作现代前端 UI 的 CSS。

于 2012-10-16T00:52:05.440 回答