以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XSL/XSLT/XSL-FO/CSS 』  (http://bbs.xml.org.cn/list.asp?boardid=8)
----  用xslt转化XML文件为另一个XML文件,并且更改某些XML元素名和加入新元素,该怎么办呢?  (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=6637)


--  作者:wedge
--  发布时间:4/11/2004 3:46:00 PM

--  用xslt转化XML文件为另一个XML文件,并且更改某些XML元素名和加入新元素,该怎么办呢?
要用到<xsl:copy/>吗?可以举一个具体的例子来吗?
--  作者:sam
--  发布时间:4/13/2004 9:50:00 AM

--  
trans.xml
<?xml version="1.0" encoding="UTF-8"?>
<students>
 <student>
  <name>sam</name>
  <sex>Male</sex>
  <ID>123456</ID>
 </student>
</students>

trans.xslt
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="UTF-8"></xsl:output>
<xsl:template match="/">
 <xsl:apply-templates select="students"></xsl:apply-templates>
</xsl:template>

<xsl:template match="students">
 <students>
  <xsl:for-each select="student">
   <student>
    <xsl:for-each select="*">
     <xsl:choose>
      <xsl:when test="name() = 'ID'"><!-- rename element-->
       <studentID><xsl:value-of select="."/></studentID>
      </xsl:when>
      <xsl:otherwise>
       <xsl:variable name="tagname"><xsl:value-of select="name()"/></xsl:variable>
       <xsl:element name="{$tagname}"><xsl:value-of select="."/></xsl:element>
      </xsl:otherwise>
     </xsl:choose>
    </xsl:for-each>
    <major>CS</major><!-- add element-->
   </student>
  </xsl:for-each>
 </students>
</xsl:template>

</xsl:stylesheet>


--  作者:wedge
--  发布时间:4/13/2004 3:05:00 PM

--  
有些地方不太懂,
<xsl:variable name="tagname"><xsl:value-of select="name()"/></xsl:variable>
       <xsl:element name="{$tagname}"><xsl:value-of select="."/></xsl:element>
是什么意思啊?
麻烦解释一下!
--  作者:wedge
--  发布时间:4/13/2004 3:41:00 PM

--  
怪了,trans.xml我看着没问题呀!可浏览的时候就出现错误了!
******************
无法显示 XML 页。
使用 样式表无法查看 XML 输入。请更正错误然后单击 刷新按钮,或以后重试。


--------------------------------------------------------------------------------

文档的顶层无效。处理资源 'file:///F:/xmldoc/MYXMLDOC/trans.xml' 时出错。第 1 行,位置: 1

{\rtf1\ansi\ansicpg936\deff0\deflang1033\deflangfe2052{\fonttbl{\f0\fnil\fcharset134 \'cb\'ce\'cc\'e5;}}
^
********************
我用的解析器是msxml4.dll,怎么搞的?


--  作者:sam
--  发布时间:4/14/2004 9:43:00 AM

--  
trans.xml是用XMLSpy写的应该没什么问题吧,
例子在xmlspy中测试过,
msxml4.dll没有用过,搞不懂
你仔细检查一下第一行,是不是有多余的空格
--  作者:wedge
--  发布时间:4/15/2004 2:22:00 PM

--  
搞清楚了,用XMLSPY打开后发现在第一行有许多乱码一样的东西,去掉后就正常了!

--  作者:pizazz
--  发布时间:4/22/2004 4:49:00 PM

--  
是什么结果,是不是就一个   CS  ?
--  作者:pizazz
--  发布时间:4/22/2004 5:05:00 PM

--  
二楼举的例子,为何看不到输出的XML文件???
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms