XSLT:将模板应用于不包含特定子节点的节点

发布于 2024-10-11 08:51:35 字数 739 浏览 4 评论 0原文

我正在使用 docbook 并使用一个模板,该模板将零宽度字符插入到我的表条目中。这很好,但如果表条目包含 元素,我需要应用模板NOT。那么,有没有一种方法可以将模板应用于所有不包含

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:d="http://docbook.org/ns/docbook">
<xsl:import href="urn:docbkx:stylesheet"/>

...

<xsl:template match="text()[parent::d:entry]">
    <xsl:call-template name="intersperse-with-zero-spaces">
        <xsl:with-param name="str" select="."/>
    </xsl:call-template>
</xsl:template>

...

I'm using docbook and am using a template which inserts zero-width characters into my table entries. Which is good, but I need to have the template NOT applied if the table entry includes a <para> element. So, is there a way I can apply the template to all <entry> that do not contain a <para>?

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:d="http://docbook.org/ns/docbook">
<xsl:import href="urn:docbkx:stylesheet"/>

...

<xsl:template match="text()[parent::d:entry]">
    <xsl:call-template name="intersperse-with-zero-spaces">
        <xsl:with-param name="str" select="."/>
    </xsl:call-template>
</xsl:template>

...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

安静 2024-10-18 08:51:35

匹配不包含任何 paraentry 元素> 儿童。 匹配不包含任何 para 的任何 entry 元素后代。

或者对于您发布的模板,您可以使用

<xsl:template match="d:entry[not(d:para)]"> matches any entry elements not having any para children. <xsl:template match="d:entry[not(descendant::d:para)]"> matches any entry elements not having any para descendants.

Or for your posted template you could use <xsl:template match="text()[parent::d:entry[not(d:para)]]">.

玩物 2024-10-18 08:51:35
<xsl:template match="text()[parent::d:entry[not(.//d:para)]]">
    <xsl:call-template name="intersperse-with-zero-spaces">
        <xsl:with-param name="str" select="."/>
    </xsl:call-template>
</xsl:template>
<xsl:template match="text()[parent::d:entry[not(.//d:para)]]">
    <xsl:call-template name="intersperse-with-zero-spaces">
        <xsl:with-param name="str" select="."/>
    </xsl:call-template>
</xsl:template>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文