1

有没有办法通过将节点的特定部分转换为字符串来包装节点的特定部分而不会丢失子元素?

这就是我所拥有的:

<root>
    <caption>Figure 3.1 Description of an Image, sometimes with <inline>Bold</inline> or <inline>Italic</inline> emphases.</caption>
</root>

...这就是我需要的:

<root>
    <caption><inline>Figure 3.1</inline>Description of an Image, sometimes with <inline>Bold</inline> or <inline>Italic</inline> emphases.</caption>
</root>

我坚持使用正则表达式^Figure\s[0-9]+.[0-9]+来捕捉不同的变化(例如图 11.10)并尝试了几个小时来解决问题,但如果不删除以下内容就无法做到<inline>......这甚至可能吗?

我正在使用 XSLT 2.0!

谢谢!

4

1 回答 1

3

为文本节点编写模板

<xsl:template match="caption/text()">
  <xsl:analyze-string select="." regex="^Figure\s[0-9]+\.[0-9]+">
    <xsl:matching-substring>
      <inline><xsl:value-of select="."/></inline>
    </xsl:matching-substring>
    <xsl:non-matching-substring>
      <xsl:value-of select="."/>
    </xsl:non-matching-substring>
  </xsl:analyze-string>
</xsl:template>

当然,您从身份转换模板开始样式表:

<xsl:template match="@* | node()">
  <xsl:copy>
    <xsl:apply-templates select="@* | node()"/>
  </xsl:copy>
</xsl:template>
于 2013-10-31T14:22:51.757 回答