[XSLT难题]

CrazyJavar 2003-08-20 11:46:25
源xml文件如下,现在需要通过xslt转换得到一个新的xml文件,新xml中要把源xml中的<Dyna>元素中的x,y属性的值对调,其它部分保持和源xml一致
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="trans.xslt"?>
<source>
<title>XSL</title>
<author>John Smith</author>
<Dyna x="123" y="456">V1.0.0.0</Dyna>
</source>

转换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" indent="yes"/>
<xsl:template match="/">
<xsl:apply-templates select="node()"/>
</xsl:template>
<xsl:template match="node()">
<xsl:choose>
<xsl:when test="name()='Dyna'">
<xsl:call-template name="DynaTemplate"/>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="DefaultTemplate"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="DynaTemplate">
<xsl:copy>
<xsl:variable name="temp">
<xsl:value-of select="@x"/>
</xsl:variable>
<xsl:attribute name="x"><xsl:value-of select="@y"/></xsl:attribute>
<xsl:attribute name="y"><xsl:value-of select="$temp"/></xsl:attribute>
</xsl:copy>
</xsl:template>
<xsl:template name="DefaultTemplate">
<xsl:copy/>
</xsl:template>
</xsl:stylesheet>


得到的xml文件如下,没有达到预期的结果:
<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="trans.xslt"?>

<source/>

请高手指点一下,该如何修改xslt以达到预期的结果呢,谢谢
...全文
39 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
saucer 2003-08-20
  • 打赏
  • 举报
回复
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="UTF-8" indent="yes"/>
<xsl:template match="Dyna">
<xsl:copy>
<xsl:attribute name="x"><xsl:value-of select="@y"/></xsl:attribute>
<xsl:attribute name="y"><xsl:value-of select="@x"/></xsl:attribute>
<xsl:copy-of select="@*[local-name() != 'x' and local-name() != 'y']"/>
<xsl:apply-templates select="node()" />
</xsl:copy>
</xsl:template>


<xsl:template match="node()">
<xsl:copy>
<xsl:copy-of select="@*" />
<xsl:apply-templates select="node()" />
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
月光易水 2003-08-20
  • 打赏
  • 举报
回复
1. 路径错误
从文档根节点开始读取数据,只读取了(根节点)子节点, xml-stylesheet和source

2. 使用 xsl:cpoy-of ,而非xsl:copy
xsl:copy Attributes and children are not copied automatically


:_)
CrazyJavar 2003-08-20
  • 打赏
  • 举报
回复
谢谢楼上大虾指点,你的文件可以的

不过您能讲讲我写的错在哪里么?

谢谢
CrazyJavar 2003-08-20
  • 打赏
  • 举报
回复
谢谢楼上大虾指点

不过您能否讲讲我写的错在哪里么?

谢谢
可扩展标记语言 科技名词定义 中文名称: 可扩展标记语言 英文名称: extensible markup language;XML 定义: 用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 应用学科: 地理学(一级学科);地理信息系统(二级学科) 以上内容由全国科学技术名词审定委员会审定公布 百科名片 可扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML是标准通用标记语言 (SGML) 的子集,非常适合 Web 传输。XML 提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。 目录 格式特性 简明语法 编辑本段格式特性   XML与Access,Oracle和SQL Server等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:数据索引、排序、查找、相关一致性等,XML仅仅是展示数据。事实上XML与其他数据表现形式最大的不同是:他极其简单。这是一个看上去有点琐细的优点,但正是这点使XML与众不同。   XML与HTML的设计区别是:XML是用来存储数据的,重在数据本身。而HTML是用来定义数据的,重在数据的显示模式。   XML的简单使其易于在任何应用程序中读写数据,这使XML很快成为数据交换的唯一公共语言,虽然不同的应用软件也支持其它的数据交换格式,但不久之后他们都将支持XML,那就意味着程序可以更容易的与Windows,Mac OS,Linux以及其他平台下产生的信息结合,然后可以很容易加载XML数据到程序中并分析他,并以XML格式输出结果。   为了使得SGML显得用户友好,XML重新定义了SGML的一些内部值和参数,去掉了大量的很少用到的功能,这些繁杂的功能使得SGML在设计网站时显得复杂化。XML保留了SGML的结构化功能,这样就使得网站设计者可以定义自己的文档类型,XML同时也推出一种新型文档类型,使得开发者也可以不必定义文档类型。 编辑本段简明语法   SGML常用来定义针对HTML的文档类型定义(DTD),同时它也常用于编写XML的DTD。SGML的问题就在于,它允许出现一些奇怪的语法,这让创建HTML的解析器成为一个大难题:   1 某些起始标签不允许出现结束标签,例如HTML中标签。包含了结束标签就会出现错误。   2 某些起始标签可以选择性出现结束标签或者隐含了结束标签   3 某些起始标签要求必须出现结束标签,例如HTML中[removed]标签。   4 标签可以以任何顺序嵌套。即使结束标签不按照起始标签的逆序出现也是允许的,例如,This is a sample string是正确的。   5 某些特性要求必须包含值,例如中的src特性。   6 某些特性不要求一定有值,例如中的nowrap特性。   7 定义特性的两边有没有加上双引号都是可以的,所以都是允许的。   这些问题使建立一个SGML语言的解析器变成了一项艰巨的任务。判断何时应用以上规则的困难导致了SGML语言的定义一直停滞不前。以这些问题作为出发点,XML逐渐步入我们的视野。   XML去掉了之前令许多开发人员头疼的SGML的随意语法。在XML中,采用了如下的语法:   1 任何的起始标签都必须有一个结束标签。   2 可以采用另一种简化语法,可以在一个标签中同时表示起始和结束标签。这种语法是在大于符号之前紧跟一个斜线(/),例如。XML解析器会将其翻译成。   3 标签必须按合适的顺序进行嵌套,所以结束标签必须按镜像顺序匹配起始标签,例如this is a samplestring。这好比是将起始和结束标签看作是数学中的左右括号:在没有关闭所有的内部括号之前,是不能关闭外面的括号的。   4 所有的特性都必须有值。   5 所有的特性都必须在值的周围加上双引号。   这些规则使得开发一个XML解析器要简便得多,而且也除去了解析SGML中花在判断何时何地应用那些奇怪语法规则上的工作。仅仅在XML出现后的前六年就衍生出多种不同的语言,包括MathML、SVG、RDF、RSS、SOAP、XSLT、XSL-FO,而同时也将HTML改进为XHTML。 WEB技术 HTML HTML ▪ XHTML ▪ HTML 5 ▪ CSS ▪ TCP/IP XML XML ▪ XSL ▪ XSLT ▪ XSL-FO ▪ XPath ▪ XPointer ▪ XLink ▪ DTD ▪ XML Schema ▪ DOM ▪ XForms ▪ SOAP ▪ WSDL ▪ RDF ▪ RSS ▪ WAP ▪ Web Services Web脚本 JavaScript ▪ HTML DOM ▪ DHTML ▪ VBScript ▪ AJAX ▪ jQuery ▪ JSON ▪ E4X ▪ WMLScript Serv脚本 SQL ▪ ASP ▪ ADO ▪ PHP .NET Microsoft.NET ▪ ASP.NET ▪ .NET Mobile 多媒体 SMIL ▪ SVG 扩展阅读: 1 因为XML是W3C制定的,XML的标准化工作由W3C的XML工作组负责,该小组成员由来自各个地方和行业的专家组成,他们通过email交流对XML标准的意见,并提出自己的看法 (www.w3.org/TR/WD-xml)。因为XML 是个公共格式, (它不专属于任何一家公司),你不必担心XML技术会成为少数公司的盈利工具,XML不是一个依附于特定浏览器的语言。
威购商城是2008年推出的一套升级后的超大型网络购物多用户网上商城系统,该系统继承了此前威购多用户网上商城的优秀特点,在原有的基础上进行了重新开发,代码的重新编写,优化以及大规模的改良。增加了多套店铺模版以及加强了团购功能。此系统的推出表明公司有实力把网店系统做的更好。此系统界面美观,后台功能强大,操作的人性化,简洁化给用户的操作带来了许多方便。   该网上商城系统功能强大、可扩展性强:以ASP.net为主要的开发语言、结合新技术AJAX,系统运行速度和页面生成速度快;在整体功能上,整合了总平台和店铺之间的控制,对于前台界面,我们重新设计,根据客户的需要和实际的需求。目前大型电子商务公司均使用类似的商城系统,如“淘宝”“易趣”“网易商城”“SOHU商城”“ 8848 商城”。是您正建立超大型购物商城的最佳选择。全面支持在线支付以及支付宝功能。 模板引擎技术 全新设计的、基于成熟的XML XSLT技术、用户可完全自主控制的模板处理方案,它充分释放了站长对自己网站的风格、代码编写习惯、数据来源的掌控权,而不再受系统的限制。同时在前端还采用了数据缓存、页面缓存等多种手段及形式的缓存机制,使得页面的执行速度表现优秀。 多种商品发布方式 VgoShop V2008为店长提供了三种商品发布方式,除常见的一口价;拍卖,VgoShop V2008又增加了独具创新的团购商品发布方式。VgoShop V2008作为网络团购(B2T既企业对团队)的电子商务交易平台,运用了恒浪独创了网络团购理念,既威购理念。 多用户商城购物车 当你走在现实超市中,会不会不自觉就推起了购物车来购物,因为这东西真的很方便。在网络中购物呢?其实在单用户商城中早已有了购物车功能。但是在多用户商城中还是很少有的。因为这个在操作起来比较繁琐。VgoShop V2008解决了一些难题,最终实现了购物车功能,它的好处在于,购买、结算、下订都要比以前的单个商品购买流程要简单方便很多。同时在购物车中就可以直接下单购买了。 自定义会员组功能 VgoShop V2008提供了自定义会员组功能,商城的站长可以根据自己搭建商城的定位以及商城的运营方式来设定自己商城的会员组。可以自定义会员组的名字,可以分配会员组的权限。当某个会员属于某个组,那么这个会员就拥有了这个会员组下的会员权限了。这样可以去限制或者赋予会员不同的在商城的权限。 自定义店铺组功能 VgoShop V2008提供了自定义店铺等级功能,商城站长可以自定义店铺等级,通过自定义店铺等级,将店铺划分出不同的功能,然后将不同功能的店铺开放给店长。由于店铺在功能和用途上有所不同,那么店长在运营自己的店铺时,就会出现与众不同的,这样会给店长带来相当多的消费者哦。 2008系统架构特点 1、采用多层架构企业级模式进行开发,在安全和稳定性方面大大增强. 2、采用接口的形式来实现功能,使功能多样化和更易于接入系统使用并且,便于用户对特殊功能进行二次开发和修改. 3、 系统开发采用模块化封闭,各模块之间可以独立升级和修改异于过往将所有功能整合到一个DLL文件中. 并可以在部分开源模块中让用户进行二次修改,使系统在个性化方面更容易体现. 4、程序流程上理清了以前的一些不合理和缺乏人性化操作的地方,在操作上更加体现人性化.
威购商城是2008年推出的一套升级后的超大型网络购物多用户网上商城系统,该系统继承了此前威购多用户网上商城的优秀特点,在原有的基础上进行了重新开发,代码的重新编写,优化以及大规模的改良。增加了多套店铺模版以及加强了团购功能。此系统的推出表明公司有实力把网店系统做的更好。此系统界面美观,后台功能强大,操作的人性化,简洁化给用户的操作带来了许多方便。   该网上商城系统功能强大、可扩展性强:以ASP.net为主要的开发语言、结合新技术AJAX,系统运行速度和页面生成速度快;在整体功能上,整合了总平台和店铺之间的控制,对于前台界面,我们重新设计,根据客户的需要和实际的需求。目前大型电子商务公司均使用类似的商城系统,如“淘宝”“易趣”“网易商城”“SOHU商城”“ 8848 商城”。是您正建立超大型购物商城的最佳选择。全面支持在线支付以及支付宝功能。 模板引擎技术 全新设计的、基于成熟的XML XSLT技术、用户可完全自主控制的模板处理方案,它充分释放了站长对自己网站的风格、代码编写习惯、数据来源的掌控权,而不再受系统的限制。同时在前端还采用了数据缓存、页面缓存等多种手段及形式的缓存机制,使得页面的执行速度表现优秀。 多种商品发布方式 VgoShop V2008为店长提供了三种商品发布方式,除常见的一口价;拍卖,VgoShop V2008又增加了独具创新的团购商品发布方式。VgoShop V2008作为网络团购(B2T既企业对团队)的电子商务交易平台,运用了恒浪独创了网络团购理念,既威购理念。 多用户商城购物车 当你走在现实超市中,会不会不自觉就推起了购物车来购物,因为这东西真的很方便。在网络中购物呢?其实在单用户商城中早已有了购物车功能。但是在多用户商城中还是很少有的。因为这个在操作起来比较繁琐。VgoShop V2008解决了一些难题,最终实现了购物车功能,它的好处在于,购买、结算、下订都要比以前的单个商品购买流程要简单方便很多。同时在购物车中就可以直接下单购买了。 自定义会员组功能 VgoShop V2008提供了自定义会员组功能,商城的站长可以根据自己搭建商城的定位以及商城的运营方式来设定自己商城的会员组。可以自定义会员组的名字,可以分配会员组的权限。当某个会员属于某个组,那么这个会员就拥有了这个会员组下的会员权限了。这样可以去限制或者赋予会员不同的在商城的权限。 自定义店铺组功能 VgoShop V2008提供了自定义店铺等级功能,商城站长可以自定义店铺等级,通过自定义店铺等级,将店铺划分出不同的功能,然后将不同功能的店铺开放给店长。由于店铺在功能和用途上有所不同,那么店长在运营自己的店铺时,就会出现与众不同的,这样会给店长带来相当多的消费者哦。 2008系统架构特点 1、采用多层架构企业级模式进行开发,在安全和稳定性方面大大增强. 2、采用接口的形式来实现功能,使功能多样化和更易于接入系统使用并且,便于用户对特殊功能进行二次开发和修改. 3、 系统开发采用模块化封闭,各模块之间可以独立升级和修改异于过往将所有功能整合到一个DLL文件中. 并可以在部分开源模块中让用户进行二次修改,使系统在个性化方面更容易体现. 4、程序流程上理清了以前的一些不合理和缺乏人性化操作的地方,在操作上更加体现人性化.

8,906

社区成员

发帖
与我相关
我的任务
社区描述
XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧