XSLT实现XML2XML的转换结果如何保持空元素的起始、结束标记[原创] 
2007/11/30 10:51:28
阅读全文(7617) | 回复(5) | 编辑 | 精华
经常有网友问经XSL实现XML2XML的转换时,空元素常以空标记格式存在,怎么才能保持空元素以起始、结束标记格式呢?还有,如何用文档中的元素名、属性名,甚至属性值来作为新元素的标记?大家看了以下代码,应该了解个大概了。 transformNodeToObject.xml: <?xml version="1.0" encoding="utf-8" ?> <?xml-stylesheet type="text/xsl" href="transformNodeToObject.xsl"?><root> <item id="a00001" name="Empty" url="http://Qr.blogger.org.cn"/> <item id="a00002" name="Empty" url="http://Qr.blogger.org.cn"/> <item id="a00003" name="Empty" url="http://Qr.blogger.org.cn"/> <item id="a00004" name="Empty" url="http://Qr.blogger.org.cn"/></root> transformNodeToObject.xsl: <?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" version="1.0" encoding="utf-8" indent="yes"/> <xsl:template match="/"><root> <xsl:apply-templates select="//item" /></root></xsl:template> <xsl:template match="item"> <xsl:element name="{name()}"> <xsl:element name="{name(@id)}"><xsl:value-of select="@id"/></xsl:element> <xsl:element name="{@name}"/> <xsl:element name="{@name}"></xsl:element> <xsl:element name="Homepage"><xsl:value-of select="@url"/></xsl:element> </xsl:element></xsl:template> </xsl:stylesheet> <!--注意第2、3个xsl:element返回的结果--> result.xml: <?xml version="1.0"?><root> <item> <id>a00001</id> <Empty/> <Empty></Empty> <Homepage>http://Qr.blogger.org.cn</Homepage> </item> <item> <id>a00002</id> <Empty/> <Empty></Empty> <Homepage>http://Qr.blogger.org.cn</Homepage> </item> <item> <id>a00003</id> <Empty/> <Empty></Empty> <Homepage>http://Qr.blogger.org.cn</Homepage> </item> <item> <id>a00004</id> <Empty/> <Empty></Empty> <Homepage>http://Qr.blogger.org.cn</Homepage> </item></root> 核心提示:要想空元素转换结果有结束标记,<xsl:element>也必须有结束标记,否则,空元素转换结果只有一个空标记!
Posted by Qr on 2007/11/30 10:51:28
回复:XSLT实现XML2XML的转换结果如何保持空元素的起始、结束标记[原创]
2008/1/7 19:28:18
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
谢谢 以下为blog主人的回复:
xingxing(游客)
Posted by xingxing(游客) on 2008/1/7 19:28:18
回复:XSLT实现XML2XML的转换结果如何保持空元素的起始、结束标记[原创]
2008/1/3 20:29:51
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
请教,转换结果是一个文档吗,它存在哪? 以下为blog主人的回复: “转换(transformation)”并不是把XML文件变为另一个文件;而是生成一个新的输出文件。本文的XML转换是以XSL样式来控制和约束的,这种转换当然是直接用XSLT处理器加以处理,转换过程是在内存中进行,转换的结果自然是在内存中。对于本文来说,转换的结果不是文档,而是符合XML语法规范的节点树(之所以这样强调,是因为本文是XML到XML的转换,且XSLT还可将结果转换成其它格式的输出)。如果要把转换结果输出为XML文档,一般要调用 DOM API 。不同的程序语言,DOM API 的方法不尽相同,你可以根据自己的需要查阅相关的帮助文档。
xingxing(游客)
Posted by xingxing(游客) on 2008/1/3 20:29:51
回复:XSLT实现XML2XML的转换结果如何保持空元素的起始、结束标记[原创]
2007/12/11 17:27:10
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
为什么我的空元素还是无法保留结束标记呢? 以下为blog主人的回复: 呵呵,很抽象的问题,没法答复你。
sharkey(游客)
Posted by sharkey(游客) on 2007/12/11 17:27:10
回复:XSLT实现XML2XML的转换结果如何保持空元素的起始、结束标记[原创]
2007/12/1 17:34:11
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
什么文笔啊,也就是糊弄吧,哈哈。 以下为blog主人的回复: 谦虚了
Posted by 烟雨朦胧 on 2007/12/1 17:34:11
回复:XSLT实现XML2XML的转换结果如何保持空元素的起始、结束标记[原创]
2007/11/30 18:05:04
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
键盘上的符号,我简直是盲.可以说是一窍不通. 以下为blog主人的回复: 文笔好就行了
Posted by 烟雨朦胧 on 2007/11/30 18:05:04
发表评论: |