以文本方式查看主题 - 中文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> 第二个文件 问题是:根据第二个文件的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 -- 发布时间:11/27/2008 8:05:00 PM --
不是不耐烦,就是觉得小妹妹不会转弯子,呵呵 |
-- 作者: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 |