有没有办法检查节点之间是否有文本

is there a way to check if there is text between the nodes

我有以下 2 个不同的 XML 案例。

案例 1

<para><content-style font-style="bold">1/3</content-style> This is text</para>

案例2

<para>This is text <content-style font-style="bold">1/3</content-style></para>

我正在使用如下模板匹配

<xsl:template match="para[content-style[matches(., '(\w+)/(\w+)')]]">

但是根据这场比赛,上述两种情况都得到满足,我只想捕获第一种情况而忽略第二种情况。

请告诉我如何完成此操作。

谢谢

不需要使用matches()。如果规则是content-style元素是否是para的第一个子节点,匹配for

para[node()[position() = 1 and self::content-style]]

假设以下输入文档,其中两种情况都存在:

XML 输入

<root>
    <para><content-style font-style="bold">1/3</content-style>YES</para>
    <para>NO <content-style font-style="bold">1/3</content-style></para>
</root>

XSLT 样式表

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

    <xsl:template match="para[node()[position() = 1 and self::content-style]]">
        <xsl:copy-of select="."/>
    </xsl:template>

    <xsl:template match="text()"/>

</xsl:stylesheet>

XML输出

<?xml version="1.0" encoding="UTF-8"?>
<para>
   <content-style font-style="bold">1/3</content-style>YES</para>