2014-07-09 70 views
2

我有一個XML文檔是這樣的:格式斜體/大膽使用XSLT爲HTML

<bibliography> 
    <element1> 
     <text> 
      Some text and <italic>italic Text</italic> and <bold>bold text</bold> 
     </text> 
    </element1> 
    <element2> 
     <text> 
      Some text and <italic>italic Text</italic> and <bold>bold text</bold> 
     </text> 
    </element2> 
</bibliography> 

這XSL工作,但是沒有格式化<italic><bold>標籤。

<xsl:template match="/"> 
     <html> 
      <head> 
       <title>Bibliographie</title> 
       <style type="text/css"> 
       .entry { 
        font-family: Georgia 
       } 
      </style> 
      </head> 
      <body> 
       <xsl:apply-templates/> 
     </body> 
    </html> 
</xsl:template> 

<xsl:template match="/bibliography/*"> 
    <p> 
     <div class="entry{@type}"> 
    [<xsl:number count="*"/>] 
    <xsl:apply-templates/> 
     </div> 
    </p> 
</xsl:template> 

什麼我要補充讓它格式化<italic><bold>標籤正確的HTML? 我試過用XSL-FO,但似乎我無法將對象導出到HTML,只是爲了PDF。

回答

3

您已經提出了有關輸出xsl-fo的類似問題。主體對於HTML來說是一樣的,只是輸出HTML標籤而不是xsl-fo。

的主要問題,爲什麼你XSLT不工作是因爲你還沒有得到模板匹配要麼大膽斜體

試試這個XSLT

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="html" indent="yes"/> 

    <xsl:template match="bibliography"> 
     <html> 
      <head> 
       <title>Bibliographie</title> 
       <style type="text/css"> 
       .entry { 
        font-family: Georgia 
       } 
      </style> 
      </head> 
      <body> 
       <xsl:apply-templates /> 
      </body> 
     </html> 
    </xsl:template> 

    <xsl:template match="bibliography/*"> 
     <div class="entry{@type}"> 
      [<xsl:number count="*"/>] 
      <xsl:apply-templates/> 
     </div> 
    </xsl:template> 

    <xsl:template match="bibliography/*/*" priority="0"> 
     <p> 
      <xsl:apply-templates/> 
     </p> 
    </xsl:template> 

    <xsl:template match="text"> 
     <xsl:apply-templates/> 
    </xsl:template> 

    <xsl:template match="bold"> 
     <span style="font-weight:bold;"> 
      <xsl:apply-templates/> 
     </span> 
    </xsl:template> 

    <xsl:template match="italic"> 
     <span style="font-style:italic;"> 
      <xsl:apply-templates /> 
     </span> 
    </xsl:template> 
</xsl:stylesheet> 

不使用「優先級「

<xsl:template match="bibliography/*/*" priority="0"> 

這起到了一種」全部捕捉「模式的作用用於匹配沒有特定模板的元素。需要優先考慮確保它不會在匹配「斜體」和「粗體」的模板之前應用。這就是說,如果你有其他元素要以特定的方式進行格式化,比如「作者」,只需爲它們添加一個特定的模板。

+0

不知何故,這不適合我。這是我的XML文件:[鏈接](http://pastebin.com/LLG1RC2w)和我的XSLT:[link](http://pastebin.com/ksJ847rb)它似乎生成HTML正確,但格式是可怕的。這是我的瀏覽器輸出(火狐):[鏈接](http://s14.directupload.net/images/140710/gprtr6ol.png) – Peter

+0

我忘了說,有幾個元素可以包含''標籤。非常遺憾。我必須改變什麼,才能在一個段落中包含以下所有元素的每一個元素,用''標籤表示出來? – Peter

+0

和我的XSD文件:[link](http://pastebin.com/1LUUYsj0) – Peter