在分析字符串中应用模板

Apply-templates with in Analyze string

我有以下XML.

<?xml version="1.0" encoding="UTF-8"?>
 <para align="center">
        <content-style font-style="bold">A.1 This is the first text</content-style> (This is second text)
      </para>

以下是我的 2 个问题。

  1. 这里我已经声明了一个匹配 content-style 的正则表达式,但是当我 运行 这个第二个被捕获在它应该是 div class="para" 的地方,但是在输出中我得到 <div class="para align-center">。请让我知道哪里出错了。
  2. 有什么方法可以让我在比赛中apply-templates。当我尝试时,它会抛出一个错误。我想要像下面这样的。

如果(段)

xsl:apply-templates select child::node()[not(self::text)]

其他

xsl:apply-templates

Working Example

谢谢

如果你想在 analyze-string 中使用 apply-templates 那么你需要将 analyze-string 之外的上下文节点存储在变量 <xsl:variable name="context-node" select="."/> 中,然后你可以使用 <xsl:apply-templates select="$context-node/node()"/> 例如处理子节点。

我不确定你是否需要这种方法,我想知道你是否不能简单地在模式中使用 matches 函数,例如<xsl:template match="para[content-style[matches(., '(\w+)\.(\w+)')]]">...</xsl:template>.