【问题标题】:XSLT: Transform entities used in XMLXSLT:转换 XML 中使用的实体
【发布时间】:2015-11-30 05:48:11
【问题描述】:

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

我要转换实体 &ampcopy;

请帮我解决这个问题!

XML 文件:

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

【问题讨论】:

  • 您的答案可以在这里找到吗? stackoverflow.com/questions/6508860/…
  • 我试过但它不起作用,实际上我想将它添加到 xslt 而不是 xml 中!
  • 你尝试了什么?用&amp;#169;替换&amp;copy;,还是在doctype中定义实体?
  • 像这样定义doctype中的实体 ttp://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" rel="nofollow" target="_blank">w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" [ ] >
  • 可能需要&lt;!ENTITY copy "&amp;#169;"&gt;

标签: xml entity-framework xslt stylesheet dtd


【解决方案1】:

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

浏览器将错误显示为未定义的实体。我想使用 xslt 对其进行转换。

如果您的 XML 文档包含像 &amp;copy; 这样的实体,而这些实体的定义在源文档中不可用,那么您就不走运了,因为这会使您的 XML 文档无效。

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

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

<!ENTITY copy "&#169;">

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多