以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XSL/XSLT/XSL-FO/CSS 』  (http://bbs.xml.org.cn/list.asp?boardid=8)
----  XSLT——指令输出与实例不一致  (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=79229)


--  作者:jianghui
--  发布时间:12/20/2009 1:12:00 PM

--  XSLT——指令输出与实例不一致
实例应该显示如下:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="002.xsl"?>
- <books>
- <book id="001">
  <aa>abcd</aa>
  <bb>1</bb>
  </book>
- <book id="002">
  <aa>abcd</aa>
  <bb>2</bb>
  </book>
- <book id="003">
  <aa>abcd</aa>
  <bb>3</bb>
  </book>
- <book id="004">
  <aa>abcd</aa>
  <bb>4</bb>
  </book>
  </books>

我做的则显示如下:
  <?xml version="1.0" ?>
- <books>
- <processing-instruction name="xml-stylesheet">
  <type>text/xsl</type>
  <href>004.xsl</href>
  </processing-instruction>
- <book id="001">
  <aa>abcd</aa>
  <bb>1</bb>
  </book>
- <book id="002">
  <aa>abcd</aa>
  <bb>2</bb>
  </book>
- <book id="003">
  <aa>abcd</aa>
  <bb>3</bb>
  </book>
- <book id="004">
  <aa>abcd</aa>
  <bb>4</bb>
  </book>
  </books>


代码如下:
XML文档:004.xml

<?xml version="1.0"?>
<books>

<processing-instruction name="xml-stylesheet">   //存储处理指令"xml-stylesheet"
<type>text/xsl</type>                                              //指令参数"type"值为"text/xsl"
<href>004.xsl</href>                                               //指令参数"href"值为"004.xsl"
</processing-instruction>

<book id="001">
<aa>abcd</aa>
<bb>1</bb>
</book>

<book id="002">
<aa>abcd</aa>
<bb>2</bb>
</book>

<book id="003">
<aa>abcd</aa>
<bb>3</bb>
</book>

<book id="004">
<aa>abcd</aa>
<bb>4</bb>
</book>

</books>

XSLT文档:004.xsl

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>

<xsl:template match="/books">
<xsl:apply-templates select="processing-instruction"/>     //调用命名模板"processing-instruction"
<xsl:text> </xsl:text>
<xsl:copy-of select="book"/>
</xsl:template>

<xsl:template match="processing-instruction">      //定义命名模板"processing-instruction"

<xsl:processing-instruction name="{@name}">     //创建处理指令,名称为xml存储的指令名称"name"
<xsl:apply-templates select="*"/>                            //调用命名模板"*",输出指令内容              
</xsl:processing-instruction>

</xsl:template>

<xsl:template match="*">
<xsl:value-of select="name()"/>                //输出xml文档中指令的子元素名称"type" 和"href"
<xsl:text>="</xsl:text>                                //输出字符串 ="
<xsl:value-of select="."/>                           //输出xml文档中指令的子元素值"text/xsl" 和"004.xsl"
<xsl:text>"</xsl:text>                                   //输出字符串 "
</xsl:template>
</xsl:stylesheet>

对了,我是用计事本编写的,用IE6.0显示的.


--  作者:Qr
--  发布时间:12/21/2009 2:01:00 PM

--  
你的XSL没有指定输出XML的根节点,这是个原则性的错误。

--  作者:hexun831012
--  发布时间:12/21/2009 5:24:00 PM

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