Xml XSLT firefox uri问题
我正在使用xml/xsl,并实现了一个链接。该链接正在引用另一个xml文件。使用firefox浏览器,我无法打开链接。 我一直在网上搜索,发现你必须在链接中添加Xml XSLT firefox uri问题,xml,firefox,xslt,Xml,Firefox,Xslt,我正在使用xml/xsl,并实现了一个链接。该链接正在引用另一个xml文件。使用firefox浏览器,我无法打开链接。 我一直在网上搜索,发现你必须在链接中添加文件:// 这对于绝对路径非常有效,但对于相对路径,它无法解析链接 示例代码: 文件夹D中的file1.xml:/try <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="file:///D:/try/lay
文件://
这对于绝对路径非常有效,但对于相对路径,它无法解析链接
示例代码:
文件夹D中的file1.xml:/try
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="file:///D:/try/layout.xsl"?>
<s1>
<s>
<uri>D:/tt.xml</uri>
</s>
</s1>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/1999/xhtml">
<xsl:output method="html" indent="yes" encoding="UTF-8"/>
<xsl:template match="/">
<html>
<xsl:element name="body">
<xsl:apply-templates select="s1"/>
</xsl:element>
</html>
</xsl:template>
<xsl:template match="s1">
<xsl:apply-templates select="s"/>
</xsl:template>
<xsl:template match="s">
<table>
<tr><th>Uri: </th><td>
<xsl:element name="a">
<xsl:attribute name="href"><xsl:value-of select="uri"/></xsl:attribute>
<div><xsl:value-of select="uri"/></div>
</xsl:element>
</td></tr>
</table>
</xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<s1>
<s>
<h1>HELLO</h1>
</s>
</s1>
D:/tt.xml
文件夹D中的layout.xsl:/try
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="file:///D:/try/layout.xsl"?>
<s1>
<s>
<uri>D:/tt.xml</uri>
</s>
</s1>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/1999/xhtml">
<xsl:output method="html" indent="yes" encoding="UTF-8"/>
<xsl:template match="/">
<html>
<xsl:element name="body">
<xsl:apply-templates select="s1"/>
</xsl:element>
</html>
</xsl:template>
<xsl:template match="s1">
<xsl:apply-templates select="s"/>
</xsl:template>
<xsl:template match="s">
<table>
<tr><th>Uri: </th><td>
<xsl:element name="a">
<xsl:attribute name="href"><xsl:value-of select="uri"/></xsl:attribute>
<div><xsl:value-of select="uri"/></div>
</xsl:element>
</td></tr>
</table>
</xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<s1>
<s>
<h1>HELLO</h1>
</s>
</s1>
Uri:
文件夹D中的tt.xml:/try
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="file:///D:/try/layout.xsl"?>
<s1>
<s>
<uri>D:/tt.xml</uri>
</s>
</s1>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/1999/xhtml">
<xsl:output method="html" indent="yes" encoding="UTF-8"/>
<xsl:template match="/">
<html>
<xsl:element name="body">
<xsl:apply-templates select="s1"/>
</xsl:element>
</html>
</xsl:template>
<xsl:template match="s1">
<xsl:apply-templates select="s"/>
</xsl:template>
<xsl:template match="s">
<table>
<tr><th>Uri: </th><td>
<xsl:element name="a">
<xsl:attribute name="href"><xsl:value-of select="uri"/></xsl:attribute>
<div><xsl:value-of select="uri"/></div>
</xsl:element>
</td></tr>
</table>
</xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<s1>
<s>
<h1>HELLO</h1>
</s>
</s1>
你好
如果将file1.xml中的uriD:/tt.xml
替换为相对路径tt.xml
,则会正常工作
我想要一个将uri转换为可接受格式的函数。
问候,,
Marky与此同时,我得到了这个:
<xsl:if test="regexp:match(uri, '^.[^:].*', 'g')">
<xsl:element name="a">
<xsl:attribute name="href"><xsl:value-of select="uri"/></xsl:attribute>
<div><xsl:value-of select="uri"/></div>
</xsl:element>
</xsl:if>
<xsl:if test="regexp:match(uri, '.*:.*', 'g')">
<xsl:element name="a">
<xsl:attribute name="href"><xsl:value-of select="concat('file://',uri)"/>
</xsl:attribute>
<div><xsl:value-of select="uri"/></div>
</xsl:element>
</xsl:if>
但我认为这不是最好的解决办法。我不明白问题出在哪里。考虑向测试用例发布一些代码或URL来演示问题。代码>解析uri不是XSLT 1.0的一部分,XSLT 1.0是当前浏览器支持的XSLT版本,因此不要期望该功能在Firefox或其他浏览器中工作。您能举一个应该工作的XML示例吗,但是不起作用?那么您正在用XSLT将XML转换为HTML,而在HTML的相关链接中,Firefox不起作用?在这种情况下,Firefox的错误控制台会说什么?当您使用带有相对URL的HTML文档时,Firefox的行为有什么不同吗?你能在我们可以访问问题的文档上发布一个URL吗?相对URL有效,但对于绝对URL,如果链接类似于“d:/bla.txt”,则会显示“未知协议d”。我将准备一个完整的例子。