2

HTML ドキュメントを解析し、すべてのフォームのアクション属性を置き換え、いくつかの非表示フィールドを XSL に追加したいと考えています。誰かがこれを行うことができる XSL の例を示すことができますか?

4

3 に答える 3

4

最初に必要なのは整形式の HTML (少なくとも移行用) ですが、XHTML をお勧めします。一部の XSLT プロセッサは不正な形式の HTML を受け入れる可能性がありますが、それは規則ではありません。

以下の例を試すには、この小さな Microsoft コマンド ライン アプリをダウンロードできます。

必要なものの簡単で汚い XSLT の例 (example-xslt.xsl):

<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:template match="*">
            <xsl:copy>
                <xsl:copy-of select="@*"/>
                <xsl:apply-templates/>
            </xsl:copy>
        </xsl:template>

        <xsl:template match="form[@action='foo']">
            <xsl:copy>
                <xsl:copy-of select="@*"/>
                <xsl:attribute name="action">non-foo</xsl:attribute>
                <input type="hidden" name="my-hidden-prop" value="hide-foo-here"/>
                <xsl:apply-templates select="*"/>
            </xsl:copy>
        </xsl:template>

</xsl:stylesheet>

対応する XML の例 (example.xml)。

<?xml version ="1.0"?>
<?xml-stylesheet type="text/xsl" href="example-xslt.xsl"?>
<html>
    <head></head>
    <body>
        <form action="foo">
        </form>
        <form action="other">
        </form>
    </body>
</html>
于 2008-11-11T19:40:58.653 に答える
0

このチュートリアルから開始できます

ただし、一般に入力としてXSLT整形式が必要であり、常に整形式であるとは限らないことに注意してくださいXMLHTML

于 2008-11-11T19:06:55.803 に答える
0

gurin の答えを考えると、HTML の XSLT ベースの可能な経路の 1 つは、tidy を使用して XHTML に変換し、XSLT を XHTML に適用しますが、使用xsl:output[@method="html"]して HTML を元に戻すことです。@doctype-systemおよび属性を使用@doctype-publicすると、出力ファイルにも doctype 宣言を提供できます。

Shahbhat のサンプル ファイルはありませんが、一般的なアプローチは XSLT の観点からは単純です。ID 変換から開始し、アクション属性のテンプレートを追加して、必要な方法でオーバーライドします。非表示のフィールドを追加するには、最も簡単な方法はform、恒等変換として要素のテンプレートを明示的に作成することですが、その中に追加の要素も出力されると思います。Fernando Miguelez がちょうど例を投稿したと思います。

于 2008-11-11T19:42:57.527 に答える