如何同时使用 DTD 和 XSL XML

How to use DTD and XSL in the same XML

我试图通过使用 XSL 来展示我的 XML,同时为了使我的 XML 格式正确,我使用了 DTD。问题是,每当我将 DTD link 放在 XML 上时,网页就会变成空白。如果我删除 DTD link 一切正常。如何结合 DTD 和 XML?

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="bs123@ikasle.ehu.eus" 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>

一般语法如下:

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

参数:

顶级元素 - 表示文档中的顶级元素,对于HTML这是标签。

公开 - 对象是 public(值 PUBLIC)或系统资源(值 SYSTEM),例如本地文件。对于 HTML / XHTML,指定值 PUBLIC。

Registration - 报告 DTD 的开发者已在国际标准化组织 (ISO) 注册。它采用以下两个值之一:加号 (+) - 开发人员已在 ISO 中注册,-(减号) - 开发人员未注册。对于 W3C,该值设置为“-”。

组织 - 开发 DTD 的组织的唯一名称。正式地,HTML / XHTML 发布了 W3C,这个名字写在 .

类型 - 所描述文档的类型。对于 HTML / XHTML,该值由 DTD 指定。

名称 - 描述 DTD 的文档的唯一名称。

语言 - 描述对象的文字。包含两个字母,以大写形式书写。 HTML (XHTML) 文档指定英语 (EN)。

URL - 带有 DTD 的文档。

所以在你的情况下,如果 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="bs123@ikasle.ehu.eus" mota="DiruS">                        
            <kontzeptua>Lanean irabazitakoa</kontzeptua>     
            <kantitatea>4000.0</kantitatea>
    </trantzakzioa>
</trantzakzioak>

结果您将看到如下所示: