XSL:import和xsl:包括在样式表中没有在谷歌Chrome浏览器(xsl:import an

2019-09-01 02:24发布

我建立一个使用XSL样式表一个网站,和我建立了有用的功能一个小型图书馆的一个实用程序样式表,其他表导入使用

<xsl:import href="util" />

在每一个片的顶部。 这并不是谷歌浏览器的工作,因为它不支持XSL:进口呢。 可有人请写信给我,我可以在服务器端将读取的XSL运行一个样式表:进口线和其发送到客户端之前导入相关的样式表?

Answer 1:

我会做这样的事情;下面,将结合样式服务器端,它就会到Chrome之前。 第一步是在地方,因为xsl:import是不一样的与进口替代样式的所有地方。

  1. 更换所有xsl:importxsl:include (进口优先权并不适用于xsl:include ,所以你可能需要改变你的代码,并使用优先级,而不是)
  2. 使用下面的服务器端样式食用前将它们合并成一个
  3. 等待几个星期,(可以是几个月)。 我们为您的浏览器修复和我目前正在与开发者团队合作,包括固定到构建。
<xsl:template match="node()">
    <xsl:copy>
       <xsl:copy-of select="@*"/>
       <xsl:apply-templates select="node()"/>
    </xsl:copy>
</xsl:template>

<xsl:template match="xsl:include">
   <!-- you'll probably want to be a bit more restrictive here -->
   <xsl:copy-of select="document(@href)/xsl:stylesheet/*" />
</xsl:template>

更新:刚一说明:在Chrome有错误出现在Safari浏览器了。



Answer 2:

你可以用libxml2和模块的libxslt做在Python ...不是为你做你所有的工作,但开始是这样的:

import libxml2, libxslt

styledoc = libxml2.parseFile("page.xsl")
style = libxslt.parseStylesheetDoc(styledoc)
doc = libxml2.parseFile("somefile.xml")
result = style.applyStylesheet(doc, None)

然后,只需服务于东西退了出去。



Answer 3:

尝试在PHP中是这样的:

<?php
$sXml  = "<xml>";
$sXml .= "<testtag>hello tester</testtag>";
$sXml .= "</xml>";

# LOAD XML FILE
$XML = new DOMDocument();
$XML->loadXML( $sXml );

# START XSLT
$xslt = new XSLTProcessor();
$XSL = new DOMDocument();
$XSL->load( 'xsl/index.xsl', LIBXML_NOCDATA);
$xslt->importStylesheet( $XSL );
#PRINT
print $xslt->transformToXML( $XML );
?>



Answer 4:

http://www.w3.org/TR/xslt#literal-result-element展示了如何编写一个XSL样式表,其将现有的XSL样式表与一个XSL样式表时,解决重复,XSL-命名空间问题<xsl:import>开展扩大。

要小心,虽然,有关的区别<xsl:import><xsl:include>



文章来源: xsl:import and xsl:include in stylesheets don't work on Google Chrome