HTML ドキュメントを解析し、すべてのフォームのアクション属性を置き換え、いくつかの非表示フィールドを XSL に追加したいと考えています。誰かがこれを行うことができる XSL の例を示すことができますか?
3 に答える
最初に必要なのは整形式の 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>
このチュートリアルから開始できます
ただし、一般に入力としてXSLT
整形式が必要であり、常に整形式であるとは限らないことに注意してくださいXML
HTML
gurin の答えを考えると、HTML の XSLT ベースの可能な経路の 1 つは、tidy を使用して XHTML に変換し、XSLT を XHTML に適用しますが、使用xsl:output[@method="html"]
して HTML を元に戻すことです。@doctype-system
および属性を使用@doctype-public
すると、出力ファイルにも doctype 宣言を提供できます。
Shahbhat のサンプル ファイルはありませんが、一般的なアプローチは XSLT の観点からは単純です。ID 変換から開始し、アクション属性のテンプレートを追加して、必要な方法でオーバーライドします。非表示のフィールドを追加するには、最も簡単な方法はform
、恒等変換として要素のテンプレートを明示的に作成することですが、その中に追加の要素も出力されると思います。Fernando Miguelez がちょうど例を投稿したと思います。