我需要什么来管理XML文件?
时间:2020-03-05 18:54:01 来源:igfitidea点击:
如果我想在浏览器中显示它并使它看起来"漂亮",我相信我需要一个DTD来定义该模式和一个XSLT。但是我不确定要使用XQuery查询并显示在Web浏览器中的定义明确的XML文档还需要什么。
解决方案
回答
严格来说,我们不需要任何东西。即使没有模式定义,XML仍然有效。
模式定义(在XSD,RelaxNG或者DTD中)有助于使用XML的各种工具,因为它们可以验证XML的结构是否符合要求。
如果XML包含我们要使用浏览器查看的信息,则将XSLT转换为HTML很好。不过,这远非必需。
要使用XPath或者XQuery查询XML,我们需要一个XPath或者XQuery处理器。
回答
对于使用XQquery可以查询的XML文档,我们不必定义DTD或者XSD。 DTD或者XSD的目的是定义XML文档的严格结构,并允许在使用前进行验证。
现代浏览器可以很好地解释XML文件并显示DOM树。如果需要增强XML格式以用于浏览器显示,则必须创建XSLT转换文件,然后向原始XML文档中添加指向XSLT文件的指令。浏览器选择该指令,并使用内置的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>