我对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>
接下来学生的行
<tr>
<th>David</td>
<td>TBA</td>
<td>TBA</td>
<td>TBA</td>
<td>TBA</td>
<td>TBA</td>
<td>TBA</td>
<td>TBA</td>
</div>
</tr>
我的xml数据文件看起来主要是这样的:
David
Lesson:English
Start:9
End:10
/David
通常我只是想知道在时间表中实现XML的最佳方法是什么?特别是因为我对使用XML非常新,所以非常感谢这个问题的任何信息/源代码。特别是学生应该能够看到他们的课程何时开始和结束。我已经看了几个例子,但是当试图实现我的HTML时,似乎碰到了一堵砖墙。
答案 0 :(得分:0)
您拥有的示例中的XML数据文件可能不是有效的XML - 但我已检查(已解析) 确保下面的XML有效。
您可以使用XSLT样式表将XML转换为HTML。这是一个例子 你使用过的一些领域。
如果您有此XML(示例):注意:这只是现有表的一部分示例。
输出HTML需要位于 table
块中。
示例输入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片段;我使用ORACLE PL / 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>