使用XSLT排序时忽略实体

时间:2015-08-02 17:56:40

标签: xml xslt

我正在尝试对名称列表的输出进行排序。但我们在数据中添加了“& lt”实体,以识别需要稍后添加到数据中的斜体。

有没有办法告诉XSLT忽略实体并只对字母和数字进行排序?我们真正需要忽略的唯一事情是“& lt”实体本身。

有什么想法吗?

这是我正在使用的实际表达式(如果您需要整个XSL,请告诉我):

 <xsl:template match="index">
 <index><xsl:for-each select="indexitem">
 <xsl:sort select="name"/>
 <indexitem>
 <xsl:apply-templates select="name"/> 
 <xsl:apply-templates select="scott"/>
 <xsl:apply-templates select="searchterm"/>
 </indexitem></xsl:for-each></index>
 </xsl:template>

示例XML:

 <?xml version="1.0" encoding="utf-8"?><index>
 <indexitem><name>&lt;Interphil&gt; 76</name><scott>(1632)</scott>;  <searchterm>Interphil 76</searchterm></indexitem>
 <indexitem><name>Baldwin, James</name><scott>(3871)</scott>; <searchterm>James Baldwin</searchterm></indexitem>
 <indexitem><name>Benny, Jack</name><scott>(2564)</scott>; <searchterm>Jack Benny</searchterm></indexitem>
 </index>

1 个答案:

答案 0 :(得分:1)

您可以使用translate功能删除&lt;实体

,从而达到您想要的效果
<xsl:for-each select="indexitem">
    <xsl:sort select="translate(name, '&lt;', '')"/>

请注意,这将删除字符串中出现的实体,而不仅仅是开头。