以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XSL/XSLT/XSL-FO/CSS 』  (http://bbs.xml.org.cn/list.asp?boardid=8)
----  [求助]XSLT转换带DTD声明的XML文件遇到的问题  (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=58650)


--  作者:liketutu
--  发布时间:1/31/2008 10:45:00 AM

--  [求助]XSLT转换带DTD声明的XML文件遇到的问题
源XML文件是:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
 <head>
  <meta http-equiv="Content-Type"
   content="text/html; charset=utf-8" />
  <title>new docment</title>
 </head>
 <body></body>
</html>

XSLT文件是:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 version="2.0">
 <xsl:template match="/html/head/meta">
  <content>
   <xsl:value-of select="./@content" />
  </content>
 </xsl:template>
 <xsl:template match="text()|@*" mode="#all"></xsl:template>
</xsl:transform>

就是想得到meta节点的content属性的值

但得到的结果文件是:
<?xml version="1.0" encoding="UTF-8"?>

也就是空的

然后我把源文件的第一行 DTD 声明去掉,转换就得到
<?xml version="1.0" encoding="UTF-8"?>
<content>text/html; charset=utf-8</content>

这就是我想要的, 现在我想知道为何有DTD声明的时候就不行了呢? 好困惑


--  作者:enyaxp
--  发布时间:2/1/2008 7:37:00 PM

--  
如果需要在XSL中使用外部DTD,可以在XSL中加入下列元素:

<xsl:output   omit-xml-declaration="yes"   doctype-public="外部DTD"   media-type="text/html"   indent   =   "yes"/>


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
31.250ms