有没有办法检查节点之间是否有文本
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>
我有以下 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>