以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XSL/XSLT/XSL-FO/CSS 』  (http://bbs.xml.org.cn/list.asp?boardid=8)
----  不会处理,麻烦大家帮忙,很急!!!!!!!----还是有些地方不明白  (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=69907)


--  作者:gu_xiaorou
--  发布时间:11/27/2008 5:52:00 PM

--  不会处理,麻烦大家帮忙,很急!!!!!!!----还是有些地方不明白
第一个文件
<lesson name="Lesson10">
  <見出 no="1">
      aaaa
</見出>
  <見出 no="2">
      bbbb
</見出>
  <見出 no="1">
      ccccc
</見出>
  <見出 no="3">
     ddd
</見出>
  <見出 no="2">
      eee
</見出>
  <見出 no="1">
      fff
</見出>
  <見出 no="4">
      ggg
</見出>
  <見出 no="2">
      hhhh
</見出>
</lesson>

第二个文件
<lesson name="Lesson10">
<unit unit_number="1">Lesson10-1</unit>
<unit unit_number="2">Lesson10-2前半</unit>
<unit unit_number="3">Lesson10-3後半,10-3</unit>
<unit unit_number="4">Lesson10-4,10-5</unit>
</lesson>

问题是:根据第二个文件的unit_number来处理,举个例子说,要先处理unit_number="1"的,也就是相对应第一个文件的no="1"的所有数据,然后再接着处理2,3,4的。。。。这里面unit_number的数量不一定,有可能是现在的4个,也有可能更多或更少,所以不能直接处理四边就完了,请各位帮帮忙,给个思路也好,谢谢哈


[此贴子已经被作者于2008-11-28 13:46:59编辑过]

--  作者:gu_xiaorou
--  发布时间:11/27/2008 6:56:00 PM

--  
追加一个问题哈,如果能读取自己本身的xml的文件名?在线等哈
--  作者:hexun831012
--  发布时间:11/27/2008 6:58:00 PM

--  
简单,首先要懂document()函数,这是双数据源的唯一途径,第二就是模版技巧了
以第二个文件为主文档
<xsl:template match="unit">
  <xsl:apply-templates select="document('第一个文件名')/lesson/見出[@no = current()/@unit_number]"/>
</xsl:template>
<xsl:template match="見出">
  <xsl:value-of select="."/>
</xsl:template>
--  作者:gu_xiaorou
--  发布时间:11/27/2008 7:17:00 PM

--  
不行呀,我必须以第一个文件为主文档
--  作者:hexun831012
--  发布时间:11/27/2008 7:40:00 PM

--  
小妹妹真是。。。
<xsl:template match="lesson">
  <xsl:apply-templates select="document('第二个文件名')/lesson/unit"/>
</xsl:template>
<xsl:template match="unit">
  <xsl:apply-templates select="見出[@no = current()/@unit_number]"/>
</xsl:template>
<xsl:template match="見出">
  <xsl:value-of select="."/>
</xsl:template>
--  作者:Qr
--  发布时间:11/27/2008 8:02:00 PM

--  
以下是引用hexun831012在2008-11-27 19:40:00的发言:
小妹妹真是。。。


大哥哥版主,不要不耐烦嘛,小妹妹必竟是女孩子,人含蓄问题也含蓄。
呵呵


--  作者:hexun831012
--  发布时间:11/27/2008 8:05:00 PM

--  
以下是引用Qr在2008-11-27 20:02:00的发言:
[quote]以下是引用hexun831012在2008-11-27 19:40:00的发言:
小妹妹真是。。。
[/quote]
大哥哥版主,不要不耐烦嘛,小妹妹必竟是女孩子,人含蓄问题也含蓄。
呵呵



不是不耐烦,就是觉得小妹妹不会转弯子,呵呵
--  作者:gu_xiaorou
--  发布时间:11/28/2008 1:45:00 PM

--  
5555555,我还是没有明白
<xsl:template match="lesson">
  <xsl:apply-templates select="document('第二个文件名')/lesson/unit"/>
</xsl:template>
以上这些我都明白了,关键是下面的,怎么突然间就读到第一个文件的見出呢?不用命令吗?我怎么导不到見出呢?
<xsl:template match="unit">
  <xsl:apply-templates select="見出[@no = current()/@unit_number]"/>
</xsl:template>

以上这段由人帮忙解释一下吗?我还是没弄明白。。。。。。


--  作者:hexun831012
--  发布时间:11/28/2008 7:08:00 PM

--  
xsl的逻辑是匹配,不是调用。
--  作者:gu_xiaorou
--  发布时间:11/28/2008 7:14:00 PM

--  
可是,我这安你的方法作,调不出来呢,为什么?
--  作者:hexun831012
--  发布时间:11/28/2008 7:16:00 PM

--  
恩,是我粗心了
<xsl:template match="unit">
   <xsl:apply-templates select="document('')/lesson/見出[@no = current()/@unit_number]"/>
</xsl:template>
替换第二个模版试试看


--  作者:gu_xiaorou
--  发布时间:11/28/2008 7:22:00 PM

--  
<xsl:template match="unit">
  <xsl:apply-templates/>
</xsl:template>
这个命令如果这样做,能调出来unit的东西,但怎么能重新调用到見出的东西呢?他的当前节点不是在unit吗?
--  作者:hexun831012
--  发布时间:11/28/2008 7:24:00 PM

--  
一定要调回当前文档
--  作者:gu_xiaorou
--  发布时间:11/28/2008 7:31:00 PM

--  
嗯,document('')这个命令是调回当前模版的意思吗?我怎么没调回来呢。。。。55555
--  作者:hexun831012
--  发布时间:11/28/2008 7:34:00 PM

--  
对哦,这是调回模版,不知调回文档,那就需要文件名了,为啥非要第一个文件为主文档哪
--  作者:gu_xiaorou
--  发布时间:11/28/2008 7:36:00 PM

--  
document('')的''里必须添上文件名吗?可是我有很多个第一种的文件,这样的话不是每次都要重新添名字吗?可以直接调取到当前的xml的命令吗?
--  作者:gu_xiaorou
--  发布时间:11/28/2008 7:37:00 PM

--  
第一个文件是真真要处理的数据,第二个文件只是一个条件限定的集合,所以必须得以第一个文件开始
--  作者:hexun831012
--  发布时间:11/28/2008 7:44:00 PM

--  
哎,换个思路吧
<xsl:param name="unit" select="document('第二个文件名')/lesson/unit"/>
<xsl:param name="見出" select="/lesson/見出"/>
<xsl:template match="lesson">
  <xsl:apply-templates select="$unit"/>
</xsl:template>
<xsl:template match="unit">
  <xsl:apply-templates select="$見出[@no = current()/@unit_number"/>
</xsl:template>
<xsl:template match="見出">
  <xsl:value-of select="."/>
</xsl:template>


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
4,289.063ms