2017-12-09 75 views
0

私はXMLをXSLで表示しようとしていますが、XMLを整形してDTDを使用するようにしようとしています。問題は、XMLにDTDリンクを置くたびに、Webページが空白になることです。 DTDリンクを削除すると、すべて正常に動作します。 DTDとXMLの両方をどのように組み合わせるのですか?DTDとXSLを同じXM​​Lで使用する方法

XMLコード:

<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?> 
<?xml-stylesheet type="text/xsl" href="erakutsi.xsl"?> 
<!DOCTYPE trantzakzioak SYSTEM "xml_eskema.xsd"> 

<trantzakzioak> 
    <trantzakzioa erabiltzailea="[email protected]" mota="DiruS">       
      <kontzeptua>Lanean irabazitakoa</kontzeptua>  
      <kantitatea>4000.0</kantitatea> 
    </trantzakzioa> 
</trantzakzioak> 

DTDコード:

<!ELEMENT trantzakzioak (trantzakzioa)*> 
<!ATTLIST trantzakzioak> 
<!ELEMENT trantzakzioa (kontzeptua,kantitatea)> 
<!ATTLIST trantzakzioa erabiltzailea #PCDATA #REQUIRED> 
<!ATTLIST trantzakzioa mota #PCDATA #REQUIRED> 
<!ELEMENT kontzeptua (#PCDATA)> 
<!ELEMENT kantitatea (#PCDATA)> 

XSLコード:

<?xml version="1.0"?> 
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:template match="/"> 
<HTML> 
    <BODY> 
     <h2>Galderak</h2> 
     <TABLE border="1"> 
      <TR> 
       <TH>Testua</TH> 

      </TR> 
      <xsl:for-each select="/trantzakzioak/trantzakzioa" > 
       <TR> 
        <TD><FONT SIZE="2" COLOR="red" FACE="Verdana"> 
         <xsl:value-of select="kontzeptua"/> <BR/> 
         </FONT> 
        </TD> 
       </TR> 
      </xsl:for-each> 
     </TABLE> 
    </BODY> 
</HTML></xsl:template> 
</xsl:stylesheet> 
+0

完全なDTDですか?ルート要素やその他の要素に 'xmlns =" ... "'属性を追加して宣言していないのは確実ですか? –

+1

あなたのDTDは無効です。 'ATTLLIST'に'#PCDATA'型を含めることはできません。私はそれを 'CDATA'に変更する必要があると思います。 –

答えて

0

一般構文は以下のようにすべきである:

<!DOCTYPE [Top-level element] [Publicity] "[Registration]//[Organization]//[Type] [Name]//[Language]" "[URL]"> 

パラメータ:

最上位要素 - ドキュメントの最上位要素を示します.HTMLの場合、これはタグです。

公開 - オブジェクトは、ローカルファイルなどのパブリック(値PUBLIC)またはシステムリソース(値SYSTEM)です。 HTML/XHTMLでは、値PUBLICが指定されます。

登録 - DTDの開発者が国際標準化機構(ISO)に登録されていることを報告します。プラス(+) - 開発者がISOに登録されており、 - (マイナス) - 開発者が登録されていません。 W3Cの場合、値は " - "に設定されます。

組織 - DTDを開発した組織の一意の名前。正式には、HTML/XHTMLはW3Cをこの名前で公開しています。

タイプ - 説明されているドキュメントのタイプ。 HTML/XHTMLの場合、値はDTDによって指定されます。

名前 - DTDを記述する文書の一意の名前。

言語 - オブジェクトを説明するためにテキストが書き込まれます。大文字で書かれた2つの文字を含みます。 HTML(XHTML)文書は英語(EN)を指定します。

URL - DTDを持つドキュメントのURL。

だからあなたの場合には、以下のようにxml_eskema.dtd場合:

<!ELEMENT trantzakzioak (trantzakzioa)*> 
<!ATTLIST trantzakzioak> 
<!ELEMENT trantzakzioa (kontzeptua,kantitatea)> 
<!ATTLIST trantzakzioa erabiltzailea CDATA #REQUIRED> 
<!ATTLIST trantzakzioa mota CDATA #REQUIRED> 
<!ELEMENT kontzeptua (#PCDATA)> 
<!ELEMENT kantitatea (#PCDATA)> 

その後、あなたのXMLのDOCTYPE宣言は以下のようにする必要があります:

<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?> 
<?xml-stylesheet type="text/xsl" href="erakutsi.xsl"?> 
<!DOCTYPE trantzakzioak PUBLIC '-//W3C//DTD HTML//EN' 'xml_eskema.dtd'> 

<trantzakzioak> 
    <trantzakzioa erabiltzailea="[email protected]" mota="DiruS">       
      <kontzeptua>Lanean irabazitakoa</kontzeptua>  
      <kantitatea>4000.0</kantitatea> 
    </trantzakzioa> 
</trantzakzioak> 

その結果、あなたは以下のようにそれが表示されます。

enter image description here

関連する問題