0

重要な変更を実行する数百のASPXページの大規模なプロジェクトを再構築しようとしています。XSLTを使用してページを削除/編集することを計画していましたが、ページ内のサーバー宣言が原因で、試した2つのツールで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テンプレートの適用を可能にする方法を推奨できますか?

4

2 に答える 2

1

aspx ファイルを XML ツールで実行する前に、単純な検索と置換を実行できませんでしたか (FWIW は、私にとって妥当なツールのように思えます。私はそれらを使用して多くの Web データ抽出を行ってきました)。aspx ファイルの唯一の問題は <% %> ディレクティブのようですが、XML 要素への変換を無視することもできます。

アプローチ 1: aspx ディレクティブをコメントに変換します。

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

アプローチ 2: aspx ディレクティブを xml に変換します (@Page が暗黙のままの場合は機能しません)。

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

もう 1 つのエラー メッセージは、XML 名前空間宣言がないために発生します。それらを追加するだけです。彼らが指す URL は本物である必要はありません。

于 2012-10-16T02:56:20.870 に答える
0

代わりにそれをXMLとしてデータベースに保存し、コンテンツをページの指定されたセクションにプルして、そこでXSLTに適用しますか?主要な移植版であり、その問題に直面する場合は、1マイル進んでHTML5として保存することをお勧めします。次に、独自のページレイアウトを作成して、コンテンツを基本的にCMSに取り込むことができます。後者の場合、XSLTを完全に回避し、最新のフロントエンドUIの作成にはるかに適したCSSを使用できます。

于 2012-10-16T00:52:05.440 に答える