1

これは私の作業上の悪夢です: HTML ページであるが、私が現在書き直している古いプログラムにデータと構造を提供する追加の xml 要素 (すべて会社名「TLA」で始まる) を含むファイルがたくさんあります。

フォームの例:

<html >
<head>
    <title>Highly Simplified Example Form</title>
</head>
<body>
    <TLA:document>
        <TLA:contexts>
            <TLA:context id="id_1" value=""></TLA:context>
        </TLA:contexts>
        <TLA:page>
            <TLA:question id="q_id_1">
                <table>
                    <tr>
                        <td>
                            <input id="input_id_1" type="text" />
                        </td>
                    </tr>
                </table>
            </TLA:question>
        </TLA:page>
        <!-- Repeat many times -->
    </TLA:document>
</body>
</html>

私の仕事は、このようなドキュメントを 2 つのドキュメントに分割するプリプロセッサを作成することです。'TLA' 要素のみを含む xml ファイルと、html 要素のみを含む html ファイルです。

XML の例:

<?xml version="1.0" encoding="utf-8" ?>
<TLA:document>
    <TLA:contexts>
      <TLA:context id="id_1" value=""></TLA:context>
    </TLA:contexts>
    <TLA:page>
      <TLA:question  id="q_id_1">
      </TLA:question>
    </TLA:page>
    <!-- Repeat many times -->
</TLA:document>

HTML の例:

<html >
<head>
    <title>Highly Simplified Example Form</title>
</head>
<body>
    <table>
        <tr>
            <td>
                <input id="input_id_1" type="text" />
            </td>
        </tr>
    </table>
    <!-- Repeat many times -->
</body>
</html>

これで、各要素を一度に 1 つずつ処理して新しいドキュメントにコピーすることでこれを行うことができますが、1 つまたは 2 つのパス変換または巧妙なシリアル化を使用してこれを行う簡単な方法があるかもしれないと考えていますが、私にはありませんどの道を探るかのアイデア。

それで、これを処理する方法について誰か提案がありますか?理想的には VB.net ですが、C# などでも構いません。

アップデート:

xsltがこれを行う方法のようですが、私はそれについてほとんど知らないので、まだ助けが必要です. //namespace::TLA は、データ要素を抽出するための正しい xpath のようですが、実装方法がわかりません。

4

1 に答える 1

2

XSLT は、この問題を解決するための最良の選択でした。

  • HTML を抽出するには、この質問を参照してください。
  • 名前空間を抽出するには、この質問を参照してください。
于 2013-04-08T08:15:15.203 に答える