怎么将一个多内容的节点分割到多个小节点中去?

FinalBoy 2003-10-20 08:13:42
<?xml version="1.0" encoding="GB2312"?>
<DataPackage>
<Order>1</Order>
<Equipment>Battery</Equipment>
<Data>abcdef112233112233112233112233112233112233112233112233112233112233</Data>
</DataPackage>

要求将Data节点中66个字节分别放入新生成的data2.xml的多个<div></div>中,分11组。用xsl转换实现。
...全文
33 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
孟子E章 2003-10-20
  • 打赏
  • 举报
回复
test.xml
================
<?xml version="1.0" encoding="GB2312"?>
<?xml-stylesheet type="text/xsl" href="d:\test.xsl"?>
<DataPackage>
<Order>1</Order>
<Equipment>Battery</Equipment>
<Data>abcdef112233112233112233112233112233112233112233112233112233112233</Data>
</DataPackage>

test.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"/>
<xsl:template match="/">
<xsl:variable name="varEnd" select="66"/>
<xsl:variable name="varStart" select="1"/>
<data>
<xsl:call-template name="MyLoopFun">
<xsl:with-param name="varStart" select="$varStart">
</xsl:with-param>
</xsl:call-template>
</data>
</xsl:template>
<xsl:template name="MyLoopFun">
<xsl:param name="varStart"/>
<xsl:if test="$varStart < string-length(//Data)">
<!-- 输出格式定义 -->
<div>
<xsl:value-of select="substring(//Data,$varStart,3)"/>
</div>
<xsl:call-template name="MyLoopFun">
<xsl:with-param name="varStart">
<xsl:value-of select="$varStart + 3"/>
</xsl:with-param>
</xsl:call-template>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
FinalBoy 2003-10-20
  • 打赏
  • 举报
回复
那我求孟子老大把xml直接转换的代码也放出来吧!谢谢,分数一定给的
孟子E章 2003-10-20
  • 打赏
  • 举报
回复
下面的代码实现了你要求的功能。为了看效果,用js进行了输出

test.htm
==============
<script>
x=new ActiveXObject("Microsoft.XMLDOM")
x.loadXML('<?xml version="1.0" encoding="GB2312"?><DataPackage><Order>1</Order><Equipment>Battery</Equipment><Data>abcdef112233112233112233112233112233112233112233112233112233112233</Data></DataPackage>')
alert(x.xml)
xsl = new ActiveXObject("Microsoft.XMLDOM")
xsl.async=false
xsl.load("d:\\test.xsl")
alert(xsl.xml)
alert(x.transformNode(xsl))
</script>

test.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"/>
<xsl:template match="/">
<xsl:variable name="varEnd" select="66"/>
<xsl:variable name="varStart" select="1"/>
<data>
<xsl:call-template name="MyLoopFun">
<xsl:with-param name="varStart" select="$varStart">
</xsl:with-param>
</xsl:call-template>
</data>
</xsl:template>
<xsl:template name="MyLoopFun">
<xsl:param name="varStart"/>
<xsl:if test="$varStart < string-length(//Data)">
<!-- 输出格式定义 -->
<div>
<xsl:value-of select="substring(//Data,$varStart,3)"/>
</div>
<xsl:call-template name="MyLoopFun">
<xsl:with-param name="varStart">
<xsl:value-of select="$varStart + 3"/>
</xsl:with-param>
</xsl:call-template>
</xsl:if>
</xsl:template>
</xsl:stylesheet>

其实也可以在xml直接转换,这样看到讲是3位字母

<?xml version="1.0" encoding="GB2312"?>
<?xml-stylesheet type="text/xsl" href="d:\test.xsl"?>
<DataPackage>
<Order>1</Order>
<Equipment>Battery</Equipment>
<Data>abcdef112233112233112233112233112233112233112233112233112233112233</Data>
</DataPackage>

8,906

社区成员

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

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