バックグラウンド
ドキュメントをOpenOfficeからDocBook形式に変換します。
問題
ドキュメントの一部には、次のものが含まれます。
<ul><li><ul><li><ul><li><p>...</p></li></ul></li></ul></li></ul>
ドキュメントの他の部分には次のものが含まれます。
<ul><li><p>...</p></li></ul>
以下を使用して、最も内側のul
タグだけを一致させようとしました。
<xsl:template match="xhtml:ul[not(child::xhtml:li/child::xhtml:ul)]">
...
</xsl:template>
しかし、これは一致しません。次の式:
<xsl:template match="xhtml:ul">
期待どおりに作成されます:
<itemizedlist>
<itemizedlist>
<itemizedlist>
...
</itemizedlist>
</itemizedlist>
</itemizedlist>
必要な出力
ul
ネストに関係なく、必要な出力形式は次のとおりです。
<itemizedlist>
...
</itemizedlist>
質問
最も内側の子ul
ノードを照合するための正しい構文は何ですか?
アイデア
これを解決する方法はいくつかあります。
- 元のドキュメントを検索/置換します(インスタンスは最大20個のみです)。
xsl:test
ノード内で使用してli
、子ノードがであるかどうかを確認しますul
。
どのXPath式が機能しますか?例えば:
<xsl:template match="xhtml:ul[not(grandchild::xhtml:ul)]">
ありがとうございました!