我有一個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作爲我發現做這種事很容易,詳情很長,嘆了口氣。 –