Javascript 将XML插入HTML样式的时间表

Javascript 将XML插入HTML样式的时间表,javascript,html,xml,web,Javascript,Html,Xml,Web,我对XML非常陌生,在HTML中使用它基本上我是在为一所学校创建一个时间表,表格首先是通过定义一些表格标题来创建的,例如,然后定义一个给定学生的行 为了让事情更清楚,这里是我的一些源代码: 第一个是表标题 <tr> <th>Student</th> <th>9</th> <th>10</th> <th>11</th>

我对XML非常陌生,在HTML中使用它基本上我是在为一所学校创建一个时间表,表格首先是通过定义一些表格标题来创建的,例如,然后定义一个给定学生的行

为了让事情更清楚,这里是我的一些源代码: 第一个是表标题

   <tr>
        <th>Student</th>
        <th>9</th>
        <th>10</th>
        <th>11</th>
        <th>12</th>
        <th>1</th>
        <th>2</th>
        <th>3</th>
        <th>4</th>
        <th>5</th>
    </tr>

一般来说,我只是想知道将XML实现到时间表中的最佳方法是什么?具体地说,因为我对使用XML非常陌生,所以对于这个问题的任何信息/源代码都将不胜感激。具体来说,学生应该能够看到课程的开始和结束时间。我已经看了几个例子,但在试图实现到HTML中时,这些例子似乎碰到了障碍

示例中的XML数据文件可能不是有效的XML,但我检查了已解析的XML 以确保下面的XML是有效的

注意:要仅选择具有特定开始时间的课程,请参阅本文档末尾的XSLT

<?xml version="1.0" encoding="WINDOWS-1252"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output omit-xml-declaration="yes" method="xml" indent="yes"/>
  <xsl:strip-space elements="*"/>
  <xsl:template match="/">
    <tr>
      <th>NAME</th>
      <th>START</th>
      <th>END</th>
    </tr>
    <tr>
      <xsl:for-each select="/lessons/lesson">
        <tr>
          <td>
            <xsl:value-of select="name"/>
          </td>
          <td>
            <xsl:value-of select="start"/>
          </td>
          <td>
            <xsl:value-of select="end"/>
          </td>
        </tr>
      </xsl:for-each>
    </tr>
  </xsl:template>
</xsl:stylesheet>
可以使用XSLT样式表将XML转换为HTML。这里有一个例子 与您使用的一些字段

如果您有这个XML示例:注意:这只是一个作为现有表一部分的示例。 输出HTML需要在表块中

示例输入XML文档:

<lessons>
  <lesson>
    <name>David</name>
    <description>English</description>
    <start>9</start>
    <end>10</end>
  </lesson>
  <lesson>
    <name>John</name>
    <description>Spanish</description>
    <start>13</start>
    <end>15</end>
  </lesson>
</lessons>
此XSLT样式表可用于生成HTML片段。您可以将其扩展为完整的HTML文档

<?xml version="1.0" encoding="WINDOWS-1252"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output omit-xml-declaration="yes" method="xml" indent="yes"/>
  <xsl:strip-space elements="*"/>
  <xsl:template match="/">
    <tr>
      <th>NAME</th>
      <th>START</th>
      <th>END</th>
    </tr>
    <tr>
      <xsl:for-each select="/lessons/lesson">
        <tr>
          <td>
            <xsl:value-of select="name"/>
          </td>
          <td>
            <xsl:value-of select="start"/>
          </td>
          <td>
            <xsl:value-of select="end"/>
          </td>
        </tr>
      </xsl:for-each>
    </tr>
  </xsl:template>
</xsl:stylesheet>
当XML文档被传递到转换中时,上面的XSLT样式表将输出这个HTML片段;我使用OraclePL/SQL使用上述XML和XSLT进行测试转换;输出的HTML片段仅包括名称、开始和结束节点的行

<tr>
  <th>NAME</th>
  <th>START</th>
  <th>END</th>
</tr>
<tr>
  <tr>
    <td>David</td>
    <td>9</td>
    <td>10</td>
  </tr>
  <tr>
    <td>John</td>
    <td>13</td>
    <td>15</td>
  </tr>
</tr>
此输出HTML基于上述输入XML文档的格式

以下是一个示例,如果您只想报告开始时间为9的课程:

<?xml version="1.0" encoding="WINDOWS-1252"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output omit-xml-declaration="yes" method="xml" indent="yes"/>
  <xsl:strip-space elements="*"/>
  <xsl:template match="/">
    <tr>
      <th>NAME</th>
      <th>START</th>
      <th>END</th>
    </tr>
    <tr>
      <xsl:for-each select="/lessons/lesson/start[text()='9']">
        <tr>
          <td>
            <xsl:value-of select="../name"/>
          </td>
          <td>
            <xsl:value-of select="../start"/>
          </td>
          <td>
            <xsl:value-of select="../end"/>
          </td>
        </tr>
      </xsl:for-each>
    </tr>
  </xsl:template>
</xsl:stylesheet>

您好,特别是,我是否能够将时间与某些表格元素匹配到时间表中?另外,对于我运行的解决方案:,没有表元素出现,只是特定的信息。我通过该转换器获得与上面相同的HTML XML输出-您得到了什么?是的,您可以使用XSLT将HTML输出映射到特定的行元素。只需使用XSLT中的XPATH项来引用输入XML文档我将如何在您提供的代码中使用XPATH?抱歉,我对所有XLST函数都很陌生,例如,要从XML中获取描述节点,可以在现有for each循环中使用:
<?xml version="1.0" encoding="WINDOWS-1252"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output omit-xml-declaration="yes" method="xml" indent="yes"/>
  <xsl:strip-space elements="*"/>
  <xsl:template match="/">
    <tr>
      <th>NAME</th>
      <th>START</th>
      <th>END</th>
    </tr>
    <tr>
      <xsl:for-each select="/lessons/lesson/start[text()='9']">
        <tr>
          <td>
            <xsl:value-of select="../name"/>
          </td>
          <td>
            <xsl:value-of select="../start"/>
          </td>
          <td>
            <xsl:value-of select="../end"/>
          </td>
        </tr>
      </xsl:for-each>
    </tr>
  </xsl:template>
</xsl:stylesheet>