以文本方式查看主题

-  中文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的批处理  (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=69116)


--  作者:飞花
--  发布时间:11/5/2008 8:58:00 AM

--  xslt怎么完成对xml的批处理
包括把一个文件分成多个小文件,也就是挑挑拣拣的问题。然后就是对多个文件进行上述处理。。。。




--  作者:Qr
--  发布时间:11/5/2008 11:04:00 AM

--  
XSLT2.0可以输出多文档,XSLT1.0比较麻烦.建议找相关帮助文档了参考.
--  作者:飞花
--  发布时间:11/5/2008 4:14:00 PM

--  
我用version2.0,同样的表达式在1.0中就能通过,可2.0会提示Error in XPath 2.0 expression
Too many items,是怎么回事啊?
--  作者:Qr
--  发布时间:11/5/2008 4:23:00 PM

--  
偶比较少用2.0.有些环境下不支持.
--  作者:hexun831012
--  发布时间:11/5/2008 7:46:00 PM

--  
如果是多文档单输出,是可以用document()函数的
--  作者:飞花
--  发布时间:11/6/2008 11:20:00 AM

--  
以下是引用hexun831012在2008-11-5 19:46:00的发言:
如果是多文档单输出,是可以用document()函数的

这个我知道,不过我要做的是单文档多输出。


--  作者:hexun831012
--  发布时间:11/6/2008 3:56:00 PM

--  
以下是引用飞花在2008-11-6 11:20:00的发言:
[quote]以下是引用hexun831012在2008-11-5 19:46:00的发言:
如果是多文档单输出,是可以用document()函数的
[/quote]

这个我知道,不过我要做的是单文档多输出。



小妹妹竟提一些特别的问题,我觉得你应该在稍微高一点的地方解决这些问题,不要把什么DD都放在一个文档里解决,这个不符合软件设计的一些原则。
--  作者:飞花
--  发布时间:11/6/2008 4:33:00 PM

--  
以下是引用hexun831012在2008-11-6 15:56:00的发言:
[quote]以下是引用飞花在2008-11-6 11:20:00的发言:
[quote]以下是引用hexun831012在2008-11-5 19:46:00的发言:
  如果是多文档单输出,是可以用document()函数的
  [/quote]

  这个我知道,不过我要做的是单文档多输出。
[/quote]
小妹妹竟提一些特别的问题,我觉得你应该在稍微高一点的地方解决这些问题,不要把什么DD都放在一个文档里解决,这个不符合软件设计的一些原则。


稍微高一点的地方?指什么?难道用js,或者c#写个应用程序?
实在不成我打算用c#写个可执行文件。不过,我对c#不太熟悉。

不过我觉得单文档多输出应该可以实现,外部调用一个参数列表。
现在又遇到问题了。。。。。。


--  作者:飞花
--  发布时间:11/6/2008 4:57:00 PM

--  
我写了个测试用的参数列表list.xml:
<?xml version="1.0" encoding="UTF-8"?>
<list>
 <eq name="GW"/>
 <eq name="ASG1"/>
 <eq name="ASG2"/>
 <eq name="BSG11"/>
 <eq name="BSG12"/> 
</list>

我的xslt文件:div.xsl:


<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="xml" version="1.0" encoding="ISO-8859-1"/>
 <xsl:param name="which" select="'TUR1'"/>
 <xsl:template match="variables">
  <xsl:variable name="filename" select="concat(此处为节点目录/@name,'_',$which,'.xml')"/>
  <xsl:result-document href="{$filename}">
  结构省略
  <xsl:for-each select="此处为节点目录">
           <xsl:if test="contains(documentation/text(),$which)">
  .............     
                                                               </xsl:if>
                       </xsl:for-each>
  ...........     </xsl:result-document>
 </xsl:template>

 <xsl:template match="/">
  <xsl:apply-templates/>
  
 </xsl:template>
</xsl:stylesheet>

功能:如果documentation中包含which参数,则做相应的处理。遍历这个文档。(上述文件是直接定义which=TUR1。输出文件名为:*_which。xml

问题是:我想用lis.xml中的数据做为参数。然后以list中的<eq>做for-each,来输出多个文档。

<xsl:for-each select="document('list.xml')/list/eq">
<xsl:variable name="i" select="position()"/>
<xsl: variable name="which" select="eq[$i]/@name"/>
<xsl:variable name="filename" select="concat(此处为节点目录/@name,'_',$which,'.xml')"/>
  <xsl:result-document href="{$filename}">
...........
    </xsl:result-document>
</xsl:for-each>

可在for-each里面,节点目录变成了list.xml的目录了。。。。。。。。。有什么解决办法?


--  作者:飞花
--  发布时间:11/11/2008 2:51:00 PM

--  
我的C#批处理程序,写完了。
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
76.172ms