次のxmlのようなものがあります(これは実際にはデータセットがはるかに大きいというわけではありません):
<people>
<!-- People start here -->
<person>
<name>Sara</name>
<age>27</age>
</person>
<person>
<name>Carl</name>
<age>25</age>
</person>
<!-- Nick is the father -->
<person>
<name>Nick</name>
<age>52</age>
</person>
</people>
すべての人に行を追加する XSL を書きました。人が次のようになっていると想像してください。
<person>
<name>Sara</name>
<age>27</age>
<gender>female</gender>
</person>
ただし、コメントを保持したいのですが、終了ノードの後にコメントがあるものとないものがあります。私は多くの角度を試しましたが、前のノードがコメントであるかどうかを確認する方法がわかりません。次のいずれも機能していません。
- previous-sibling::comment()[1] (コメントが 1 つある場合は、常にこれを取得します)
- previous-sibling::* (コメントを取得しません)
- 先行::* (コメントを取得しません)
前のノードを見て、それがタイプケースであるかどうかを確認する必要があります。そうでない場合は、コメントを取得して吐き出します。たぶん、ドキュメント全体でノードの位置を調べて (どのように?)、その前のノードをそのようにチェックする必要がありますか? これが効率的である必要はありません。
ありがとう