XPath、XSL练习笔记

Xpath部分:

1.选择部门30中的所有员工.

/company/dept[@deptno='D30']/emp

// 最前面的‘ / ’有没有都一样

2.列出所有办事员(CLERK)的所有员工.

company/dept/emp[@job='CLERK']

3.找出部门10中所有经理(MANAGER)和部门20中所有办事员(CLERK)的详细资料.

company/dept[@deptno='D10']/emp[@job='MANAGER'] | company/dept[@deptno='D20']/emp[@job='CLERK']

// ' | ' 的使用

4.找出部门10中所有经理(MANAGER),部门20中所有办事员(CLERK),既不是经理又不是办事员但其薪金大于或等于2000的所有员工的详细资料.

company/dept[@deptno='D10']/emp[@job='MANAGER'] | company/dept[@deptno='D20']/emp[@job='CLERK'] | //emp[sal>=2000 and @job!='MANAGER' and @job!='CLERK']

// and 的使用

5.找出不收取佣金或收取的佣金低于500的员工.

//emp[sal<500 or not(sal)]
// or 的使用  not 的使用  <的使用

6.列出所有部门的信息

company/dept

7.列出所有人员的信息

//emp

// ' // ' 的使用

8.按工资段[<1000] [1000-3000] [3000-5000]显示人员工资

//emp[sal&lt;1000]
//emp[sal>=1000 and sal&lt;3000]
//emp[sal>=3000 and sal&lt;=5000]
// &lt;的使用 与'>'的使用

XSL部分

第8题的xsl文件

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <html>
            <body>
                <h4>8.按工资段[&lt;1000] [1000-3000] [3000-5000]显示人员工资</h4>
                小于1000<br/>
                <ul>
                    <xsl:for-each select="//emp[sal&lt;1000]">
                        <li>
                            ename:
                            <xsl:value-of select="ename" />
                            sal:
                            <xsl:value-of select="sal" />
                        </li>
                    </xsl:for-each>
                </ul>
                1000-3000<br/>
                <ul>
                    <xsl:for-each select="//emp[sal>=1000 and sal&lt;3000]">
                        <li>
                            ename:
                            <xsl:value-of select="ename" />
                            sal:
                            <xsl:value-of select="sal" />
                        </li>
                    </xsl:for-each>
                </ul>
                3000-5000<br/>
                <ul>
                    <xsl:for-each select="//emp[sal>=3000 and sal&lt;=5000]">
                        <li>
                            ename:
                            <xsl:value-of select="ename" />
                            sal:
                            <xsl:value-of select="sal" />
                        </li>
                    </xsl:for-each>
                </ul>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>
要注意的是在HTML里<br>是可以的,但在xml里是不行的,xml语法比较严格,所以必须是<br/>
xml文件和xsl文件的encoding要一样
<xsl:stylesheet>的内容:xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 还有版本号 version="1.0"
<xsl:stylesheet> 和 <xsl:transform> 是完全同义的
上一篇:线程通信应用---经典例题:生产者/消费者问题:


下一篇:Java实现生产者消费者问题