我正在尝试对名称列表的输出进行排序。但我们在数据中添加了“& 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><Interphil> 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>
答案 0 :(得分:1)
您可以使用translate
功能删除<
实体
<xsl:for-each select="indexitem">
<xsl:sort select="translate(name, '<', '')"/>
请注意,这将删除字符串中出现的实体,而不仅仅是开头。