Html XSL样式表使Firefox无法识别DTD定义的ID

Html XSL样式表使Firefox无法识别DTD定义的ID,html,xslt,Html,Xslt,我想要一个客户端XSL转换文档,其中的元素targettable(jumptable to)by#foo(URL片段)。问题是,只要我附加了最简单的XSL样式表,Firefox就会停止滚动到元素。下面是简单的代码: test.xml: <?xml version='1.0' encoding='UTF-8'?> <?xml-stylesheet type='text/xsl' href='test.xsl'?> <!DOCTYPE foo [<!ATTLIST

我想要一个客户端XSL转换文档,其中的元素targettable(jumptable to)by#foo(URL片段)。问题是,只要我附加了最简单的XSL样式表,Firefox就会停止滚动到元素。下面是简单的代码:

test.xml:

<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet type='text/xsl' href='test.xsl'?>
<!DOCTYPE foo [<!ATTLIST bar id ID #REQUIRED>]>
<foo xmlns:html='http://www.w3.org/1999/xhtml' xml:lang='en-GB'>
<html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/>
<bar id='baz'>Baf.</bar>
</foo>

Baf。
test.xsl:

<xsl:stylesheet version='1.0' xmlns:html='http://www.w3.org/1999/xhtml' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:template match='/'>
<xsl:copy-of select='.'/>
</xsl:template>
</xsl:stylesheet>

只要我取消对样式表行的注释,/test.xml#baz就什么也不做。好像转换不知何故丢失了一些关于元素标识的数据


有什么想法吗?谢谢。

XSLT/XPath数据模型不包含任何DTD,因此XSLT创建的结果树是没有DTD的输入的副本,因此结果树中没有任何
ID
属性的定义,Firefox无法确定属性
引用的元素


通常,如果在浏览器中使用客户端XSLT,目标格式是(X)HTML或SVG或两者的混合,其中
id
属性由浏览器实现而不需要DTD。如果您想转换为浏览器未知的结果格式,那么我认为在Firefox/Mozilla中没有一种方法可以在结果树中使用DTD。我不确定他们是否实现了
xml:id
支持,这样您就可以使用它而不是定义自己的
id
属性了。

Martin Honnen提到XHTML导致了一个实验,在实验中我发现将目标元素的名称空间设置为XHTML的名称空间xmlns='',就可以达到目的。它看起来不是很干净,但似乎不像将整个doctype设置为XHTML那样严重。因此,text.xml现在是:

<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet type='text/xsl' href='test.xsl'?>
<foo xmlns:html='http://www.w3.org/1999/xhtml' xml:lang='en-GB'>
<html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/><html:br/>
<html:bar id='baz'>Baf.</html:bar>
</foo>

Baf。
我可能也找到了相关信息


谢谢大家。

我在使用IE explorer时也遇到过同样的问题(不要问!)。我很想看看是否有人能解释并帮助我们纠正这一点。祝你好运