如何强制 XSLT 不关闭类似 <source/>

问题描述 投票:0回答:1

所以我使用 XSLT 从 XML 中生成 HTML,在我的代码中我有这样的内容:

<input/>
但 XSLT 将其转换为 HTML,如
<input></input>
,因此 W3 验证器向我显示诸如“杂散结束标记输入”之类的错误。

我尝试过这样做

<xsl:output method="xhtml" indent="yes" />
,但之后我的页面正在做跑酷,并且看起来根本不正确,但至少这些输入很好,并且没有关闭,正如我希望的那样。

所以我不想保持这些输入正常,并且不关闭,但阻止我的页面进行跑酷。据我了解,

<xsl:output method="xhtml" indent="yes" />
- 使所有标签不会自行关闭。我只想将此应用于某些特定标签,例如
<input/>
<img/>

更新:我只是解决了输入问题。在我的一些 xslt 模板中,我有

<xsl:stylesheet version="1.0" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
。因此,当我注意到我的一些输入表现良好,并且其中一些具有闭合标签时,我确实删除了
xmlns="http://www.w3.org/1999/xhtml" 
部分,因此我的输入变得很好,只有
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

但我仍然对

<source>
标签有同样的问题。 我的代码示例是:

<picture>
  <source media="(min-width:768px)" srcset="{$template-resources}images/banner.png"/>
  <source media="(min-width:420px)" srcset="{$template-resources}images/banner768.png"/>
  <img src="{$template-resources}images/banner420.png" style="width:auto;" alt="Скидка 20% на книги в печати" itemprop="contentUrl"/>
</picture>

所以,我的

<img>
标签看起来不错,并且没有结束标签,就像我想要的那样。但是
<source>
标签在 html 输出中仍然有结束标签,这给我带来了 w3 验证器错误,例如:“Stray end tag source”。

xslt-1.0
1个回答
0
投票

我对

<source>
标签仍然有同样的问题

XSLT 1.0 规范指出:

html
输出方法不应输出空元素的结束标记。对于 HTML 4.0,空元素是
area, base, basefont, br, col, frame, hr, img, input, isindex, link, meta
param

显然

source
元素是后来添加的 - 所以如果您想看到它包含在内,您将需要升级到更新的处理器或尝试破解您的样式表以生成它不认为是有效输出的内容(不是推荐,但经过一些努力应该是可能的)。

© www.soinside.com 2019 - 2024. All rights reserved.