将文档从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
节点的正确语法是什么?
有几种方法可以解决这个问题:
xsl:test
节点中使用li
查看子节点是否为ul
。什么XPath表达式可以工作?例如:
<xsl:template match="xhtml:ul[not(grandchild::xhtml:ul)]">
谢谢!
答案 0 :(得分:0)
<xsl:template match="xhtml:ul[not(descendant::xhtml:ul)]">
<itemizedlist><xsl:apply-templates /></itemizedlist>
</xsl:template>