如何在同一XML中使用DTD和XSL

时间:2017-12-09 13:14:12

标签: xml xslt dtd

我试图通过使用XSL来展示我的XML,同时为了使我的XML格式良好,我使用了DTD。问题是每当我在XML上放置DTD链接时,网页就会变成空白。如果我删除DTD链接一切正常。如何将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>

1 个答案:

答案 0 :(得分: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的文档的唯一名称。

语言 - 用于编写文本来描述对象。包含两个用大写字母写的字母。 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>

因此,您将看到如下:

enter image description here