Domanda

Credo di aver bisogno di un DTD per definire lo schema e un XSLT se voglio visualizzarlo in un browser e farlo sembrare "carino".Ma non sono sicuro di cos'altro mi servirebbe per avere un documento XML ben definito che possa essere interrogato utilizzando XQuery e visualizzato in un browser web.

È stato utile?

Soluzione

Affinché un documento XML sia interrogabile utilizzando XQquery non è necessario definire un DTD o XSD.Lo scopo di DTD o XSD è definire la struttura rigorosa di un documento XML e consentirne la convalida prima dell'utilizzo.

I browser moderni interpretano molto bene i file XML e mostrano un albero DOM.Se è necessaria una formattazione avanzata dell'XML per la visualizzazione nel browser, è necessario creare un file di trasformazione XSLT e quindi aggiungere una direttiva al documento XML originale che punti al file XSLT.Il browser seleziona tale direttiva e utilizza il processore XSLT integrato per ottenere l'output che viene poi interpretato dal browser.

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>

Altri suggerimenti

A rigor di termini, non hai bisogno di nulla.XML, anche senza una definizione di schema, funziona.

Una definizione di schema (in XSD, RelaxNG o DTD) aiuta vari strumenti che funzionano con XML, perché possono verificare che la struttura dell'XML sia conforme a ciò che desideri.

Una traduzione XSLT in HTML è utile se l'XML contiene informazioni che desideri visualizzare con un browser.È tutt'altro che necessario, però.

Per interrogare l'XML con XPath o XQuery, è necessario un processore XPath o XQuery.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top