Что мне нужно для управления XML-файлами?
Вопрос
Я считаю, что мне нужен DTD для определения схемы и XSLT, если я хочу отобразить ее в браузере и чтобы она выглядела «красиво».Но я не уверен, что еще мне нужно, чтобы иметь четко определенный XML-документ, который можно запрашивать с помощью XQuery и отображать в веб-браузере.
Решение
Чтобы XML-документ можно было запрашивать с помощью XQquery, вам не нужно определять 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>
Другие советы
Строго говоря, вам ничего не нужно.XML, даже без определения схемы, работает.
Определение схемы (в XSD, RelaxNG или DTD) помогает различным инструментам, работающим с XML, поскольку они могут проверить, соответствует ли структура XML тому, что вы хотите.
Перевод XSLT в HTML удобен, если XML содержит информацию, которую вы захотите просмотреть в браузере.Хотя это далеко не обязательно.
Чтобы запросить XML с помощью XPath или XQuery, вам понадобится процессор XPath или XQuery.