使用“&”和“®”使用XSLT解析XML但仍然出现错误

时间:2014-08-06 06:27:07

标签: xml xslt-2.0

我想从字符串中解码HTML标记并使用:

disable-output-escaping="yes"

直到字符串包含®(意思是®)。

然后我发现可能的解决方案是用®替换®;但它没有用。

我正在使用此代码

   <xsl:if test="$ShortDescription !=''">
          <shortdescription><xsl:value-of  select="replace($ShortDescription,'&reg;','&#174;')"  disable-output-escaping="yes"/></shortdescription>
   </xsl:if>

给我错误的XSLT文件如下所示:

HTTP Status 500 - {msg=getTransformer fails in getContentType,trace=java.lang.RuntimeException: getTransformer fails in getContentType at 

当我没有使用替换功能然后它的给出错误看起来像: XML解析错误:

处的未定义实体
<shortdescription>Wear some adventure with the same hat Indiana Jones&reg; wears in his movies.</shortdescription>

1 个答案:

答案 0 :(得分:1)

如果输入文件包含实体引用&reg;并且不包含此实体的实体定义,那么它不是格式良好的XML,这意味着您无法使用XSLT处理它。可能的解决方案包括:

  • 通过包含适当的DTD
  • 添加此实体的定义
  • 在解析之前使用非XML技术将&reg;替换为&#174;,例如SED / AWK / Perl的
  • 使用HTML解析器而不是XML解析器,例如validator.nu。