1

我仍在学习如何使用 XML 和 XSL 创建 HTML 输出文件,并且由于 stackoverflow 已经有了很大的改进。

我有一个自动生成的 XML 文件,但每次创建新的 XML 时我都无法告诉 XML 文件 XSLT 文件在哪里。
有没有办法创建一个 HTML 文件,当用户打开它时,HTML 将“href”到 XML 和 XSLT 并将其作为预期的 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 文件的开头

<?xml version="1.0" encoding="utf-8"?>
 <?xml-stylesheet type="text/xsl" href="XSLnice.xsl"?>

XSL 文件看起来像这样...

<?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>
4

1 回答 1

0

如果我理解正确,您正在使用 XSLT 从您的 XML 文件创建 HTML。执行此操作的常规方法是运行 XSLT 处理器,为其提供 XSLT 和 XML 文件。无需修改 XML 文件即可执行此操作。您将 XSLT 和 XML 文件提供给处理器,它会为您提供转换后的输出文件,在您的情况下将是 HTML。

我相信 Saxon 和 Altova 都有免费版本的 theit XSLT 引擎(以及商业引擎),所以请尝试下载其中一个并试一试。您只需要从命令行调用 XSLT 引擎。只要您不需要 XSLT 2,您也可以使用 Microsoft 的引擎。

于 2012-10-26T17:04:18.757 回答