我有一个XSL样式表,我需要使用它,因为它具有很难重新创建的东西。而且我也无法编辑它。所以我使用<xsl:import>
来导入XSL样式表,然后我重写了一些模板。但是,一个有我难住了:重写XSL调用模板
<xsl:template match="mscript">
<html>
<!-- head -->
<head>
<!-- ... other stuff not important ... -->
<xsl:call-template name="stylesheet"/>
</head>
<body>
<!-- ... more stuff ... -->
和stylesheet
模板,坚持在<style type='text/css'>...</style>
标记,主要是有用的,开始与这个愚蠢的废话:
<xsl:template name="stylesheet">
<style type="text/css">
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,
a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,
small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,
form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td
{margin:0;padding:0;border:0;outline:0;font-size:100%;
vertical-align:baseline;background:transparent}
哎呀!令我恶心。
我可以在我的根XSL文件中完全覆盖样式表,但是我真正想做的只是将这一个CSS规则取消。
有没有办法做到这一点?这里有一种想什么,我做的事:
<xsl:template name="stylesheet">
<xsl:call-template name="imported_stylesheet" />
<style type="text/css">
<!-- nullify the boneheaded nonsense -->
h1,h2,h3,h4,h5,h6,p,blockquote,pre,
a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,
small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,
form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td
{margin: default; padding:default;border:default;outline:default;font-size:default;
vertical-align:default;background:default}
</style>
</xsl:template>
但default
不是一个CSS功能,我不知道如何调用导入的样式表,因为当我重写stylesheet
模板,其以前价值消失。
好的答案。一些额外的信息:如果你重写了一个命名模板,那么很遗憾没有办法调用原来的(直到XSLT 3.0!)。这可能是在执行原始样式表之前运行转换的情况。 –
我正在处理现成的糟糕的HTML报告生成框架。正确的做法是让我放弃整个该死的事情,但我现在无法花时间去创建替代品:-(当我得到时间时,我可能会使用Python + Markdown作为我发现做这种事很容易,详情很长,叹了口气。 –