2012-10-26 73 views
1

我仍然在學習如何使用XML和XSL創建HTML輸出文件,並且由於使用了stackoverflow而得到了很大改進。在HTML文件中鏈接XML和XSLT文件

我有一個自動生成的XML文件,但我無法告訴XML文件每次創建新XML時XSLT文件在哪裏。
有沒有辦法創建一個HTML文件,當用戶打開它時,HTML將對XML和XSLT「href」並將其輸出爲預期的HTML結果,與CSS或Javascript包含在一起的方式相同HTML。

謝謝 羅賓

這是當它從我們使用一個程序生成的XML文件...

<Root> 
<Ticket> 
<TicketStart Date="2012-10-22" /> 
<Clubcard Opcode="96" Function="27" CardAcc="1" QualSpendInfo="0" SchemeNo="40" CardNo="1042540000026" PointsToDate="0" RedemptionValue="0" CustomerUpdateDate="000000" QualSpent="0" Date="2012-10-22" /> 
<ClubcardPoints Opcode="96" Function="28" SchemeNo="40" PromNo="0" CardNo="1042540000026" QualSpend="30005" PointSpend="0" Points="6" BonusPoints="0" PromCount="0" Date="2012-10-22" /> 
<Clubcard Opcode="96" Function="27" CardAcc="1" QualSpendInfo="1" SchemeNo="40" CardNo="1042540000026" PointsToDate="0" RedemptionValue="0" CustomerUpdateDate="000000" QualSpent="30005" Date="2012-10-22" /> 
<TicketEnd Date="2012-10-22" /> 
</Ticket> 
<Ticket> 
<TicketStart Date="2012-10-22" /> 
<TicketEnd Date="2012-10-22" /> 
</Ticket> 
<Events> 
</Events> 
<Ticket> 
<TicketStart Date="2012-10-22" /> 
<Clubcard Opcode="96" Function="27" CardAcc="1" QualSpendInfo="0" SchemeNo="40" CardNo="1042540000057" PointsToDate="0" RedemptionValue="0" CustomerUpdateDate="000000" QualSpent="0" Date="2012-10-22" /> 
<ClubcardPoints Opcode="96" Function="28" SchemeNo="40" PromNo="0" CardNo="1042540000057" QualSpend="18025" PointSpend="0" Points="3" BonusPoints="0" PromCount="0" Date="2012-10-22" /> 
<Clubcard Opcode="96" Function="27" CardAcc="1" QualSpendInfo="1" SchemeNo="40" CardNo="1042540000057" PointsToDate="0" RedemptionValue="0" CustomerUpdateDate="000000" QualSpent="18025" Date="2012-10-22" /> 
<TicketEnd Date="2012-10-22" /> 
</Ticket> 
<Events> 
</Events> 
</Root> 

`

,目前我已經把這個在XML文件的開始

​​

XSL文件看起來像th是...

<?xml version="1.0"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="html"/> 
    <xsl:template match="/"> 
    <html> 
     <head> 
    <title>StoreLine Loyalty Sales</title> 
     </head> 
    <body> 
     <br/> 
     <br/> 
     <br/> 
     <b>Loyal Customers</b> 
     <br/> 
     <br/> 
    <table width="100%" border="3"> 
     <THEAD> 
     <TR bgcolor="RGB(0, 204, 51)"> 
     <TD width="25%"> 
     <font color="white"><B>Account Number</B></font> 
     </TD> 
     <TD width="25%"> 
     <font color="white"><B>Points</B></font> 
     </TD> 
     <TD width="25%"> 
     <font color="white"><B>Date</B></font> 
     </TD> 
     <TD width="25%"> 
     <font color="white"><B>Qualified Spent</B></font> 
     </TD> 
     </TR> 
     </THEAD> 
    <TBODY> 
    <xsl:for-each select="Root/Ticket/ClubcardPoints"> 
     <TR> 
     <TD width="25%"><xsl:value-of select="@CardNo" /></TD> 
     <TD width="25%"><xsl:value-of select="@Points" /></TD> 
     <TD width="25%"><xsl:value-of select="@Date" /></TD> 
     <TD width="25%"><xsl:value-of select="format-number(@QualSpend div 100,'&#x52;#.##')" /></TD> 
    </TR> 
    </xsl:for-each> 
    </TBODY> 
    </table> 
    </body> 
</html> 
</xsl:template> 
</xsl:stylesheet> 

`

在同一個文件夾中這些文件,我雙擊該XML文件,它提供了我需要的XML值的友好報告。因此,如果我只需雙擊一個HTML文件,並且每次將新的XML放入同一文件夾中,HTML都將找到XML並使用XSL作爲樣式表來呈現它自己。而不必每次手動更新XML並告訴它使用XSL。

此外,我試過但未成功將'CardNo'分組,並報告使用次數,總分'積分'多少以及'合格金額'多少。而不是像這樣的長長的條目列表,比如合併報告。

太謝謝你了...

這裏是首選的輸出文件...

<THEAD> 
       <TR bgcolor="RGB(0, 204, 51)"> 
        <TD width="25%"><font color="white"><B>Account Number</B></font></TD> 
        <TD width="25%"><font color="white"><B>Total Points</B></font></TD> 
        <TD width="25%"><font color="white"><B>Date</B></font></TD> 
        <TD width="25%"><font color="white"><B>Total Qualified Spent</B></font></TD> 
       </TR> 
      </THEAD> 
      <TBODY> 
       <TR> 
        <TD width="25%">1042540000002</TD> 
        <TD width="25%">100</TD> 
        <TD width="25%">2012-10-22</TD> 
        <TD width="25%">R750.32</TD> 
       </TR> 
+0

您可以提供用於手動鏈接到XSLT的XML代碼。那麼我們可能會幫助更多。 –

+0

你能否更詳細地解釋一下;我不太明白。如果您同時擁有XML和XSLT,爲什麼不能將它轉換爲HTML?爲什麼一旦查看HTML,HTML仍然需要引用XSLT? – Dabbler

+0

親愛的@Dabbler,我已經按照上面的要求更新了這個查詢。謝謝 –

回答

0

如果我理解正確,你正在使用XSLT來創建XML文件的HTML。這樣做的常規方法是運行XSLT處理器,爲其提供XSLT和XML文件。爲了做到這一點,不需要修改XML文件。您將XSLT和XML文件提供給處理器,併爲您提供轉換後的輸出文件,這將成爲HTML。

我相信Saxon和Altova都有免費版本的XSLT引擎(與商業版本一起),所以請嘗試下載其中一個並試用一下。你只需要從命令行調用XSLT引擎。只要您不需要XSLT 2,您也可以使用Microsoft的引擎。

+0

謝謝@Dabbler的建議,我會下載它,並給它一個去。我會報告進展情況。 –

+0

Hi @Dabbler,我通過CLI通過Altova進行管理,在MS環境中完美工作。皮蒂它不是獨立的平臺,看看xinclude和jquery,但是做了什麼問。謝謝 –