以文本方式查看主题

-  W3CHINA.ORG讨论区 - 语义网·描述逻辑·本体·RDF·OWL  (http://bbs.xml.org.cn/index.asp)
--  『 XSL/XSLT/XSL-FO/CSS 』  (http://bbs.xml.org.cn/list.asp?boardid=8)
----  请教一个比较复杂的xsl解析的问题。  (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=77664)


--  作者:sdiablo
--  发布时间:10/5/2009 5:45:00 PM

--  请教一个比较复杂的xsl解析的问题。
中需要使用xsl将一串字符串按格式拆分后拼成链接的格式。

字符串大致如下:
link a name;#link b name;#link c name##linke a adress;#link b adress;#link c adress

需要使用xsl分拆字符串并组合,流程如下:
1 使用##作为分隔符拆分字符串
2 使用;#拆分第一次拆分的结果
3 将link a name与link a adress组成链接。link b, linkc同时做类似处理。

如果使用java来解析应该是很简单的问题。但是我查阅xsl的规范后发现,xsl的相关语法很难处理这种问题。

    * <xsl:variable>只能赋值一次,不能作为一个变量使用。
    * xsl里面也没找到类似list,set,map等集合来使用。
    * <xsl:for-each> 和fn:tokenize(string,pattern)都没有提供for(0,i<n,i++)中的i来控制循环。


请问有处理过类似问题的同学吗?能否提供相关经验?不胜感激!


--  作者:Qr
--  发布时间:10/7/2009 9:34:00 AM

--  
用命名模板进行递归。偶的BLOG上有同样的问题的解决方案。
--  作者:sdiablo
--  发布时间:10/13/2009

--  
以下是引用Qr在2009-10-7 9:34:00的发言:
用命名模板进行递归。偶的BLOG上有同样的问题的解决方案。

谢谢了~


--  作者:hxs8731
--  发布时间:10/26/2009 2:03:00 PM

--  
那如果要取属性值进行递归,又该怎么处理,举个例子,我的xml文件是这样的:
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="+FACTOR.xsl"?>
<factor>
    <check>
        <ruler type="OS" cmp="ge" value="3.0.0">
            <ruler type="OS" cmp="lt" value="4.0.0">
                <ruler type="aS" cmp="lt" value="2.0.0">
                    <ruler type="dS" cmp="lt" value="5.0.0"/>
                </ruler>
            </ruler>   
        </ruler>
    </check>
    <check>
        <ruler type="screen" cmp="ge" value="240x320"/>
    </check>
    <check>
        <ruler type="mobius" cmp="ge" value="3.0.0">
            <ruler type="mobius" cmp="lt" value="4.0.0"/>
        </ruler>
    </check>
    <check>
        <ruler type="memory" cmp="ge" value="750k"/>
    </check>
</factor>
我要分别罗列每一条check下的ruler属性值;
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms