【问题标题】:XSLT wont allow me to use self-closing img and br tagsXSLT 不允许我使用自动关闭的 img 和 br 标签
【发布时间】:2009-10-13 14:55:19
【问题描述】:

我有一些在 Sitecore 6 CMS 中呈现的 XSLT,但我不认为这个问题是特定于产品的。

如果我有一个自动关闭的 img 或 br 标签,像这样:

<br />
<img src="your.example.com" />

结果输出将是:

<br>
<img src="your.example.com">

XSLT 文件的输出方法是 HTML。它应该是XML吗?我猜自闭标签不是有效的 HTML,但是将其设置为 XML 会导致我的输出出现问题吗?

【问题讨论】:

    标签: html xml xslt xhtml


    【解决方案1】:

    这很好。您选择 HTML,并且在 HTML 中允许使用 &lt;br&gt; 标签。选择 XML,然后你就会得到你想要的。

    是的,如果你想要自闭标签,你应该使用 XML 方法。我猜你想要 XHTML 输出,而 XHTML 是一个 XML 文档。

    【讨论】:

    • 注意,如果你的 xsl 中有这个:,它将被 替换为浏览器不接受的...
    • Since XSLT 2.0 您还可以指定 XHTML 作为输出方法:&lt;xsl:output method="xhtml" /&gt;
    • Sitecore 6.5.0 仍然不支持方法 xhtml。
    【解决方案2】:

    当你让自闭标签工作时,你可能会遇到一些奇怪的错误。以下是一些示例:

    几年前在 IE 中,我的整个渲染页面都是空白的,但查看源代码显示了完整的 HTML。问题是一个自闭合的标题标签 (&lt;title/&gt;)。

    此外,自关闭脚本标签 (&lt;script src="code.js"/&gt;) 会导致 JavaScript 文件无法加载,因此在 XSLT 内部,您可能需要在脚本标签内添加一些文本以防止其自关闭并使其工作。

    <script src="code.js>//</script>
    

    【讨论】:

    • AFAIR this(无文本):&lt;script src="code.js&gt;&lt;/script&gt; 也可以,但实际上,这:&lt;script src="code.js"/&gt; 在 IE 中会出现问题。
    • 好点,需要文本的是 xslt 进程,而不是浏览器。我更新了答案以反映这一点。
    • 空的
      标签也会导致问题。
    【解决方案3】:

    在样式表的顶部,您可以指定使用 XML 作为输出格式,也可以设置特定的 DOCTYPE,例如:

    <xsl:output method="xml" 
        media-type="text/html" 
        doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
        doctype-system="DTD/xhtml1-strict.dtd"
        cdata-section-elements="script style"
        indent="yes"
        encoding="UTF-8"/>
    

    【讨论】:

      猜你喜欢
      • 2012-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-12
      相关资源
      最近更新 更多