在Analyze字符串中使用模板

时间:2015-01-28 07:45:29

标签: regex xslt-2.0

我有以下的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。当我尝试它时会抛出一个错误。我想要它如下。
  3. if(para)

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

    否则

    xsl:apply-templates
    

    Working Example

    由于

1 个答案:

答案 0 :(得分:1)

如果要在apply-templates内使用analyze-string,则需要将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>