如何同时使用 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>
结果您将看到如下所示:
我试图通过使用 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>
结果您将看到如下所示: