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>也必须有结束标记,否则,空元素转换结果只有一个空标记!

Qr

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

» 1 »

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)
站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.246 second(s), page refreshed 144766812 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号