这应该不是单一的Xpath能完成的事,你可能要用到nodetest和xsl:key。
即使费尽九牛二虎之力写出来,也无必要,如果你只是用于显示的话,何不用XSLT。
如要解决,可循下面两点:
1、default="x"并不是default="x,y"的特例,它得到的不过时候一个length为1的NodeList。
2、使用substring和contains分割x,y,z之类的列表,需要递归。

解决方案 »

  1.   

    那么只能象我现在这么做:
    先取出 projects 的 default 属性值 defaultvalue
    然后再构造一个 xpath 表达式
    /projects/project[@id='defaultvalue']我是想取出projects中default值所指定的project元素(集)另,想问问,xslt和xsl到底有什么区别啊?
      

  2.   

    可使用StringTokenizer解析取出的defaultvalue,生成
    /projects/project[@id='defaultvalue1' or @id='defaultvalue2' or @id='defaultvalue3']
    形式的Xpath。XSLT多了一个transform,它指的是XML+XSL的转换过程;而XSL指的是XSL文件及其定义语言。
      

  3.   

    还是不懂
    xslt 可扩展样式语言转换
    xsl 可扩展样式语言好象没什么分别嘛?这个“转换”的意思有点不明白,xml文档不是都能分别通过达到转换的目的吗?
      

  4.   

    这是用xmlspy生成的初始文档,是有点区别,但是不知它们区别些什么//////xsl
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
    </xsl:stylesheet>////////xslt
    <?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" encoding="UTF-8" indent="yes"/>
    </xsl:stylesheet>
      

  5.   

    上边复制粘贴错了这是用xmlspy生成的初始文档,是有点区别,但是不知它们区别些什么//////xsl
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
    </xsl:stylesheet>////////xslt
    <?xml version="1.0" encoding="UTF-8"?>
    <?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" encoding="UTF-8" indent="yes"/>
    </xsl:stylesheet>
      

  6.   

    多了一个xsl:output,指定了输出为xml。版本1.0,encoding为UTF-8;此时,转换输出的文档为xml,文件头为:
    <?xml version="1.0" encoding="UTF-8"?>而xsl的输出则可为html或普通文本。