由于特殊字符,包含(@ title,'®')看起来不起作用

时间:2013-11-13 07:35:30

标签: xml xslt

我有类似下面的XML节点 -

<url title="Take the STARPLUS® for entertaiment" depth="2" is_external="False"/>

现在在XSLT中编写类似下面的代码 -

<xsl:when test="contains(@title,'®')">

<!-- Make registration mark super scripted-->
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="@title"/>
</xsl:otherwise>     
</xsl:choose>

此处contains(@title,'®')因特殊字符而无效。

有人可以帮我写这个XSLT检查。

注意 - 我无法在XML中进行编码或转义,因为它已经在系统中使用。

由于

1 个答案:

答案 0 :(得分:0)

该测试应该可以正常工作。您可以尝试使用实体引用:

contains(@title,'&#174;')

以下是两个正确匹配的示例。

XML输入

<url title="Take the STARPLUS® for entertaiment" depth="2" is_external="False"/>

XSLT 1.0

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output indent="yes"/>
    <xsl:strip-space elements="*"/>

    <xsl:template match="url">
        <xsl:if test="contains(@title,'®')">
            <has_reg><xsl:value-of select="@title"/></has_reg>
        </xsl:if>
        <xsl:if test="contains(@title,'&#174;')">
            <has_reg><xsl:value-of select="@title"/></has_reg>
        </xsl:if>
    </xsl:template>

</xsl:stylesheet>

<强>输出

<has_reg>Take the STARPLUS® for entertaiment</has_reg>
<has_reg>Take the STARPLUS® for entertaiment</has_reg>