我相信我需要一个DTD来定义架构和XSLT,如果我想在浏览器中显示它并让它看起来“漂亮”。但是我不确定我还需要一个定义良好的XML文档,可以使用XQuery查询并在Web浏览器中显示。
答案 0 :(得分:2)
严格来说,你什么都不需要。即使没有模式定义,XML也可以工作。
模式定义(在XSD,RelaxNG或DTD中)可以帮助各种使用XML的工具,因为它们可以验证XML的结构是否符合您的要求。
如果XML包含您希望通过浏览器查看的信息,则对XML的XSLT转换很不错。但这远非必要。
要使用XPath或XQuery查询XML,您需要一个XPath或XQuery处理器。
答案 1 :(得分:1)
对于可使用XQquery查询的XML文档,您不必定义DTD或XSD。 DTD或XSD的目的是定义XML文档的严格结构,并允许在使用前进行验证。
现代浏览器非常好地解释XML文件并显示DOM树。如果需要增强浏览器显示的XML格式,则必须创建XSLT转换文件,然后将指令添加到指向XSLT文件的原始XML文档。浏览器选择该指令并使用内置的XSLT处理器来获取然后由浏览器解释的输出。
<强> info.xml 强>
<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet type="text/xsl" href="info.xslt"?>
<info>
<appName>My App</appName>
<version>1.0.129</version>
<buildTime>10-09-2008 12:44:03</buildTime>
</info>
<强> info.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>
<head>
<title>Application</title>
<style type="text/css">
body { font-family: Lucida Console; }
#outer { text-align: left; }
#name {
font-weight: bold;
font-size: 1.2em;
}
#logo {
float: left;
padding-right: 20px;
padding-bottom: 200px;
}
</style>
</head>
<body>
<xsl:apply-templates select="info" />
</body>
</html>
</xsl:template>
<xsl:template match="info">
<img id="logo" src="image.png" />
<div id="outer">
<div id="name">
<xsl:value-of select="appName"/>
</div>
<div id="version">
<xsl:value-of select="version"/>
</div>
<div id="date">
<xsl:value-of select="buildTime"/>
</div>
</div>
</xsl:template>
</xsl:stylesheet>