-1

たとえば、同様のテンプレートを持つファイルがたくさんあります。

<book book_id="foo">
  <title>Examples in different languages</title>
    <book_section>Tutorials</book_section>
      <body>
        <p>Some text</p>
        <section>
            <sectionheader>if</sectionheader>
            <sectionbody>
                <p>Depending on language you use, the sytax will be different:</p>
                <scriptsample>
                    <language_a>
                        <block>
                            <p>
                                &nbsp;&nbsp;...<br/>
                                &nbsp;&nbsp;<i>Do a comparation</i><br/>
                                &nbsp;&nbsp;<b>if</b> (a == b)<br/><br/>
                                &nbsp;&nbsp;{<br/>
                                &nbsp;&nbsp;&nbsp;&nbsp;do what you want<br/>
                                &nbsp;&nbsp;}<br/>
                            </p>
                        </block>
                    </language_a>
                    <language_b>
                        <block>
                            <p>
                                &nbsp;&nbsp;...<br/>
                                &nbsp;&nbsp;<i>Do a comparation</i><br/>
                                &nbsp;&nbsp;<b>if</b> (a == b)<br/><br/>
                                &nbsp;&nbsp;{<br/>
                                &nbsp;&nbsp;&nbsp;&nbsp;do what you want<br/>
                                &nbsp;&nbsp;}<br/>
                            </p>
                        </block>
                    </language_b>
                </scriptsample>
            </sectionbody>
        </section>
        <p>Some other text</p>
        <section>
            <sectionheader>while</sectionheader>
            <sectionbody>
                <p>Depending on language you use, the sytax will be different:</p>
                <scriptsample>
                    <language_a>
                            <p>
                                &nbsp;&nbsp;...<br/>
                                &nbsp;&nbsp;<i>Do a comparation</i><br/>
                                &nbsp;&nbsp;<b>while</b> (a == b)<br/><br/>
                                &nbsp;&nbsp;{<br/>
                                &nbsp;&nbsp;&nbsp;&nbsp;do what you want<br/>
                                &nbsp;&nbsp;}<br/>
                            </p>
                    </language_a>
                    <language_b>
                            <p>
                                &nbsp;&nbsp;...<br/>
                                &nbsp;&nbsp;<i>Do a comparation</i><br/>
                                &nbsp;&nbsp;<b>while</b> (a == b)<br/><br/>
                                &nbsp;&nbsp;{<br/>
                                &nbsp;&nbsp;&nbsp;&nbsp;do what you want<br/>
                                &nbsp;&nbsp;}<br/>
                            </p>
                    </language_b>
                </scriptsample>
            </sectionbody>
        </section>
    <body>
</book>

(a == b)ここで、language_b 要素のテキストをcompare(a, b)ONLY に置き換えたいと思います。

Altova XMLSpy で XPath を使用してすべてのファイルを見つけることができましたが、ファイルを変更できません。

そのための正規表現を作成しようとしましたが、失敗しました。

ところで、もう 1 つの障害は、メソッド呼び出し ( )abある可能性があることobj.method(args)です。したがって、ここで正規表現を使用するのは本当に難しいですが、それは別のタスクです)

また、XQuery Apply Update 要素機能を実行しようとしました (これも Altova XMLSpy にあります):

for $x in //language_b/*[contains(., 'a == b')] return
replace value of node $x with (
replace($x, 'a == b', 'compare(a, b)')
)

ただし、「language_b」内の子要素が失われます。( などi) nbsp。また、Altova はファイル全体にデフォルトの属性を追加しますが、無駄な要素が多くて悲しいです。

私の前にそのような仕事がなかったとは思いません。

何か提案はありますか?

PS。現在、C# で DOM を使用して何かを作成しようとしています (ただし、知識が不足しているため、時間がかかります)。

4

1 に答える 1