如何在XML中的任何位置查找特定的文本子字符串,并使用XSLT选择此文本

时间:2014-01-23 10:04:42

标签: html xml xslt xpath xquery

我需要使用XPATH / XSLT找到并选择一个特定的文本子串(如果可能的话) - 在这种情况下,不间断空格“&#xa0”的实体代码然后在我的HTML输出中突出显示CSS。

我不是在特定元素节点内搜索,我需要从我的文档的根节点进行搜索,并在任何出现的地方找到该实体。我不知道这会出现在我的XML中,我只知道我正在寻找的实体代码。

以下是我的文档的一部分,其中“&#xa0”出现在文本中:

<row rowsep="1">
<entry align="left" colname="col1" colsep="1">
<para>N/A&#xa0;=&#xa0;not applicable/not generally used, A&#xa0;=&#xa0;applicable </para>
</entry>
</row>

我正在使用XSLT 2.0。

1 个答案:

答案 0 :(得分:2)

使用XSLT 2.0,您可以在所有analyze-string个节点上使用text(),例如

<xsl:template match="text()">
  <xsl:analyze-string select="." regex="&#160;">
    <xsl:matching-substring>
      <span class="highlight"><xsl:value-of select="."/></span>
    </xsl:matching-substring>
    <xsl:non-matching-substring>
      <xsl:value-of select="."/>
    </xsl:non-matching-substring>
  </xsl:analyze-string>
</xsl:template>

然后,您需要设置其他模板,将剩余的元素转换为HTML,其中包含CSS或链接到某些定义类似

的CSS文档

span.highlight { color: red; }

我的视图中需要span或类似的包装元素,因为CSS不允许您在文本节点中设置单个字母或单词的样式。