XSLT:转换XML中使用的实体

时间:2015-09-04 06:49:37

标签: xml entity-framework xslt stylesheet dtd

  

我的XML文件中有实体,并使用样式表对其进行转换,但无法转换xml文件中使用的实体。浏览器将错误显示为未定义的实体。我想用xslt转换它。

     

我想转换实体& copy;

     

请帮助我!

XML文件:

<article>
<main>
<content>&copy; by StactOverFlow</content>
</main>
</article>

1 个答案:

答案 0 :(得分:2)

  

我试过但它不起作用,实际上我想在xslt中添加它而不是在xml中!

  

浏览器将错误显示为未定义的实体。我想用xslt转换它。

如果您的XML文档包含&copy;之类的实体,并且源文档中没有这些实体的定义,那么您就不走运了,因为这会使您的XML文档无效。

在DTD(内联或引用)中无需声明即可使用的唯一命名实体是&lt;&gt&amp;&apos;和{{1 }}。任何其他实体必须是数字实体引用,如&quot;,或者必须在DTD部分中定义。

XSLT(无论是在浏览器中使用还是离线)在拒绝XML输入文档时都是正确的。如果要防止这种情况,则需要使用另一个工具修复无效的XML,该工具将文档处理为XML(因为它不是),而是作为文本处理。您只需使用此预处理添加DTD定义,即在DTD中添加如下行:

&#169;

或搜索命名实体并将它们替换为各自的Unicode字符或数字实体(从XML角度来看,两者之间没有区别,只要编码正确)。