Что мне нужно для управления файлами XML? - PullRequest
1 голос
/ 15 сентября 2008

Я считаю, что мне нужен DTD для определения схемы и XSLT, если я хочу отобразить ее в браузере и сделать так, чтобы она выглядела "красиво". Но я не уверен, что еще мне нужно, чтобы иметь четко определенный XML-документ, который можно запросить с помощью XQuery и отобразить в веб-браузере.

Ответы [ 2 ]

2 голосов
/ 15 сентября 2008

Строго говоря, вам ничего не нужно. XML, даже без определения схемы, работает.

Определение схемы (в XSD, RelaxNG или DTD) помогает различным инструментам, которые работают с XML, потому что они могут проверить, соответствует ли структура XML тому, что вы хотите.

Перевод XSLT в HTML - это хорошо, если XML содержит информацию, которую вы хотите просмотреть в браузере. Хотя это далеко не обязательно.

Для запроса XML с помощью XPath или XQuery вам необходим процессор XPath или XQuery.

1 голос
/ 15 сентября 2008

Чтобы документ 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>
...