2012-10-16 73 views
0

我們即將重組一個包含數百個ASPX頁面的大型項目,以執行重大更改。我打算使用XSLT去除/編輯頁面,但是我嘗試過的兩個工具由於頁面中的服務器聲明而無法解析ASPX。將XSLT轉換應用於ASPX文件

我已經在過去使用的工具有xmlstarletxsltproc

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

將它作爲XML存儲在數據庫中,然後將內容拉入頁面的指定部分,並將其應用於XSLT。一個主要的港口,如果你要去那個麻煩,你可能會走完整個英里,並將其存儲爲HTML5。然後,您可以創建自己的頁面佈局來將內容拖入,基本上是CMS。在後一種情況下,您完全可以避免使用XSLT並使用更適合製作現代前端UI的CSS。

1

難道你不能在通過XML工具運行它們之前對aspx文件進行簡單的搜索和替換(這對我來說似乎是合理的工具,FWIW;我已經用它們做了大量的Web數據提取)。這似乎是唯一的問題與ASPX文件是<%%>指令,你既可以忽略轉換爲XML元素:

方法1:轉ASPX指令爲註釋:

SED的/ < %/ < -/g; S /%>/- >/G'

方法2:轉動的aspx指令到XML(如果@Page留隱無效):

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

其他錯誤消息來自沒有XML命名空間聲明。你可以添加它們;他們指向的URL並不需要是真實的。