在xquery中没有得到正确的输出

时间:2014-02-08 05:23:45

标签: xml xquery

我正在使用2个xml文件 - “Department.xml”和“Employee.xml”。

Department.xml

    <DeptList xsi:noNamespaceSchemaLocation="officeSchema.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Department>
    <deptName>mech</deptName>
    <deptNo>module1</deptNo>
    <deptManagerSSN>31001</deptManagerSSN>
    <deptManagerStartDate>2013-01-26</deptManagerStartDate>
    <deptLocation>near xyz road</deptLocation>
</Department>
<Department>
    <deptName>it</deptName>
    <deptNo>module2</deptNo>
    <deptManagerSSN>32001</deptManagerSSN>
    <deptManagerStartDate>2013-04-15</deptManagerStartDate>
    <deptLocation>near wt road</deptLocation>
</Department>
    </DeptList>

Employee.xml

    <EmpList xsi:noNamespaceSchemaLocation="officeSchema.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Employee>
    <empName>Ramesh</empName>
    <empSSN>31001</empSSN>
    <empSex>Male</empSex>
    <empSalary>57000</empSalary>
    <empBirthDate>1988-03-12</empBirthDate>
    <empDeptNo>module1</empDeptNo>
    <empSupervisorSSN>31001</empSupervisorSSN>
    <empAddress>3-f, x.y.z colony</empAddress>
    <empWorksOn>proj01</empWorksOn>
</Employee>
<Employee>
    <empName>Raj</empName>
    <empSSN>31002</empSSN>
    <empSex>Male    </empSex>
    <empSalary>40000</empSalary>
    <empBirthDate>1989-03-30</empBirthDate>
    <empDeptNo>Module1</empDeptNo>
    <empSupervisorSSN>31001</empSupervisorSSN>
    <empAddress>6-A, w.t.c. colony
    </empAddress>
    <empWorksOn>proj01</empWorksOn>
</Employee>
   </EmpList>

我想要的是,如果“deptManagerSSN”等于“empSSN”,则打印“empName”,否则打印“deptName”。为此我写了以下查询:

    for     $x in doc("C:/Users/Abhay/labWork/Department.xml")/DeptList/Department, 
            $y in doc("C:/Users/Abhay/labWork/Department.xml")/EmpList/Employee 
    return if(data($x/deptManagerSSN)=data($y/empSSN))
    then <text1>{data($y/emptName)}</text1> 
    else <text1>{data($x/deptName)}</text1>

但我没有得到任何输出。我也没有收到任何错误。请告诉我在查询中出错的地方。 我使用“xml editix”作为xml引擎。 对不起,如果我的问题很愚蠢,我是xml新手。

1 个答案:

答案 0 :(得分:0)

似乎你的逻辑非常正确。也许替换

doc("C:/Users/

doc("/C:/Users/

会解决你的问题吗?