使用XSL显示XML文件,使其看起来像HTML

时间:2013-10-21 05:27:25

标签: html xml xslt

我是标记语言的新手,需要显示HTML表格,将其转换为XML,然后使用与HTML相同的XSL显示它。这里有一些HTML表格:

<table border="1"
cellpadding="5"
summary="Obesity and other statistics">
<tr>
    <th>State</th>
    <th>Obese adults</th>
    <th>Obese children and adolescents</th>
    <th>Median Household Income</th>
    <th>H.S Graduation rate</th>
</tr>
<tr>
    <td>Mississippi</td>
    <td>34.4%</td>
    <td>17.8%</td>
    <td>$36,919</td>
    <td>80.4%</td>
</tr>

4列,以及带有1个标题行的多行。有一个摘要(没有必要,可以轻松删除),单元格填充和边框。这是XML表的开头:

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="mg.xsl"?>

<data>
  <columns>
    <State>State</State>
    <Obese_adults>Obese adults</Obese_adults>
    <Obese_children_and_adolescents>Obese children and adolescents</Obese_children_and_adolescents>
    <Median_Household_Income>Median Household Income</Median_Household_Income>
    <H_S_Graduation_rate>H.S Graduation rate</H_S_Graduation_rate>
  </columns>
  <records>
    <record>
      <State>Mississippi</State>
      <Obese_adults>34.4%</Obese_adults>
      <Obese_children_and_adolescents>17.8%</Obese_children_and_adolescents>
      <Median_Household_Income>$36,919</Median_Household_Income>
      <H_S_Graduation_rate>80.4%</H_S_Graduation_rate>
    </record>

这是根据指南转换的,这可能对我正在做的事情有所帮助,也可能没有任何好处。无法找到关于它的全部功能或如何与xsl一起使用的明确解释。

这就是我对XSL的看法

<?xml version="1.0" encoding="ISO-8859-1"?>

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
  <html>
  <body>
  <h2></h2>
  <table border="1">
      <th>State</th>
      <th>Obese adults</th>
      <th>Obese children and adolescents</th>
      <th>Median Household Income</th>
      <th>H.S Graduation rate</th>
    </tr>
    <xsl:for-each select="data/records/record">
    <tr>
      <td><xsl:value-of select="State"/></td>
      <td><xsl:value-of select="Obese adults"/></td>
      <td><xsl:value-of select="Obese children and adolescents"/></td>
      <td><xsl:value-of select="Median Household Income"/></td>
      <td><xsl:value-of select="H.S Graduation rate"/></td>
    </tr>
    </xsl:for-each>
  </table>
  </body>
  </html>
</xsl:template>

</xsl:stylesheet> 

这是我发现的模板后再次形成的。我知道它在做什么,但不知道它做错了什么以及它为什么不起作用。我会很感激一些帮助,特别是如果我不太正确的方法去做这件事。谢谢

编辑:错误我得到的是“错误加载样式表:XPath解析失败:运算符预期:”顺便说一下。

1 个答案:

答案 0 :(得分:3)

你的XSLT中有一些小错误,这是你编辑的一个;

<?xml version="1.0" encoding="ISO-8859-1"?>

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
  <html>
  <body>
  <h2></h2>
  <table border="1">
<tr>
      <th>State</th>
      <th>Obese adults</th>
      <th>Obese children and adolescents</th>
      <th>Median Household Income</th>
      <th>H.S Graduation rate</th>
    </tr>
    <xsl:for-each select="data/records/record">
    <tr>
      <td><xsl:value-of select="State"/></td>
      <td><xsl:value-of select="Obese_adults"/></td>
      <td><xsl:value-of select="Obese_children_and_adolescents"/></td>
      <td><xsl:value-of select="Median_Household_Income"/></td>
      <td><xsl:value-of select="H_S_Graduation_rate"/></td>
    </tr>
    </xsl:for-each>
  </table>
  </body>
  </html>
</xsl:template>

</xsl:stylesheet> 

应用于XML的输出将是;

<html>
   <body>
      <h2></h2>
      <table border="1">
         <tr>
            <th>State</th>
            <th>Obese adults</th>
            <th>Obese children and adolescents</th>
            <th>Median Household Income</th>
            <th>H.S Graduation rate</th>
         </tr>
         <tr>
            <td>Mississippi</td>
            <td>34.4%</td>
            <td>17.8%</td>
            <td>$36,919</td>
            <td>80.4%</td>
         </tr>
      </table>
   </body>
</html>