xml - 尽管 dtd 和 xsl 正确,为什么我的 xml 页面没有显示?
问题描述
我正在尝试设计一个 xml 来显示大学学生的详细信息。该学院由具有参数名称、年龄和卷的学生组成。
这是我的xml文件
<?xml version="1.0"?>
<!DOCTYPE college SYSTEM "college.DTD">
<?xsl-stylesheet type="text/xsl" href="college.XSL"?>
<college>
<student>
<name>vipul</name>
<age>16</age>
<roll>12</roll>
</student>
<student>
<name>vipul</name>
<age>16</age>
<roll>12</roll>
</student>
<student>
<name>vipul</name>
<age>16</age>
<roll>12</roll>
</student>
</college>
这是我的 xsl 文件
<?xml version="1.0"?>
<xsl-stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<title>college</title>
<head>
<body>
<table border="1" align="center">
<tr bgcolor="yellow">
<th>name</th>
<th>age</th>
<th>roll</th>
</tr>
<xsl:for-each select="college/student">
<tr>
<td><xsl:value-of select="name" /></td>
<td><xsl:value-of select="age" /></td>
<td><xsl:value-of select="roll" /></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
最后这是我的外部 dtd 文件。这里我定义了相关的代码结构
<?xml version="1.0">
<!DOCTYPE college(student)>
<!ELEMENT student(name,age,roll)>
<!ELEMENT name(#PCDATA)>
<!ELEMENT age(#PCDATA)>
<!ELEMENT roll(#PCDATA)>
一切似乎都是正确的,但我没有得到我想要的 xml 输出。为什么会这样?
解决方案
您的文件有两个错误:
您的 DTD 文件无效。看到这个答案。它解释了外部 DTD 文件不能包含
<!DOCTYPE college(student)>
宣言。所以你的 DTD 文件应该看起来像(我
+
在你的college
元素中添加了一个以启用多个student
子元素)<?xml version="1.0" encoding="utf-8" ?> <!ELEMENT college (student+)> <!ELEMENT student (name,age,roll)> <!ELEMENT name (#PCDATA)> <!ELEMENT age (#PCDATA)> <!ELEMENT roll (#PCDATA)>
您的浏览器无法识别 XML 文件中指向 XSLT 代码的链接,因为您的声明中有错字。XML 文件开头的正确拼写是
<?xml-stylesheet...
代替
<?xsl-stylesheet....
推荐阅读
- excel - 将响应形状添加到当前宏的 VBA 代码
- r - 多级 XML 中的最佳数据帧提取方法
- python - 尝试循环字典以获取计数器时遇到 KeyError
- javascript - 角度错误日志发送到 elasticsearch
- influxdb - influxdb - 当使用 mean() 或 median() 请求时,一些值变为空
- html - 让 CSS 网格行填充可用空间
- javascript - CORS 阻止的来源 - 来源和允许的来源相同
- java - MD5 哈希 Java 测验
- qt - QML Gauge如何制作初始值?
- mongodb - 将数据库从 robo3t 迁移到 MongoDB Atlas