1

XSLTをHTMLとして出力していましたが、検証の理由からXMLとして出力する方が優れていることを読みました。したがって、出力をHTMLからXMLに変更するとページが台無しになります。つまり、XSLTファイルからすべてのHTML要素を削除する必要があるということですか?また、外部CSSファイルを介してスタイリングしています。XMLとして出力する場合、スタイリングはXSLTファイル内にある必要がありますか?

このページのコードは次のとおりです。

<?xml version="1.0"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output 
method="xml" 
doctype-system="http://www.openmobilealliance.org/tech/DTD/xhtml-mobile12.dtd"  
doctype-public="-//WAPFORUM//DTD XHTML Mobile 1.2//EN" />

<xsl:template match="/">


        <xsl:element name="head">
            <xsl:element name="title">Selected Flight Route</xsl:element>
            <link rel="stylesheet" type="text/css" href="mystyles.css" title="Style"/>
        </xsl:element>

        <xsl:element name="body"> 

            <xsl:element name="div"><!-- This holds the navigation bar-->
                <xsl:attribute name="id">
                    <xsl:text>navdiv</xsl:text>
                </xsl:attribute>


                <xsl:element name="div"><!-- This holds the image links-->
                    <xsl:attribute name="id">
                        <xsl:text>navlinks</xsl:text>
                    </xsl:attribute>

                    <xsl:element name="a">
                        <xsl:attribute name="id">
                            <xsl:text>navlinksone</xsl:text>
                        </xsl:attribute>
                        <xsl:attribute name="href">flights.php</xsl:attribute>
                    </xsl:element>

                    <xsl:element name="a">
                        <xsl:attribute name="id">
                            <xsl:text>navlinkstwo</xsl:text>
                        </xsl:attribute>
                        <xsl:attribute name="href">planes.php</xsl:attribute>
                    </xsl:element>

                    <xsl:element name="a">
                        <xsl:attribute name="id">
                            <xsl:text>navlinksthree</xsl:text>
                        </xsl:attribute>
                        <xsl:attribute name="href">weatherfeed.php</xsl:attribute>
                    </xsl:element>

                </xsl:element>
            </xsl:element><!-- End the navigation bar-->






<xsl:element name="div"><xsl:attribute name="id">
                            <xsl:text>maindiv</xsl:text>
                        </xsl:attribute>



<h1 id="heading">Flights and planes</h1>

<xsl:element name="div"><xsl:attribute name="id">
                            <xsl:text>divone</xsl:text>
                        </xsl:attribute><img width="30" height="30" src="globe.png"/><p class="centerp">Selecting the Globe will display all flight routes.</p></xsl:element>

<xsl:element name="div"><xsl:attribute name="id">
                            <xsl:text>divtwo</xsl:text>
                        </xsl:attribute><img width="75" height="30" src="planepic.png"/><p class="centerp">Selecting the Plane will display all Aircraft info.</p></xsl:element>

<xsl:element name="div"><xsl:attribute name="id">
                            <xsl:text>divthree</xsl:text>
                        </xsl:attribute><img width="32" height="30" src="weather.png"/><p class="centerp">The Weather icon displays the weather in all citys.</p></xsl:element>
</xsl:element>







        </xsl:element>
        <!-- End the Body element -->



</xsl:template>
<!-- End the Main Template element -->

</xsl:stylesheet>

これがXMLとして出力されたページへのリンクです。これがHTMLとして出力された同じページです。XMLとして出力するときにこれがのページを台無しにしている理由を誰かに教えてもらえますか?問題が何であるかを調査しているときに、XMLとして出力されるサンプルファイルにHTML要素が含まれていないように見えることに気付きました。

XMLの変換に使用する元のファイルは次のとおりです。

<?php
$xml = new DOMDocument();   
$xml->load('flights.xml');

$xsl = new DOMDocument;
$xsl->load('index.xsl');

$proc = new XSLTProcessor();
$proc->importStyleSheet($xsl);

echo $proc->transformToXML($xml);
?>
4

1 に答える 1

1

簡潔な答え

XML をブラウザーに出力して、ブラウザーが HTML をレンダリングすることを期待することはできません。それらは異なる言語です。

長い答え

HTML の代わりに XML を出力すると、HTML ノードの代わりに XML ノードが作成されるため、ブラウザーは期待どおりにページをレンダリングしません。これら 2 つの違いは、HTML ノードには XML ノードよりも多くのプロパティがあることです。たとえば、これらのプロパティのいくつかは、HTML 要素のスタイルを設定できるものです。

XML ノードのプロパティを使用すると、DOM を操作およびナビゲートできますが、HTML プロパティはすべての XML プロパティのスーパーセットです (私はそう思います)。

各種類のノードで使用可能なプロパティのリストについては (Firefox の観点から、標準にかなり準拠しています): https://developer.mozilla.org/en-US/docs/DOM/element

XHTML

検証について言及しているため、HTML 4.01 に代わるものは、HTML や XML とは異なる言語であり、検証に関してより厳密な XHTML 1.0 です (たとえば、一致しないタグは許可されません)。

HTML 4.01 ではなく XHTML 1.0 を使用していることをブラウザに示すには、ドキュメントの先頭にこれらの DOCTYPE 要素のいずれかを含める必要があります。

 <!DOCTYPE html 
     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<!DOCTYPE html 
     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<!DOCTYPE html 
     PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

CSS の違い

また、XHTML ドキュメントでの CSS の処理方法にも (わずかな) 違いがあります。これらの違いをリストした記事を残しておきます。

http://reference.sitepoint.com/css/htmlxhtml

于 2013-02-28T14:38:49.560 に答える