Javascript 将XML插入HTML样式的时间表
我对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>
<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>